Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Таймер на больших delay.Баг? (http://www.flasher.ru/forum/showthread.php?t=211326)

undefined 05.08.2015 10:13

Таймер на больших delay.Баг?
 
Простейший код
Код AS3:

var t:Timer=new Timer(2570303000);//1 месяц в мс
t.addEventListener(TimerEvent.TIMER,onTimer);
t.start();
function onTimer(e:TimerEvent) {
trace("-----");
}

Имеем моментальный вызов колбэка.Ставлю задержку в 10 раз меньше - моментально уже не вызывается.

caseyryan 05.08.2015 10:38

Что-то мне подсказывает, на уровне интуиции, что там хоть и написано delay:Number, в реале используется int. И так как у тебя число больше, чем int.MAX_VALUE, то оно конвертируется в отрицательное. Соответственно сразу срабатывает таймер.

undefined 05.08.2015 10:47

upd:
похоже таки баг.В сигнатуре конструктора пишут
Timer(delay:Number,repeat:int)
но,где-то внутрях он приводится таки к int
так
Код AS3:

var t:Timer=new Timer(int.MAX_VALUE);

работает
так
Код AS3:

var t:Timer=new Timer(int.MAX_VALUE+1);

снова мгновенный вызов

etc 05.08.2015 16:41

Это ECMAScript.

callme 05.08.2015 21:13

etc, что погуглить? А то я и погуглил, и по спецификации поискал. Не понимаю о чем речь идет.

etc 05.08.2015 21:15

Цитата:

Сообщение от callme (Сообщение 1185490)
etc, что погуглить? А то я и погуглил, и по спецификации поискал. Не понимаю о чем речь идет.

По спецификации там Number. Поэтому и здесь Number. А почему в ECMAScript Number хз, думаю потому что там int не было (или сейчас тоже нету, не смотрел).

callme 05.08.2015 21:16

ясно, спасибо


Часовой пояс GMT +4, время: 08:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.