AS3动态访问声道

时间:2014-07-24 13:47:43

标签: actionscript-3 flash air

我有一个闪存项目,同时有许多声道处于活动状态。我想要一个小功能来播放一个并循环它,声道的名称将作为参数传递。这是功能:

function playBGMusic(channel:String):void
{
    SoundChannel(channel) = bgSound1.play(); 
    SoundChannel(channel).addEventListener(Event.SOUND_COMPLETE, loopBGMusic);
}

playBGMusic("bgChannel1");

这不起作用,flash给了我这个错误:

  

1105:作业目标必须是参考值。

我尝试简化函数,仅在侦听器中使用静态字符串

function playBGMusic():void
{
    bgChannel1 = bgSound1.play(); 
    SoundChannel("bgChannel1").addEventListener(Event.SOUND_COMPLETE, loopBGMusic);
}

playBGMusic();

这次它编译,但它给了我这个错误:

  

错误#1034:类型强制失败:无法将“bgChannel1”转换为   flash.media.SoundChannel。

如何从字符串访问声道?

Thaks。

1 个答案:

答案 0 :(得分:0)

您需要在this

的上下文中访问它

SoundChannel(this[channel])SoundChannel(this["bgChannel1"])