0

さまざまなシーンで使用できるUIムービークリップを作成しようとしています。ルートスコープの変数を使用して状態を判別します。

ミュートボタンを押すと正常に動作しますが、ミュートを解除しようとすると奇妙になります。ミュートを解除するのに2回クリックする場合もあれば、それ以上かかる場合もあります。ランダムに見えます。ただし、ミューティングは初めて機能するようです。

何か案は?


Main Timeline: 

var mute:Boolean = false;
var playerName = "Fred";


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

function toggleMuteBtn(event:Event)
{
    if (mute)
    {
        // Sound On, Mute Off
        mute = false;
        setMute(1);
        ui_mc.muteCross_mc.visible = false;
    }
    else
    {
        // Sound Off, Mute On
        mute = true;
        setMute(0);
        ui_mc.muteCross_mc.visible = true;
    }
}

ui_mc Action Script:

if (MovieClip(parent).mute == false)
{
    muteCross_mc.visible = false;
}

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

1 に答える 1

0

私はあなたのコードがあなたのタイムラインの最初のフレームにあると仮定しています。

as3でのそのプラクティスに関する問題については詳しく説明しませんが、ドキュメントクラスを使用する方がよい場合があります。このようにして、コードは1回だけ初期化されます。シーンを切り替えるときは、再初期化を続けるので、ミュートをfalseにリセットすることになります。

これが発生しているかどうかを確認するには、trace("init")そのスクリプトにを追加し、それを呼び出す頻度を確認します。また、toggleMuteBtn関数にトレースを追加して、変更する前にミュート変数が何であるかを確認することもできます。

MovieClip(parent)ちなみに、問題が発生しないのに、なぜ親を型キャストしているのか不思議です。使用するだけなので必要ありません。parent

于 2010-03-12T07:13:58.990 に答える