当我们在AS3中编写Document类时,可以动态创建变量而不声明吗?
例如,从库中我导入声音文件。大约20个声音文件。 如果代码本身就是fla,我们可以为for循环分配:
this["SOUND"+increasingNumber]
但是在documentClass中这不起作用,因为this
引用了这里的类而不是舞台。
任何创建变量的方法?
答案 0 :(得分:1)
导入库中时,右键单击声音文件并转到其属性。单击actionscript选项卡并选中'export for actionscript'。给它一个类名,然后你可以在你的文档类中使用它来实例化那个声音。
如果你将其命名为Sound1:
var sound:Sound = new Sound1();
sound.play();
[编辑到loxxy的回复]上面显示了如何在文档类中创建变量。 要动态创建所有声音变量,我建议使用数组,如下所示:
假设您将库Sound1中的所有声音命名为Sound20
import flash.utils.getDefinitionByName;
var sounds:Array = [];
var soundClass:Class;
for(var i:int = 1; i<21; i++){
soundClass = getDefinitionByName("Sound" + i) as Class;
sounds.push(new soundClass());
}
答案 1 :(得分:1)
在添加代码时,在fla中将其添加到framescript中。
framecript是以规则间隔(帧速率)重复的代码块。
您可以使用addFrameScript like this来实现这一目标。
然而,更好的方法是不要混淆framecript&amp;常规类方法。
您可以从代码中访问“舞台”,但只能在added_to_stage事件之后才能访问。
addEventListener(Event.ADDED_TO_STAGE, init);
function init(e:Event):void{
// Access 'stage' here
}