Text wird bei bestimmmten Fonts nicht angezeigt

Denniz

Erfahrenes Mitglied
Hi Leute,

ich lese einen Text aus einer xml aus und will diesen nun in ein Textfeld angezeigt bekommen.
Das Textfeld wird dynamisch erzeugt und es werden ein paar Formatierungen vorgenommen.

Das alles funktioniert solange ich mein Schriftsymbol in der Bibliothek mit Times new roman verbinde. Sobald ich das Fontsymbol eine andere Schriftart zuweise (Arial) funktionert es nicht mehr! Der Text wird dann im Textfeld nicht mehr angezeigt, warum?

AS:
Code:
stop();
import com.xfactorstudio.xml.xpath.*;
var _tRoot:MovieClip = this;
var _tContentContainer = _tRoot.createEmptyMovieClip("contentContainer", _tRoot.getNextHighestDepth());
_tContentContainer._x = 26;
_tContentContainer._y = 134;
var images_arr:Array = new Array();
var imagesWidth_arr:Array = new Array();
var imagesHeight_arr:Array = new Array();
var contentText_arr:Array = new Array();
//Die XML wird korekt ausgelsen
function readXML() {
	var oXML:XML = new XML();
	oXML.ignoreWhite = true;
	oXML.load("content.xml");
	oXML.onLoad = function(ok) {
		if (ok) {
			contentText_arr = XPath.selectNodesAsString(this.firstChild, "//text/text()");
			trace(contentText_arr[0]);
			goMakeTextField();
		}
		else {
			trace("ERROR LOADING XML");
		}
	};
}
//TExtfeld wird erzeugt, der Text wird aber nicht gesetzt
function goMakeTextField() {
	var my_fmt:TextFormat = new TextFormat();
	my_fmt.font = "font1";
	my_fmt.size = 18;
	my_fmt.color = 0x000000;
	var myTf:TextField = _tContentContainer.createTextField("tf", 100, 0, 0, 500, 100);
	myTf.embedFonts = true;
	myTf.autoSize = true;
	myTf.wordWrap = true;
	myTf.multiline = true;
	myTf.border = true;
	myTf.selectable = false;
	myTf.html = true;
	myTf.setTextFormat(my_fmt);
	var oCSS = new TextField.StyleSheet();
	oCSS.onLoad = function(ok) {
		if (ok) {
			myTf.styleSheet = oCSS;
			myTf.htmlText = contentText_arr[0];   //<-- Warum wird mir mein Text nicht angezeigt? Wenn ich font1 mit Times new Roman vebinde dann geht es, ansonsten nicht , warum
		}
		else {
			trace("ERROR LOADING CSS");
		}
	};
	oCSS.load("content.css");
}
readXML();

Die datei.
Gruß
 
Warum weisst du dem Textfield eine TextFormat und Stylesheet zu?
Beides zu verwenden macht keinen Sinn.
 
... bist Du sicher, dass Dein Fontobjekt in der Bibliothek auch unter dem im TextFormat-Objekt angegebenen Bezeichner zum Export für AS freigegeben ist?

Ansonsten: Ich habe in neueren Flashversionen (8, 9) die Erfahrung gemacht, dass einige Fonts bei einigen Einstellungen (z.B. automatische Unterschneidung und Fettdruck aktiviert) nicht eingebettet werden. Eine Erklärung habe ich bisher nicht, aber es wäre ggf. ein Ansatz für die Fehlersuche.

Gruß
.
 
..ja, der bezeichner ist korrekt. Ich habe jetzt mehrere Schriftarten ausprobiert (ca.20) und bei keinem wird der Text angezeigt außer bei Times new roman.
Ich habe die Datei hochgeladen, vielleicht kann ja mal jemand auf seinem System testen ob der text angezeigt wird wenn man eine andere Schriftart, außer times new roman, dem fontsymbol zuweist.
 
weil du mit beiden Methoden die gleichen Formatierungen hinkriegst. Wenn du beide dem Textfeld zuweist führt das nur zu einem Chaos.

...,sagen wir mal du liest ein text über 'ne xml ein und das erste wort im textfeld soll "italic" sein und das zweite wort soll "bold" sein. Das dritte word soll grün sein und das vierte soll 50px vom linken rand entfernt sein. Wie machst du das ohne ein stylesheet?
 
Zuletzt bearbeitet:
...,sagen wir mal du liest ein text über 'ne xml ein und das erste wort im textfeld soll "italic" sein und das zweite wort soll "bold" sein. Wie machst du das ohne ein stylesheet?

ich hab nicht gesagt ohne Stylesheet. Du sollst ein Textfield entweder mit einem Stylesheet ODER mit einem TextFormat formatieren. Aber nicht ein TextFormat UND Stylesheet.
 
Hi,

Dein Fehler liegt hier:
Code:
myTf.setTextFormat(my_fmt);

verwende statt dessen:
Code:
myTf.setNewTextFormat(my_fmt);

Grund: Mit setTextFormat änderst Du nur die Formatierung des bisherigen Textes in einem Textfeld. Du weist diese Inhalte aber erst nach der Formatierung zu und brauchst daher setNewTextFormat.

@Stylesheet vs. TextFormat: Beides sind zwei Seiten der selben Medaille - auch wenn die Verwendung beider Techniken möglicherweise zu etwas mehr Unübersichtlichkeit führt, mag es Situationen geben, in denen sie gerechtfertigt ist. Vielleicht möchte man ein globales Stylesheet verwenden, aber einzelne Textfelder leicht abgewandelt darstellen, ohne ein neues Sheet anzulegen oder neue Selektoren einzuführen. Natürlich mag ein externes Stylesheet als ausschließliche Formatierungsquelle die elegantere Lösung sein, aber wers mag sollte Formate auch hartcodieren dürfen. ;)

Gruß
.
 
Zurück