Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash As3静音按钮问题_Flash_Actionscript 3_Audio_Mute - Fatal编程技术网

Flash As3静音按钮问题

Flash As3静音按钮问题,flash,actionscript-3,audio,mute,Flash,Actionscript 3,Audio,Mute,我正在尝试创建一个可以在不同场景中使用的UI电影剪辑。 它使用根范围中的变量来确定状态 当我按下静音按钮时效果很好,但是当我尝试取消静音时,事情会变得很奇怪。有时需要2次单击才能取消静音,有时甚至更多。这似乎是随机的。 然而,静音似乎第一次起作用 有什么想法吗 我假设您的代码位于时间线的第一帧上 我不会在as3中深入讨论与该实践相关的问题,但您最好使用document类。这样代码只初始化一次。我猜当你在场景之间切换时,你一直在初始化,所以你最终将静音重置为false 要检查是否发生了这种情况,只

我正在尝试创建一个可以在不同场景中使用的UI电影剪辑。 它使用根范围中的变量来确定状态

当我按下静音按钮时效果很好,但是当我尝试取消静音时,事情会变得很奇怪。有时需要2次单击才能取消静音,有时甚至更多。这似乎是随机的。 然而,静音似乎第一次起作用

有什么想法吗


我假设您的代码位于时间线的第一帧上

我不会在as3中深入讨论与该实践相关的问题,但您最好使用document类。这样代码只初始化一次。我猜当你在场景之间切换时,你一直在初始化,所以你最终将静音重置为false

要检查是否发生了这种情况,只需在该脚本中添加一个traceinit,并查看您调用该脚本的频率。您还可以向toggleMuteBtn函数中添加一个跟踪,以在更改它之前查看mute变量是什么

另一方面,我很好奇为什么你要输入parentMovieClipparent虽然它不会引起任何问题,但没有必要,因为你可以使用parentMovieClipparent

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);