通常我非常擅长绕着as3工作,但这个真的让我头疼
我在下面有这个代码,一切正常,我可以跟踪输出但是文本没有在舞台上显示任何线索?
import flash.display.Sprite;
import flash.text.TextField;
import flash.display.MovieClip;
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
var total:XMLList;
var totalPram:XMLList;
var totalImgs:XMLList;
var totalX:XMLList;
var totalY:XMLList;
var totalInfo:XMLList;
var pram:XML;
var img:XML;
var playHead:Number=0;
var spacer:Number=20;
var xpos:Number=300;
var ypos:Number=100;
/////////////////////////////// formating ///////////////////////////////////
var newFormat:TextFormat = new TextFormat();// Text formating
newFormat.size=30;
newFormat.bold;
newFormat.font="Arial";
newFormat.color="0xCBFF00";
//newFormat.leading=-7;
////////////////////////////////////////////////////////////////////////////
xmlLoader.load(new URLRequest("info_1.xml"));
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
//var tagHolder:MovieClip = new MovieClip();
function LoadXML(e:Event):void {
xmlData=new XML(e.target.data);
xmlData.ignoreWhite=true;
Parseinfo(xmlData);
}
function Parseinfo(Details:XML):void {
total=Details.blink;
totalPram=Details.blink.tag;
totalInfo=Details.blink.more;
totalImgs=Details.blink.img;
totalY=Details.totalY.ypos;
totalX=Details.totalX.xpos;
for (var i=0; i<=1; i++) {
//addChild(tagHolder);
pram=totalPram[i];
var labels:TextField=new TextField ;// txtfield for questions to be displayed
labels.setTextFormat(newFormat);
//mytxt2.autoSize=TextFieldAutoSize.LEFT;
labels.embedFonts=true;
labels.text=pram;
labels.x=xpos+spacer;
labels.y=ypos;
trace(labels.text);
addChild(labels);
}
}
答案 0 :(得分:1)
您将文本字段放在彼此的顶部。
var spacer:Number=20;
var xpos:Number=300;
var ypos:Number=100;
labels.x=xpos+spacer; //always 320
labels.y=ypos; //always 100
答案 1 :(得分:1)
我看到的第一件事就是你应该创建TextField的那一行:
var labels:TextField=new TextField();
另外,尝试不使用setTextFormat()来检查问题是嵌入字体还是其他内容。
答案 2 :(得分:0)
使用此
labels.defaultTextFormat=newFormat;
而不是
labels.setTextFormat(newFormat);
这也将解决嵌入字体的问题。感谢大家的帮助,但
答案 3 :(得分:0)
确保嵌入字体,并且它正在追踪文本字段的内容。
答案 4 :(得分:0)
我遇到了同样的问题。 根据as3 TextField文档:
如果将embedFonts属性设置为 对于文本字段,您必须这样做 使用指定该文本的字体 TextFormat的字体属性 对象应用于文本字段。 如果 指定的字体未嵌入 SWF文件,文本不是 显示。强>
换句话说,当您以编程方式添加一个字体时,您需要在舞台上添加一些带有嵌入字体的动态文本字段,或者,您可以使用“导出”选项创建自己的字体元件并将其添加到TextField:< / p>
var myFont:Font = new MyFont();
...
newFormat.font = myFont.fontName;
我猜你现在已经弄明白了。我希望它对其他人有帮助=)
修改强>
在这种情况下,您应该使用
labels.setTextFormat(newFormat);
而不是
labels.defaultTextFormat = newFormat;
最后一个似乎不适合我。