我有一个griddle_mc,bacon_mc和BaconCooking.wav。当培根移到平底锅上时,我想播放wav。如果我移动培根直到它只是接触烤盘,wav就可以正常播放,但是如果我继续将bacon_mc拖过烤盘,那么wav会变得响亮而扭曲,就像它同时播放多个wav一样。
private function __handleSliceDown($evt:MouseEvent):void {
slice1_mc.startDrag(true);
}
private function __handleSliceUp($evt:MouseEvent):void {
slice1_mc.stopDrag();
addEventListener(Event.ENTER_FRAME, __checkHit);
}
private function __checkHit($evt:Event):void {
if (this.slice1_mc.hitTestObject(griddle_mc)) {
if (!hitting) {
sc = BaconCooking.play();
}
}
}
如何让wav正常播放?
修改
private function __checkHit($evt:Event):void {
if (this.slice1_mc.hitTestObject(griddle_mc)) {
if(isPlaying){
sc = BaconCooking.play();
isPlaying = true;
}
}else{
isPlaying = false;
sc.stop();
}
}
答案 0 :(得分:1)
现在你有if(isPlaying){
,但不应该是if(!isPlaying){
?
我会这样做的方式:当两个对象命中时,如果isPlaying boolean为false并且播放声音,则将其设置为true。如果对象不再碰撞,isPlaying布尔值只能再次变为假。
答案 1 :(得分:0)
编辑:因为默认情况下isPlaying为false,所以它永远不会播放声音。你的if语句应该是:
if(!isPlaying){
<code to play sound
}
此外,我之前提到了这一点,但我会扩展:你需要一个额外的事件监听器来检测对象何时触摸,当调用它时你将isPlaying设置为false。我已经在Actionscript中编程了一段时间,但这是你需要做的一般想法。
使用变量和条件语句。每次对象发生碰撞时,都会检查此变量是否为真。如果是,它将播放声音并将变量设置为true,否则,它将无效。当对象不再触摸时,变量将被设置为false。