2010-03-11 66 views
0

我正在嘗試創建可在不同場景中使用的UI影片剪輯。 它使用根作用域中的變量來確定狀態。Flash As3靜音按鈕問題

當我按靜音按鈕工作正常,但是當我試圖取消靜音的事情變得很奇怪。有時需要2次點擊才能取消靜音,有時甚至更多。這似乎是隨機的。 但是,靜音似乎第一次工作..

任何想法?


主要時間軸:

VAR靜音:布爾= FALSE; var playerName =「Fred」;

function setMute(vol) var sTransform:SoundTransform = new SoundTransform(1,0); sTransform.volume = vol; SoundMixer.soundTransform = sTransform; }

功能toggleMuteBtn(事件:事件) { 如果(靜音) { //聲音開,靜音關閉 靜音= FALSE; setMute(1); ui_mc.muteCross_mc.visible = false; } else { //聲音關閉,靜音開啓 靜音=真; setMute(0); ui_mc.muteCross_mc.visible = true; } }


ui_mc動作腳本:

如果(影片剪輯(父).mute == FALSE) { muteCross_mc.visible = FALSE; }

mute_btn.addEventListener(MouseEvent.CLICK,MovieClip(parent).toggleMuteBtn);

回答

0

我假設您的代碼位於時間軸的第一幀。

我不會深入討論關於as3中的練習的問題,但是您最好使用文檔類。這樣代碼只被初始化一次。我在猜測,當你在場景之間切換時,你會重新初始化,所以你最終會將靜音重置爲false。

要檢查是否發生這種情況,只需在該腳本中添加一個trace("init"),然後查看您經常調用該腳本的頻率。您還可以在toggleMuteBtn函數中添加一個跟蹤,以查看靜音變量在更改前的狀態。

在一個側面說明,我很好奇,爲什麼你的類型轉換父MovieClip(parent)雖然它不會引起任何問題,沒有必要爲它,你可以只使用parent

+0

文檔類HOWTO : http://www.youtube.com/watch?v=V01yZnRANLQ – Daniel 2010-03-12 07:18:49