我在库中有一个名为"number"的MovieClip
。我需要将该MovieClip的多个实例添加到后台。实例应称为number1
、number2
、number3
。。。每一个都需要有不同的文本
有没有可能在没有代码的情况下,只使用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的答案。但如果你发短信没有那么复杂,这可能是一个很好的解决方案。