使用按钮在函数内启用定时器
Use button to enable timer inside a function
我正在使用 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;
}
有人告诉我,将答案放在评论中是一种不好的做法,所以我再次 post 了。
只是为了说明您的代码中发生了什么:
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;
计时器将按您预期的方式工作。
我正在使用 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;
}
有人告诉我,将答案放在评论中是一种不好的做法,所以我再次 post 了。
只是为了说明您的代码中发生了什么:
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;
计时器将按您预期的方式工作。