我正在制作一个以小鸟为头像的Flash游戏。当小鸟捡起一个铁鸟拾音器时,就会播放《钢铁侠》这首歌。但是问题是:它一直在制作这种音频的新实例。所以我就像十万个奥兹在唱歌。但是它们彼此之间有一秒钟的延迟。歌曲只能播放一次吗?还是一个小的脚本可以完成此任务?

这是我的脚本:

var IronManMusic:Sound = new IronManSong();
var IronManChannel:SoundChannel = new SoundChannel();

var backgroundMusic:Sound = new BackgroundMusic();
var myChannel:SoundChannel = new SoundChannel();
myChannel = backgroundMusic.play();

 if(ironbird==true){
  laatstejump = 9;
  myChannel.stop();
  IronManChannel = IronManMusic.play();
 }

可以在Updatescreen函数中找到ironbird bool(boolean) 值。我认为这是问题所在,但我不确定。非常感谢您的帮助! :)

最佳答案

嗯...看起来应该是:

if(ironbird==true) {
  [...]
  ironbird = false;
}

或者至少您提到的Updatescreen函数应该在一滴水/迭代后将ironbird设置回false

编辑:查看您作为答案发布的代码,它甚至更容易:

你在做
if(birdie.hitTestPoint(ironbirdpickup.x,ironbirdpickup.y,true)){
    ironbird = true;
    ironbirdpickup = Null;
}

if(ironbird==true){
    laatstejump = 9;
    myChannel.stop();
    IronManChannel = IronManMusic.play();
}

并将ironbird变量用于动画等。移动声音触发器应该只触发一次声音(或触发hitTestPoint的频率)。
if(birdie.hitTestPoint(ironbirdpickup.x,ironbirdpickup.y,true)){
    ironbird = true;
    ironbirdpickup = Null;
    myChannel.stop();
    IronManChannel = IronManMusic.play();
}

if(ironbird==true){
    laatstejump = 9;
}

您仍然应该将ironbird重设为false,例如完成动画后。

09-16 07:48