【问题标题】:Re-enable buttons in as3重新启用 as3 中的按钮
【发布时间】:2013-09-30 20:52:47
【问题描述】:

以下是我的按钮代码,我面临的问题是,一旦单击按钮,单击下一个按钮后将无法再次工作。我想启用上一个单击的按钮。我希望专家可以在这里帮助我。

pages.gotoAndStop("home");

// list of button instance names

var buttonsss:Array = [home, menudown.about, menudown.portfolio, menudown.clients, menudown.pricing, menudown.contact];


for each ( var mc:MovieClip in buttonsss)
{
mc.buttonMode = true;
mc.mouseChildren = false;
mc.addEventListener(MouseEvent.MOUSE_UP, onClick, false, 0, true);
mc.addEventListener(MouseEvent.ROLL_OVER, rolloverEffect, false, 0, true);
mc.addEventListener(MouseEvent.ROLL_OUT, rolloutEffect, false, 0, true);
    }

function onClick(e:MouseEvent):void
{

pages.gotoAndStop(e.target.name);
TweenLite.to(e.currentTarget,2,{tint:0xFF0000, ease:Strong.easeOut});
var myTween:Tween = new Tween(pages, "alpha", Strong.easeOut, 0, 1, 2, true);       
e.currentTarget.removeEventListener(MouseEvent.ROLL_OUT, rolloutEffect);//disable the roll out effect
e.currentTarget.removeEventListener(MouseEvent.MOUSE_UP, onClick);//disable the roll out effect
e.currentTarget.removeEventListener(MouseEvent.ROLL_OVER, rolloverEffect);//disable the roll out effect

}

function rolloverEffect(e:MouseEvent):void{

TweenLite.to(e.currentTarget,2,{tint:0x000000, ease:Strong.easeOut});

}
function rolloutEffect(e:MouseEvent):void{

//should change tint to null just when its enabled, but its changing always (enabled or disabled)
TweenLite.to(e.currentTarget,2,{tint:null , ease:Strong.easeOut});

}

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

    创建一个名为focusedButton 的变量。然后,在您的 onClick 函数中执行以下操作:

    if ( focusedButton !== null ) {             
        // all the code to re-enable the previous button
        // ie add the listeners and tween alpha             
    }
    
    // be sure to store a reference to the new focused button:
    focusedButton = e.currentTarget;
    

    然后继续禁用新按钮的代码....

    编辑 - 我看到您的评论要求更多代码。我很想让你自己弄清楚,因为我认为我已经给了你你需要的一切,但由于我不知道你的经历是什么,我会带你走得更远一些。我希望这会有所帮助:

    // put this at the top of your file:
    var focusedButton:MovieClip = null;
    
    // an updated onClick function ( untested )
    function onClick(e:MouseEvent):void
    {   
        if ( focusedButton !== null ) {             
            // just guessing your unfocus tint:
            TweenLite.to(focusedButton, 2, { tint:0xFFFFFF, ease:Strong.easeOut, onComplete:function():void {
                // remove tint here
            }});
            focusedButton.addEventListener(MouseEvent.ROLL_OUT, rolloutEffect);//enable the roll out effect
            focusedButton.addEventListener(MouseEvent.MOUSE_UP, onClick);//enable the roll out effect
            focusedButton.addEventListener(MouseEvent.ROLL_OVER, rolloverEffect);//enable the roll out effect         
        }
    
        // keep reference to the new button
        focusedButton = MovieClip(e.currentTarget);
    
        // now disable the new button etc:
        pages.gotoAndStop(e.target.name);
        TweenLite.to(e.currentTarget,2,{tint:0xFF0000, ease:Strong.easeOut});
        var myTween:Tween = new Tween(pages, "alpha", Strong.easeOut, 0, 1, 2, true);       
        e.currentTarget.removeEventListener(MouseEvent.ROLL_OUT, rolloutEffect);//disable the roll out effect
        e.currentTarget.removeEventListener(MouseEvent.MOUSE_UP, onClick);//disable the roll out effect
        e.currentTarget.removeEventListener(MouseEvent.ROLL_OVER, rolloverEffect);//disable the roll out effect
    }
    

    【讨论】:

    • 你能用你说的focusedbutton函数重写我的代码吗?
    • 谢谢先生,我收到此错误场景 2,图层“动作”,第 2 帧,第 66 行 1118:将静态类型 Object 的值隐式强制转换为可能不相关的类型 flash.display:影片剪辑。这是第 66 行focusedButton = e.currentTarget;
    • 指的是哪一行代码?它可能是对 e.currentTarget 的引用吗?尝试使用 MovieClip(e.currentTarget) 将其投射到 MovieClip 或 Sprite(无论它是什么)
    • 我还注意到我在补间前一个按钮时犯了一个错误。它还应该引用focusedButton,而不是e.currentTarget。我会修复上面的代码。
    • 只需要 1 个帮助,单击的按钮在单击其他选项后仍保持红色。我希望它是空色调。提前致谢。
    猜你喜欢
    • 2014-09-27
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多