我正在制作一个以小鸟为头像的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
,例如完成动画后。