在运行时构造变量名称

时间:2012-12-31 15:43:45

标签: actionscript-3

我是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));

正如您在代码顶部看到的,我有两个变量,mIntroLoopmBattleLoop

我需要这条线的帮助:

musicChannel = m.play(m.toString() + "Loop");

这当然不起作用,它只是让你知道我想要做什么。

在该行中,m.play()需要将mIntroLoopmBattleLoop的返回值作为参数,具体取决于我当前正在播放的内容。

1 个答案:

答案 0 :(得分:0)

我看到你自己解决了,但我认为你应该看看这个。

因为所有AS3类都扩展了Object类,所以你可以这样做:

musicChannel = m.play( this[m.toString() + "Loop"] );

虽然我不建议使用这种方法,因为当你回到你的代码时它真的很难读。否则我认为这是一个干净的解决方案。