2011-05-10 187 views
1

我有一個將此腳本附加到它的動畫片段(在懸停時播放聲音片段) - 問題是,如果我將鼠標移出,我需要停止聲音片段。現在它只是重新開始,而它仍然在播放(鼠標懸停)==不好。在鼠標上停止播放音樂

有沒有人有解決方案?我試圖做一個MOUSE_OUT事件和一個.stop();但它似乎不工作。謝謝!

import flash.media.Sound; 
import flash.media.SoundChannel; 

//Declare a BeepSnd sound object that loads a library sound. 
var BeepSnd:BeepSound = new BeepSound(); 
var soundControl:SoundChannel = new SoundChannel(); 

somebutton.addEventListener(MouseEvent.MOUSE_OVER,playNoises); 
somebutton.addEventListener(MouseEvent.MOUSE_OUT,stopNoises); 

function playNoises(event:Event){ 
    playSound(BeepSnd); 
} 

function playSound(soundObject:Object) { 
    var channel:SoundChannel = soundObject.play(); 
} 

function stopNoises(event:Event){ 
    stopSound(BeepSnd); 
} 

function stopSound(soundObject:Object) { 
    var channel:SoundChannel = soundObject.stop(); 
} 

我得到這個錯誤:

TypeError: Error #1006: stop is not a function. 
at radio_fla::MainTimeline/stopSound() 
at radio_fla::MainTimeline/stopNoises() 
+0

你能發佈整個代碼嗎?你在哪裏停止聲音? – 2011-05-10 13:13:40

+0

這是整個代碼 - 沒有我阻止它的地方。我需要加入這個。 :-) – janhartmann 2011-05-10 13:14:11

+0

你說你嘗試添加一個'MOUSE_OUT'事件和一個'.stop();',如果你發佈該代碼,也許有人可以告訴你爲什麼它不起作用 – 2011-05-10 13:16:42

回答

4

在玩Sound時,您需要保留對SoundChannel的引用。 A Sound代表聲音,而SoundChannel代表聲音的播放,而且是您要停止的播放。

import flash.media.Sound; 
import flash.media.SoundChannel; 

//Declare a BeepSnd sound object that loads a library sound. 
var BeepSnd:BeepSound = new BeepSound(); 
var soundControl:SoundChannel; 

somebutton.addEventListener(MouseEvent.MOUSE_OVER,playNoises); 
somebutton.addEventListener(MouseEvent.MOUSE_OUT,stopNoises); 

function playNoises(event:Event){ 
    playSound(BeepSnd); 
} 

function playSound(soundObject:Object) { 
    soundControl = soundObject.play(); 
} 

function stopNoises(event:Event){ 
    stopSound(); 
} 

function stopSound() { 
    if (soundControl) { 
     soundControl.stop(); 
     soundControl = null; 
    } 
} 
+0

工程就像一個魅力! – janhartmann 2011-05-10 13:43:21

1

好了,問題是,你確實有調用通道對象的停止方法,而不是聲音對象:channel.stop()。你也可以考慮使用ROLL_OVER/OUT而不是MOUSE_OVER/OUT,但這當然與你的問題無關。

1

嘗試使用MouseEvent.ROLL_OVER和MouseEvent.ROLL_OUT而不是MOUSE_OVER和MOUSE_OUT。

+0

我做了這也是,謝謝。 – janhartmann 2011-05-10 13:43:32

相關問題