DC中的AS3动态变量创建

时间:2012-10-23 10:12:00

标签: actionscript-3

当我们在AS3中编写Document类时,可以动态创建变量而不声明吗?

例如,从库中我导入声音文件。大约20个声音文件。 如果代码本身就是fla,我们可以为for循环分配:

this["SOUND"+increasingNumber]

但是在documentClass中这不起作用,因为this引用了这里的类而不是舞台。

任何创建变量的方法?

2 个答案:

答案 0 :(得分:1)

导入库中时,右键单击声音文件并转到其属性。单击actionscript选项卡并选中'export for actionscript'。给它一个类名,然后你可以在你的文档类中使用它来实例化那个声音。

如果你将其命名为Sound1:

var sound:Sound = new Sound1();
sound.play();

more detailed info here

[编辑到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

}