Flash As3静音按钮问题

时间:2010-03-11 16:09:51

标签: flash actionscript-3 audio mute

我正在尝试创建一个可以在不同场景中使用的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);

1 个答案:

答案 0 :(得分:0)

我假设您的代码位于时间轴的第一帧。

我不会深入研究as3中有关该实践的问题,但您可能最好使用文档类。这样代码只初始化一次。我猜你在场景之间切换时,你会不断重新初始化,所以你最终会将静音重置为假。

要检查是否发生这种情况,只需在该脚本中添加trace("init"),然后查看您调用它的频率。您还可以在toggleMuteBtn函数中添加一条跟踪,以查看静音变量在您之前是什么改变它。

在旁注中,我很好奇为什么你要对父MovieClip(parent)进行类型转换,虽然它不会导致任何问题,但是没有必要,因为你可以使用{{1 }}