![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2013
Сообщений: 33
|
Добрый день.
Помогите решить проблему. При нажатии на кнопку запускается функция в которой создаётся таймер. После завершения таймера если условие (srTime<x) выполняется то функция запускается ещё раз. Так же эта функция вызывается много раз если тыкать по кнопке. В этом собственно и проблема. Создаётся много таймеров и на экране последняя секунда мерцает. Пробовал всякими if(myTimer.running), myTimer.reset(), но всё равно последняя секунда на экране скачет плюс минус секунда. private function newTimer (){ if(srTime<x) { var nTime = com.adobe.serialization.json.JSON.decode(time.data); //сюда приходят секунды оставшиеся до 5 минут var kolSek = 300-nTime.time_for_as; var myTimer:Timer = new Timer (1000, kolSek); myTimer.addEventListener(TimerEvent.TIMER, onTimeEner); //секундомер myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, timeOK); myTimer.start(); function onTimeEner (e:TimerEvent) { kolSek--; if (kolSek>0){ var sek:int=kolSek%60; var min:int=kolSek/60; pan.tim_energ.text=min+":"+sek; } } } } private function timeOK(e:TimerEvent) { //по завершению таймера прибавляется 1 и запускается заново srTime+=1; pan.text=String(srEnerg); newTimer(); } } |
|
|||||
|
Регистрация: Jun 2013
Сообщений: 33
|
нужен один таймер. по его завершению добавляется +1 к счётчику до определённого значения.
Создаётся он при клике по кнопке. Если один раз нажать то всё хорошо. А если много раз то глючит. а функцию в функции делаю что бы переменные в глобальную область не выносить. Добавлено через 2 минуты хороший пример: таймер восстановления энергии в социальных играх. когда энергия максимальна таймер выключен, если нажать кнопку какого-либо действия то энергия уменьшается а таймер включается. И вот если на кнопку выполнения много раз нажать то таймер теоретически много раз пересоздастся. |
|
|||||
|
Регистрация: Jan 2011
Сообщений: 200
|
эмм. создайте один таймер в начале класса, зачем создавать кучу локальных? также где-то в инициализации подпишитесь на слушатели, а в методе newTimer проверяйте, если таймер еще запущен, то ничего не происходит. если не запущен, но запускаем.
|
|
|||||
|
Регистрация: Jun 2013
Сообщений: 33
|
в начале класса не получается. Количество секунд (kolSek) не определено будет. Или я что-то не правильно понял?
Добавлено через 2 минуты а, вроде бы понял. На кнопку другую функцию повесить с if(myTimer.running). Добавлено через 1 час 20 минут Нет. Всё таки так не получится. При первом запуске таймер может создаться не с пятиминутным интервалом а с любым, например минута и 30 секунд. А при отработке он должен запустится с выдержкой 5 минут. Можно первый удалить как-нибудь? Последний раз редактировалось alexqw; 27.06.2013 в 11:39. |
|
|||||
|
Регистрация: Jan 2011
Сообщений: 200
|
что мешает сделать так:
|
|
|||||
|
Регистрация: Jun 2013
Сообщений: 33
|
Да. Спасибо. Примерно так и сделал.
Только не сразу догадался repeatCount использовать, по этому у меня 2 таймера. один не с 5 минут, второй с пяти) В следующий раз через repeatCount конечно буду делать. Спасибо. |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|