使用按钮启用功能内的计时器

时间:2016-12-07 14:21:13

标签: actionscript-3 actionscript

我在动作脚本3中制作了一些内容,当我按下第一个按钮btnSkaffPenger时,每次点击都会增加1。但我的第二个按钮btnTrePrinter应该每2秒自动增加1,但只能工作一次,并且不会重置。 (我添加了这样你只能按下按钮一次,我认为这不会干扰功能重置)

由于

按钮代码:

btnTrePrinter.addEventListener(MouseEvent.CLICK, trePrinter);
function trePrinter(evt:MouseEvent):void
{
    var timer:Timer = new Timer(2000);
    var harVentet:Function = function(event:TimerEvent):void{
        timer.removeEventListener(TimerEvent.TIMER, harVentet);
        timer = null;

        sumPenger++
        txtSumPenger.text = sumPenger.toString();
    }
    timer.addEventListener(TimerEvent.TIMER, harVentet);
    timer.start();

    btnTrePrinter.mouseEnabled = false;
    btnTrePrinter.alpha=0.4;
}

完整代码:

import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;

var sumPenger:int = 0;

btnSkaffPenger.addEventListener(MouseEvent.CLICK, penger1);
function penger1(evt:MouseEvent):void
{
    sumPenger++
    txtSumPenger.text = sumPenger.toString();
}

btnTrePrinter.addEventListener(MouseEvent.CLICK, trePrinter);
function trePrinter(evt:MouseEvent):void
{
    var timer:Timer = new Timer(2000);
    var harVentet:Function = function(event:TimerEvent):void{
        timer.removeEventListener(TimerEvent.TIMER, harVentet);
        timer = null;

        sumPenger++
        txtSumPenger.text = sumPenger.toString();
    }
    timer.addEventListener(TimerEvent.TIMER, harVentet);
    timer.start();

    btnTrePrinter.mouseEnabled = false;
    btnTrePrinter.alpha=0.4;
}

1 个答案:

答案 0 :(得分:0)

据我所知,将答案放在评论中是不好的做法,所以我再次发布。

只是为了澄清代码中发生的事情:

var timer:Timer = new Timer(2000);
// the timer created with 2 seconds delay and infinite repeats 

var harVentet:Function = function(event:TimerEvent):void {
    // 2 seconds passed after "timer.start()" call
    // it's the first invocation of this listener
    timer.removeEventListener(TimerEvent.TIMER, harVentet);
    timer = null;
    // the listener is removed and timer is destroyed
    // since the listener removed from timer, no more invocations will happen
    sumPenger++
    txtSumPenger.text = sumPenger.toString();
}
timer.addEventListener(TimerEvent.TIMER, harVentet);
// the listener is added to timer
timer.start();
// the timer starts

删除此代码:

timer.removeEventListener(TimerEvent.TIMER, harVentet);
timer = null;

,计时器将按预期工作。