flash cs4,动态文本字段

发布于 2024-08-13 17:25:26 字数 1702 浏览 5 评论 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);

}

}

Usually i am pretty good at working my way round as3 but this one is really giving me a headache

I have this code below and everything works fine i can trace the output but still the text is not showing up on stage any clues??

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

}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

梦行七里 2024-08-20 17:25:26

您将文本字段放置在彼此的顶部。

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

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

You are placing the textfields on top of each other.

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

labels.x=xpos+spacer; //always 320
labels.y=ypos;        //always 100
雨落星ぅ辰 2024-08-20 17:25:26

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

var labels:TextField=new TextField();

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

First thing I see is on the line where you create the TextField it should be:

var labels:TextField=new TextField();

Also, try doing this without using setTextFormat() to check if the problem is the embedded font or something else.

我不是你的备胎 2024-08-20 17:25:26

使用这个

labels.defaultTextFormat=newFormat;

代替

labels.setTextFormat(newFormat);

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

Use this

labels.defaultTextFormat=newFormat;

instead of

labels.setTextFormat(newFormat);

this will solve the problem of embed fonts as well. Thank you everyone for the help though

幽蝶幻影 2024-08-20 17:25:26

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

Make sure you embed the font and that it is tracing out what the textfield is saying.

枫以 2024-08-20 17:25:26

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

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

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

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

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

编辑:

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

labels.setTextFormat(newFormat);

而不是

labels.defaultTextFormat = newFormat;

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

I had the same problem.
According to the as3 TextField documentation:

If you set the embedFonts property to
true for a text field, you must
specify a font for that text by using
the font property of a TextFormat
object applied to the text field. If
the specified font is not embedded in
the SWF file, the text is not
displayed.

In other words you need to have some dynamic text field with embedded font on the stage when you add one programatically or, alternatively, you can create your own font symbol with Export option to the library and add it to your TextField:

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

I guess you already figured it out by now. I hope it will be helpful for someone else =)

EDIT:

In this case you should use

labels.setTextFormat(newFormat);

Instead of

labels.defaultTextFormat = newFormat;

The last one doesn't seem to work for me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文