1

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

例如,我正在从一个库中导入声音文件。大约 20 个声音文件。如果代码本身在 fla 中,我们可以在 for 循环中赋值:

this["SOUND"+increasingNumber]

但是在 documentClass 中这是行不通的,因为this这里指的是类而不是舞台。

有什么方法可以创建变量?

4

2 回答 2

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());
}
于 2012-10-23T10:24:25.070 回答
1

在 fla 中添加代码时,会将其添加到框架脚本中。

帧脚本是以固定间隔(帧率)重复的代码块。

您可以像这样使用 addFrameScript 来实现。

然而,更好的方法是不要混淆框架脚本和常规类方法。

您可以从代码中访问“阶段”,但必须在 added_to_stage 事件之后才能确定。

addEventListener(Event.ADDED_TO_STAGE, init);

function init(e:Event):void{ 

     // Access 'stage' here

}
于 2012-10-23T10:38:34.160 回答