我是AS3的新手,我需要一些帮助。
我有这个代码来播放不同的音频文件并动态循环它们:
var mIntroLoop = 12495;
var mBattleLoop = 29000;
var currentPlaying;
function playMusic(x):void
{
musicChannel = x.play();
currentPlaying = x;
}
function loopSound(m:Object):Function {
return function(e:Event):void {
musicChannel = m.play(m.toString() + "Loop");
musicChannel.addEventListener(Event.SOUND_COMPLETE, loopSound(currentPlaying));
}
}
playMusic(mIntro);
musicChannel.addEventListener(Event.SOUND_COMPLETE, loopSound(currentPlaying));
正如您在代码顶部看到的,我有两个变量,mIntroLoop
和mBattleLoop
。
我需要这条线的帮助:
musicChannel = m.play(m.toString() + "Loop");
这当然不起作用,它只是让你知道我想要做什么。
在该行中,m.play()
需要将mIntroLoop
或mBattleLoop
的返回值作为参数,具体取决于我当前正在播放的内容。
答案 0 :(得分:0)
我看到你自己解决了,但我认为你应该看看这个。
因为所有AS3类都扩展了Object
类,所以你可以这样做:
musicChannel = m.play( this[m.toString() + "Loop"] );
虽然我不建议使用这种方法,因为当你回到你的代码时它真的很难读。否则我认为这是一个干净的解决方案。