Проблемы с Flash As3 Mute Button - PullRequest
       33

Проблемы с Flash As3 Mute Button

0 голосов
/ 11 марта 2010

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

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

1 Ответ

0 голосов
/ 12 марта 2010

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

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

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

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

...