Проблемы с кнопкой отключения звука Flash As3

Я пытаюсь создать клип пользовательского интерфейса, который можно использовать в разных сценах. Он использует переменные из корневой области для определения состояний.

Когда я нажимаю кнопку отключения звука, все работает нормально, однако, когда я пытаюсь включить звук, все происходит странно. Иногда для включения звука требуется 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);

person Lee    schedule 11.03.2010    source источник


Ответы (1)


Я предполагаю, что ваш код находится в первом кадре вашей временной шкалы.

Я не буду вдаваться в подробности, связанные с этой практикой в ​​as3, но вам может быть лучше использовать класс документа. Таким образом, код инициализируется только один раз. Я предполагаю, что когда вы переключаетесь между сценами, вы продолжаете повторно инициализировать, поэтому в конечном итоге вы сбрасываете звук на false.

Чтобы проверить, происходит ли это, просто добавьте trace("init") к этому сценарию и посмотрите, как часто вы это вызываете. Вы также можете добавить трассировку в свою функцию toggleMuteBtn, чтобы увидеть, какая переменная отключения звука, прежде чем вы ее измените.

Кроме того, мне любопытно, почему вы приводите тип parentMovieClip(parent), хотя это не вызовет никаких проблем, в этом нет необходимости, поскольку вы можете просто использовать parent

person Daniel    schedule 12.03.2010