0

通常我很擅长在 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);

}

}

4

5 回答 5

1

您将文本字段置于彼此之上。

var spacer:Number=20;
var xpos:Number=300;
var ypos:Number=100;

labels.x=xpos+spacer; //always 320
labels.y=ypos;        //always 100
于 2009-12-07T16:33:10.730 回答
1

我看到的第一件事是在您创建 TextField 的那一行,它应该是:

var labels:TextField=new TextField();

此外,请尝试在不使用 setTextFormat() 的情况下执行此操作,以检查问题是嵌入字体还是其他问题。

于 2009-12-07T16:38:10.327 回答
0

用这个

labels.defaultTextFormat=newFormat;

代替

labels.setTextFormat(newFormat);

这也将解决嵌入字体的问题。谢谢大家的帮助

于 2009-12-07T16:57:26.723 回答
0

我有同样的问题。根据 as3 TextField 文档:

如果将文本字段的 embedFonts 属性设置为 true,则必须使用应用于文本字段的 TextFormat 对象的字体属性为该文本指定字体。如果指定的字体未嵌入 SWF 文件中,则不显示文本。

换句话说,当您以编程方式添加一个时,您需要在舞台上有一些嵌入字体的动态文本字段,或者,您可以使用导出选项创建自己的字体符号到库并将其添加到您的 TextField:

var myFont:Font = new MyFont();
...
newFormat.font = myFont.fontName;

我想你现在已经想通了。我希望它对其他人有帮助=)

编辑:

在这种情况下,您应该使用

labels.setTextFormat(newFormat);

代替

labels.defaultTextFormat = newFormat;

最后一个似乎对我不起作用。

于 2010-09-16T19:53:11.483 回答
0

确保您嵌入了字体并且它正在追踪文本字段的内容。

于 2010-08-01T05:25:11.340 回答