| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jan 2007
Beiträge: 59
|
Hi Folks, ich habe folgendes Anliegen: Ich habe eine Flash App erstellt, die über eine XML-Schnittstelle Text erhält. Dieser Text ist mit einer einfachen HTML Formatierung gestylt. Nehmen wir als Beispiel: HTML-Code: Ich bin ein <b>fetter Text</b>. Also erstelle ich ein neues Schriftart-Symbol in der Bibliothek und hake 'Export für ActionScript' an. Wir nehmen als Bsp. Schriftart 'Helvetica Neue' - Stil '77 Bold Condensed'. Als Export Name gebe ich 'HelveticaNeueBold' ein. Soviel zur Ausgangslage - hier das Problem: Bei einer Zuweisung als TextFormat wird der gesamte Text bold angezeigt, er verliert also die Formatierung. Bei einer Zuweisung mit Stylesheet wird die Formatierung erhalten, jedoch nicht der richtige (embedded) Font angezeigt, sondern eine Systemstandartschrift. Hat jemand eine Idee, wie ich dieses Problem elegant lösen kann? ![]() Hier nochmal beispielhaft der Code: HTML-Code: var helvetica:Font = new HelveticaNeueBold(); var textFromXML:String = 'Ich bin ein <b>fetter Text</b>.'; //Option A : TextFormat var descFormat:TextFormat = new TextFormat(); descFormat.font = helvetica.fontName; descFormat.size = 16; descFormat.align = 'left'; descFormat.color = 0xffffff; var desc:TextField = new TextField(); desc.htmlText = textFromXML; desc.embedFonts = true; desc.setTextFormat(descFormat); //Option B : StyleSheet var body:Object = new Object(); body.fontFamily = helvetica.fontName; body.fontSize = 16; body.textAlign = 'left'; body.color = '#ffffff'; var style:StyleSheet = new StyleSheet(); style.setStyle("body", body); var desc2:TextField = new TextField(); desc2.styleSheet = style; desc2.htmlText = '<body>'+textFromXML+'</body>'; |
| | |
| | #4 (permalink) |
| lebt in stereo Registriert seit: Mar 2008 Ort: karlsruhe
Beiträge: 1.093
|
schau dir mal F*CSS|Flash's Missing CSS Parser an. jesse hat da was echt schönes gezaubert, was bei solchen sachen super anwendbar ist.
__________________ * Flash-Junkie ≠ Musiker & Grafiker # Marvin Blase # Speaker, Author, Silly Billy. # @beautifycode |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Jan 2007
Beiträge: 59
| F*CSS ist toll, hilft mir aber leider nicht weiter.
Ich habe mir F*CSS nun mal ausgiebig angesehen. Das ist echt eine mächtige Komponente, danke für den Link. Doch in meinem Fall hilft mir diese leider nicht weiter. F*CSS parst zwar CSS in AS3 Anweisungen, doch genau das Problem, dass ich habe, wird auch hier nicht abgedeckt ![]() Hat jemand noch eine andere Idee? (Alternative) ... wäre eigentlich nur, sich einen eigenen Parser zu bauen: Step 1: Die Positionen aller HTML Tags ermitteln und in Arrays speichern Step 2: setTextFormat über anfangIndex und endeIndex auf diese Bereich anwenden ... so müsste das doch wohl zu lösen sein ... Aber noch hoffe ich ja auf den entscheidenden Tipp von euch Dieses Problem kann doch nicht nur ich haben ... ?
|
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Mar 2009
Beiträge: 77
|
Das würde mich auch mal interessieren. ich habe nach zahlreichen Suchen immerhin eine Idee in welche Richtung das gehen könnte, aber noch nix gefunden das so auch tatsächlich funktioniert. Irgendwie soll man eben auch TextFormate für einzelne Schriftschnitte erstellen können und diese dann statt des <b> tags zusammen mit dem <font> tag verwenden. Also wenn jemand hier den Durchblick hat, wie man mit embedded Fonts sowas bewerkstelligen kann... |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Jan 2007
Beiträge: 59
|
Ich habe mir jetzt selbst eine Funktion geschrieben, um das Problem zu lösen. Diese erwartet ein TextField, ein Tag und ein Textformat. Alle Bereiche innerhalb der angegebenen Tags werden automatisch mit dem TextFormat gestylt. Hier der Code, vielleicht hilft es ja dem ein oder anderen mit dem gleichen Problem: (Code ist gekürzt um ihn hier zu posten, hoffentlich ohne Fehler :-) HTML-Code: //Instanzen der eingebetteten Schriften erzeugen var helvetica:Font = new HelveticaNeueCond(); var helveticaBold:Font = new HelveticaNeueBold(); //TextFormate definieren var textFormatNormal:TextFormat = new TextFormat(); textFormatNormal.font = helvetica.fontName; textFormatNormal.size = 20; textFormatNormal.align = 'left'; textFormatNormal.color = 0x000000; var textFormatBold:TextFormat = new TextFormat(); textFormatBold.font = helveticaBold.fontName; textFormatBold.size = 20; textFormatBold.bold = true; textFormatBold.align = 'left'; textFormatBold.color = 0x000000; //TextField erzeugen var tf:TextField = new TextField(); tf.width = 400; tf.multiline = true; tf.wordWrap = true; tf.autoSize = 'left'; tf.htmlText = 'Ich bin ein <b>fetter</b> Text und hier kommt das <b>dicke</b> Ende'; tf.embedFonts = true; tf.setTextFormat(textFormatNormal); tf = setTextFormatForHtml(tf,'b',textFormatBold); //Funktion zum setzen der Textformate je HTML Tag function setTextFormatForHtml(tf:TextField,tag:String,tfo:TextFormat):TextField{ var htmlText:String = tf.htmlText; var normalText:String = tf.text; var searchIndex:int = 0; var startIndex:int; var endIndex:int; var transStartIndex:int = 0; var transEndIndex:int = 0; var searchString:String; tag = tag.toUpperCase(); while(startIndex!=-1){ startIndex = htmlText.indexOf('<'+tag+'>',searchIndex); if(startIndex>-1){ startIndex+=tag.length+2; searchIndex = startIndex+1; endIndex = htmlText.indexOf('</'+tag+'>',searchIndex); searchString = htmlText.substring(startIndex,endIndex); transStartIndex = normalText.indexOf(searchString,transStartIndex); transEndIndex = transStartIndex + searchString.length; tf.setTextFormat(tfo,transStartIndex,transEndIndex); } else{ trace(' ----> Keine weiteren Treffer.'); } }; return tf; } |
| | |
| | #9 (permalink) |
| Gimbel Deluchs Registriert seit: Apr 2004 Ort: Wieder da!
Beiträge: 153
| fetten und nicht fetten Text mischen
Wenn du per HTML fetten und nicht fetten Text mischst, kann dieser nur dann eine eingebettete (nicht System) Schrift verwenden, wenn diese sowohl Schnitte für fett, als auch für nicht fett enthält. Das erreicht man z.B. per Embed-Tag in Projekten die mit dem Flex-Compiler kompiliert werden. PHP-Code: Frederik |
| | |
| | #10 (permalink) | |
| Neuer User Registriert seit: Mar 2009
Beiträge: 77
| Zitat:
![]() Mir war gar nicht klar, dass Flash sich da quasi automatisch die Klasse mit dem richtigen Schriftschnitt holt ohne dass man da irgendwas zuweisen muss... Vielen Dank - ein ewiges Rätsel wurde soeben gelöst | |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 1
|
danke Mr.Dauerfetter! endlich habe ich für dieses problem eine lösung gefunden! DANKE! funktioniert übrigens auch wenn man ein "font.swf" verwendet: PHP-Code: Wobei Ihr auch anstatt der ersten Zeile das "normale" anlegen eines TextFormates und eines Textfields vorstellen könnt. PHP-Code: Geändert von andybrandy (28-05-2010 um 11:20 Uhr) |
| | |
| | #14 (permalink) | |
| Neuer User Registriert seit: Jan 2007
Beiträge: 59
|
Also wenn ich versuche die Schnitte in beschriebener Art und Weise einzubinden, dann antwortet mir die Flash IDE: Zitat:
| |
| | |
| | #15 (permalink) |
| Neuer User Registriert seit: Oct 2004 Ort: Berlin
Beiträge: 478
|
Ja, geht auch in Flash CS5 ohne Flex-SDK und ohne [Embed-Tag] (Das ist das eigentliche Problem auf Zeitleisten). Hat mich ne gute Stunde gekostet, um das selbst rauszufinden, steht dann aber auch in meinem neuen Buch: Für jeden Schriftschnitt machst du über das Fenster Schrifteinbettung eine Verknüpfung zu einer eigene Klasse. Dann wählst Du für das Textfeld den Bezeichner für den normalen Schnitt aus. Irgendwie (frag mich nicht wie) kann Flash dann den Zusammenhang herstellen und weiß dann das es bspw. für fetten Text die Klasse für den fetten Schriftschnitt nehmen soll. (Das gibt man ja nicht explizit an). .oO Ich bin nur auf den Thread gekommen, weil mir das gerade aufgestoßen war und ich nach diesem Problem gesucht hatte.
__________________ Adobe Flash CS5: Das Handbuch Webdesign und Webentwicklung: medianetic Gesendet von meinem Windows-PC. Blog-relaunch: http://www.blog.medianetic.de Geändert von medianetic (08-07-2010 um 17:37 Uhr) |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| embedding, fonts, stylesheet, textformat |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Font embedding aus externer swf | Hans meisa | ActionScript 3 | 1 | 27-11-2009 16:08 |
| font embedding - polnische sonderzeichen | elbjoern | Flash CS3 Professional | 1 | 25-03-2009 18:25 |
| embedding assets in flash CS3 ... | pranko | ActionScript 3 | 1 | 14-06-2008 15:56 |
| stylesheet und embedded fonts | bluelemonade | Flash MX 2004 | 2 | 07-04-2006 12:01 |
| Problem mit Schrift-Embedding .. | Pixelex | Flash MX 2004 | 3 | 31-08-2004 18:19 |