AS3问题 - 锁定按钮的最佳方法

时间:2011-05-09 23:24:15

标签: actionscript-3

您好,感谢您阅读本文。 我在闪存中使用as3制作了按钮,但是我想要做的是在按下一个按钮时使它们处于非活动状态几秒钟。通常我会使用谷歌来解决这类问题,但我甚至不知道如何正确地说出来。 谢谢

3 个答案:

答案 0 :(得分:0)

你可以:

  • 将.enabled属性设置为false,以便禁用单击事件处理程序。
  • 添加一个新的锁定变量并用“if(lockingVariable)”包围点击处理程序中的所有代码。然后,您需要做的就是将其设置为false。但理想情况下,您只需禁用按钮。

至于做几秒钟,请查看计时器类。这link应该会有所帮助。典型的模式是这样的:

var myTimer:Timer = new Timer(1000, 1); // 1 second
myTimer.addEventListener(TimerEvent.TIMER, runOnce);
myTimer.start();

function runOnce(event:TimerEvent):void {
trace("runOnce() called @ " + getTimer() + " ms");
}

您需要做的就是重新启用回调作为第2行的方法,您的按钮将被禁用1秒。

答案 1 :(得分:0)

尝试将其用作按钮的基类:

package
{
    import flash.display.SimpleButton;
    import flash.events.MouseEvent;
    import flash.events.Event;

    public class MyButton extends SimpleButton
    {
        // vars
        public const DELAY:uint = 30;
        private var _timer:int = 0;

        /**
         * Constructor
         */
        public function MyButton()
        {
            addEventListener(MouseEvent.CLICK, _click);
        }

        /**
         * Called on Event.ENTER_FRAME
         */
        private function _handle(e:Event):void
        {
            _timer --;
            if(_timer < 1) removeEventListener(Event.ENTER_FRAME, _handle);
        }

        /**
         * Called on MouseEvent.CLICK
         */
        private function _click(e:MouseEvent):void
        {
            if(_timer > 0) return;

            _timer = DELAY;
            addEventListener(Event.ENTER_FRAME, _handle);

            // do your stuff below
            clickAction();
        }

        /**
         * Override this and fill with your actions
         */
        protected function clickAction():void
        {
            trace("override me");
        }
    }
}

以下是覆盖MyButton中clickAction()方法的示例:

package
{
    public class MyPlayButton extends MyButton
    {
        override protected function clickAction():void
        {
            trace("play button clicked");
        }
    }
}

答案 2 :(得分:0)

我按照按钮的方式,只需将按钮的enabled属性设置为false一段时间,然后使用Timer。< / p>

myBut.addEventListener(MouseEvent.CLICK, doStuff);

function doStuff(e:MouseEvent){
    //write whatever the button does here
    disableBut();
}

function disableBut(){
    myBut.enabled = false;
    var timer:Timer = new Timer(3000, 1);
    timer.addEventListener(TimerEvent.TIMER, enableBut);
    timer.start()
}

function enableBut(e:TimerEvent){
    myBut.enabled = true;
}

请记住,禁用该按钮的时间长度是在Timer()构造函数的第一个参数中设置的,以毫秒为单位。在我的示例中,您可以看到myBut被禁用3秒钟。