2016-12-07 3 views
1

Я делаю что-то в ActionScript 3, и когда я нажимаю первую кнопку btnSkaffPenger, она увеличивает число на 1 для каждого щелчка. Но моя вторая кнопка btnTrePrinter должна увеличить число на 1 каждые 2 секунды, автоматически, но работает только один раз и не перезагружается. (Я добавил, так что вы можете нажать на кнопку только один раз, я не думаю, что мешает с функцией сброса)Используйте кнопку, чтобы включить таймер внутри функции

Благодарности

Кнопки Код:

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; 
} 
+0

Если вы хотите, чтобы этот таймер изменял значение каждые две секунды, почему вы убиваете таймер после первого вызова функции? Удалите этот код: 'timer.removeEventListener (TimerEvent.TIMER, harVentet); timer = null; 'и таймер будет работать так, как вы ожидаете. – Nbooo

+1

wow спасибо, теперь чувствую себя глупо. Большое вам спасибо, я серьезно не узнал бы! <3 –

+0

Рад слышать, что это помогло! – Nbooo

ответ

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; 

и таймер будет работать, как вы ожидаете.

Смежные вопросы