AS3:更改同一MovieClip的多个实例上的TextField文本



我在库中有一个名为"number"MovieClip。我需要将该MovieClip的多个实例添加到后台。实例应称为number1number2number3。。。每一个都需要有不同的文本

有没有可能在没有代码的情况下,只使用flash接口工具就可以做到这一点?如果没有,有人能帮我编码吗?

谢谢!

对于包含名为output:的文本字段的类链接MyNumber

const N:int = 3; // 3 instances
const TEXTS:Array = ['text 1', 'text 2', 'text 3']; // 3 texts
var n:MyNumber;
for (var i:int = 0; i < N; i++) {
    n = new MyNumber();
    n.y = 50 * i;
    n.output.text = TEXTS[i];
    this.addChild(n);
}

您必须至少使用一点代码。

除了@helloflash的答案之外,这里还有一个更简单的解决方案(下面介绍了一些注意事项)。

在你的movieClip上,让你的文本框是动态的,并给它一个实例名txt(或者你想要的任何名称)。然后,将以下代码行放在电影剪辑时间线的第一帧上:

txt.text = this.name;  //works if your text is a simple word with no spaces/puntuaction/symbols and doesn't match any actionscript keywords

这将把文本设置为每个movieClip的实例名称。如果你的文本是简单的,比如"Hello"或"Player1",效果会很好。


现在,如果你的文本是一个数字(或以一开头),或者你的文本匹配一个关键字或已经定义的变量(比如这个/content/function/break/stop/play等),你需要让它变得更复杂,比如这样:

txt.text = this.name.replace("$MC_","");

然后以以下格式给出实例名称:$MC_stop,代码将去掉$MC_部分并显示其余部分。因此文本字段将为"stop"。


现在,如果你想包括空格或大多数符号(我认为只有美元符号、下划线和破折号),你必须为每个符号添加一个替换,并为该字符创建一个占位符。

因此,如果您的文本是"这是我的文本",您应该给它一个实例名"This_is_my_text",这应该是代码:

txt.text = this.name.replace("_"," "); //replace all underscores with space

为所需的字符添加尽可能多的替换语句。

因此,如果您的文本是"1。这是我的短信"-实例名称可以是:$MC_1$dot_This_is_my_text$ex$ex$ex,代码:

txt.text = this.name.replace("$MC_","").replace("_"," ").replace("$dot",".").replace("$ex","!"); //you can keep chaining on as many replace statements as you need.

当然,在这一点上,你还不如使用完整的代码,比如@helloflash的答案。但如果你发短信没有那么复杂,这可能是一个很好的解决方案。

相关内容

最新更新