Actionscript 3 - заставить звук воспроизводиться только один раз, когда объекты касаются - PullRequest
1 голос
/ 25 февраля 2011

У меня есть 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();
                    }
             }
  • isPlaying это логическое значение по умолчанию false.

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Теперь у вас есть if(isPlaying){, но не должно ли это быть if(!isPlaying){?

Как бы я это сделал: когда два объекта попадут в цель, установите для логического значения isPlaying значение true, если оно ложно, и воспроизведите звук.Логическое значение isPlaying может снова стать ложным, если объекты больше не сталкиваются.

0 голосов
/ 25 февраля 2011

edit: поскольку isPlaying по умолчанию имеет значение false, он никогда не будет воспроизводить звук с самого начала. Ваше заявление if должно быть:

 if(!isPlaying){
 <code to play sound
 }

Кроме того, я коснулся этого раньше, но я расширю: вам нужен дополнительный прослушиватель событий, который определяет, когда объекты не касаются, когда он вызывается, вы устанавливаете isPlaying в false. Прошло некоторое время с тех пор, как я запрограммировал в Actionscript, но это общая идея того, что вам нужно делать.

Используйте переменную и условный оператор. Каждый раз, когда объекты сталкиваются, он проверял, была ли эта переменная истинной. Если бы это было так, то он проигрывал бы звук и устанавливал переменную в true, иначе он бы ничего не делал. Когда объекты больше не касаются, переменная будет установлена ​​в false.

...