0

我是 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()需要将mIntroLoopor的返回值作为参数mBattleLoop,具体取决于我当前正在播放的内容。

4

1 回答 1

0

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

因为所有 AS3 类都扩展Object了类,所以您可以执行以下操作:

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

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

于 2013-01-01T19:42:06.977 回答