2009-12-07 101 views
0

通常我在工作我的方式轮AS3不错,但这个真的是让我头疼Flash CS4中,动态文本字段

我有下面这段代码,一切工作正常,我可以跟踪输出,但仍是文字没有在舞台上显示任何线索?

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); 

} 

}

+1

这可能只是我的偏好,但建议函数名称和变量名称以小写字母开头。在您或其他人正在调试您的代码时,这种一致性将有助于未来的发展。 – Sandro 2009-12-07 16:43:53

+0

点击Sandro答案附近的绿色复选标记,以便该问题在列表中得到解答(并且sandro获得了他应得的声望点) – Amarghosh 2009-12-07 17:01:01

回答

0

。使用本

labels.defaultTextFormat=newFormat; 

代替

labels.setTextFormat(newFormat); 

这将解决嵌入字体的问题也是如此。谢谢大家的帮助,虽然

+0

在我清理了我的库后,我开始有嵌入字体的问题。 defaultTextFormat虽然没有帮助。 – 2010-09-16 19:30:14

1

要放置在彼此的顶部文本框。

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

labels.x=xpos+spacer; //always 320 
labels.y=ypos;  //always 100 
+0

我仍然应该能够看到对方的文字吗? – hitek 2009-12-07 16:38:19

+0

如何设置'labels.text =“一些硬编码的值”;' - 它的工作? – Amarghosh 2009-12-07 16:50:55

1

我首先看到的是你在哪里创建TextField行应该是:

var labels:TextField=new TextField(); 

另外,尽量不使用调用setTextFormat()这样做是为了检查问题是否嵌入字体或者是其他东西。

+0

尽管它看起来不太好,但如果没有参数调用这样的构造函数也没关系 – Amarghosh 2009-12-07 16:42:55

+0

注释掉格式是值得一试的我相信 – Amarghosh 2009-12-07 16:43:26

+0

我做了,到目前为止没有改变 – hitek 2009-12-07 16:44:52

0

确保您嵌入字体,并且它正在追踪出文本字段说什么。

0

我有同样的问题。 按照AS3 TextField的文档:

如果为文本字段的embedFonts属性设置为 true,则必须 使用 应用到一个TextFormat 对象的font属性来指定该文本的字体文本字段。 如果 指定的字体没有嵌入 的SWF文件中,则文本不是 显示。

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

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

我猜你现在已经想通了。我希望这将是为别人有用=)

编辑:

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

labels.setTextFormat(newFormat); 

而不是

labels.defaultTextFormat = newFormat; 

最后一个没有按” t似乎为我工作。