【问题标题】:Unable to reference MovieClip inside Button AS3无法在 Button AS3 中引用 MovieClip
【发布时间】:2015-08-24 14:33:56
【问题描述】:

我有一个烦人的问题,希望有人能帮助我。

我创建了一个静音按钮,并且在该按钮内还有另一个影片剪辑。我想做的就是当我切换静音时,里面的电影剪辑将转到相应的帧。

但是,每次我尝试在按钮内调用影片剪辑时,都会出现此错误:

通过静态类型 flash.display:SimpleButton 的引用访问可能未定义的属性 mcMuteToggle。

其中的影片剪辑的实例名称是“mcMuteToggle”。

【问题讨论】:

    标签: actionscript-3 flash button movieclip


    【解决方案1】:

    为什么不制作像按钮一样的movieClip?因为我不认为实际的 button (simpleButton) 类型可以处理子电影剪辑(特别是如果它们也有代码)。即使可能不这样做,我也可以预测Button 会根据您在这些 MClips 中的代码做不应该做的事情。

    尝试另一种按钮方法,仅用于测试...您没有显示任何可使用的测试代码,所以我会做出假设..

    1) 制作一个形状(矩形?)并转换为 MovieClip(或者如果全部编码,则将 addchild 形状转换为新的 MovieClip)。假设您将其命名为 mc_testBtn

    2) 通过编码 mc_testBtn.buttonMode = true; 使该 MC 可点击

    3) 在 mc_testBtn 中添加您的 mcMuteToggle
    (或通过代码:mc_testBtn.addChild(mcMuteToggle);

    现在你可以尝试类似..

    mc_testBtn.addEventListener (MouseEvent.CLICK, toggle_Mute );
    
    function toggle_Mute (evt:MouseEvent) : void
    {
        if ( whatever condition )
        {
            mc_testBtn.mcMuteToggle.gotoAndStop(2); //go frame 2
        }
        else
        {
            mc_testBtn.mcMuteToggle.gotoAndStop(1); //go frame 1
        }
    }
    

    【讨论】:

    • 我早该想到这个...非常感谢!
    【解决方案2】:

    这可能是由于严格模式造成的。您可以在 ActionScript 设置对话框中禁用它,使用不同的语法 myButton['mcMuteToggle'] 访问它,或者为包含属性 mcMuteToggle 的符号创建一个类。

    您还可以检查以确保符号确实在舞台上,并且该剪辑实际上在按钮中:

    if('myButton' in root) { 
        // ...
    }
    
    if('mcMuteToggle' in myButton) { 
        // ...
    }
    

    【讨论】:

    • 对不起,我不太清楚你的意思,但我确实尝试为它创建一个类,但不幸的是它没有工作。抱歉,没有真正体验过flash。
    【解决方案3】:

    我认为你只是覆盖了这些代码。你可以使用这样的东西:

     var soundOpen:Boolean = true;
        var mySound:Sound = new Sound(new URLRequest("Whatever your sound is"));
        var mySc:SoundChannel = new SoundChannel();
        var mySt:SoundTransform = new SoundTransform();
        mySc = mySound.play();
    
        mcMuteToggle.addEventListener(MouseEvent.CLICK, muteOpenSound);
    
        function muteOpenSound(e:MouseEvent):void
        {
            if(soundOpen == true)
            {
                mcMuteToggle.gotoAndStop(2);
    /*on frame 2 u need to hold ur soundClose buton so ppl can see :)*/
                soundOpen = false;
                mySt.volume = 0;
                mySc.soundTransfrom = st;
            }
            else
            {
                mcMuteToggle.gotoAndStop(1);
                soundOpen = true;
                mySt.volume = 1;
                mySc.soundTransfrom = st;
            }
        }
    

    这对我每次都有效。希望你能用得好;)

    【讨论】:

    • 是的,这正是我所做的,但我使用了混音器。但问题不在于按钮本身的功能,而在于它的视觉方面......不确定我是否有意义哈哈
    • 代码应该是这样的,并且在您的 mcMuteToggle 中的第 1 帧打开声音图形,在第 2 帧关闭声音图形。如果你像这样设置你的 mcMuteToggle 按钮/MovieClip,这无论如何都会起作用:)
    • 我的代码是这样的:btn_Mute.mcMuteToggle.gotoAndStop(1); 但它一直给我错误
    • 如果您可以,请在此处输入所有代码。我可能会因为这个原因得到帮助,通常btn_Mute.mcMuteToggle.gotoAndStop(1); 应该可以工作。
    • 你确定你有一个名为btn_Mute的mc,里面有mcMuteTogglemcMuteToggle这个按钮有frame1和frame2吗?这个mcMuteToggle里面有代码吗?
    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2015-11-07
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多