2014-07-24 5 views
0

У меня есть Flash-проект со многими звуковыми каналами, активными одновременно. Мне нужна небольшая функция, чтобы воспроизвести ее и закодировать ее, и имя звукового канала будет передано как параметр. Это функция:AS3 Динамический доступ к звуковому каналу

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

playBGMusic("bgChannel1"); 

Это не работает, вспышка дает мне эту ошибку:

1105: Target of assignment must be a reference value.

Я пытался упростить функцию, используя статическую строку только в слушателе

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

playBGMusic(); 

На этот раз он собирает, но это дает мне эту ошибку:

Error #1034: Type Coercion failed: cannot convert "bgChannel1" to flash.media.SoundChannel.

Как я могу получить доступ к звуковому каналу из строки?

Thaks.

ответ

0

Вы должны получить доступ к нему в контексте this:

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

Смежные вопросы