【问题标题】:flash cs4 , dynamic text fieldflash cs4,动态文本字段
【发布时间】:2009-12-07 16:25:54
【问题描述】:

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

}

}

【问题讨论】:

  • 这可能只是我的偏好,但建议函数名和变量名以小写字母开头。当您或其他人在调试您的代码时,这种一致性将有所帮助。
  • 点击 Sandro 的答案附近的绿色复选标记,这样这个问题就会出现在列表中(并且 Sandro 获得了他应得的声誉积分)

标签: flash actionscript-3 textfield


【解决方案1】:

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

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

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

【讨论】:

  • 我仍然应该能够看到彼此重叠的文字吧?
  • 如何设置labels.text = "some hard coded value"; - 有效吗?
【解决方案2】:

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

var labels:TextField=new TextField();

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

【讨论】:

  • 虽然看起来不太好看,但是如果不涉及参数的话,这样调用构造函数也是可以的
  • 我做了,到目前为止没有任何改变
  • 您的跟踪工作正常吗?尝试将 XML 并排跟踪到 TextField.text
  • 跟踪工作正常,我可以在那里看到结果,但没有显示
  • 知道了!!.. 它是嵌入字体,我刚刚评论了这一点
【解决方案3】:

使用这个

labels.defaultTextFormat=newFormat;

而不是

labels.setTextFormat(newFormat);

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

【讨论】:

  • 在我清理完我的库后,我开始遇到与嵌入字体相同的问题。虽然 defaultTextFormat 没有帮助。
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    我遇到了同样的问题。 根据 as3 TextField 文档:

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

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

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

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

    编辑:

    在这种情况下你应该使用

    labels.setTextFormat(newFormat);
    

    代替

    labels.defaultTextFormat = newFormat;
    

    最后一个似乎不适合我。

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 2011-05-11
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 2010-11-06
      • 2015-04-29
      • 1970-01-01
      相关资源
      最近更新 更多