Из спецификации Java :
Октальная цифра состоит из цифры ASCII 0, за которой следует одна или несколько цифр ASCII от 0 до 7 и может представлять собой положительное, нулевое или отрицательное целое.
blockquote>
setTimeout
фактически использует подкласс Timer
, SetIntervalTimer
, который является внутренним классом. Вы можете проверить, выполнив setTimeout (function (): void {throw "booom";}, 1);
. Вы увидите это в трассировке стека.
Таким образом, я не вижу большого недостатка. Единственная разница в том, что у вас 2 анонимных звонка вместо одного. OTOH, в критических ситуациях с производительностью вам не следует использовать ни один из них (кроме одного внутреннего таймера), чтобы избежать частого создания экземпляров объектов TimerEvent
.
В основном, я думаю, это дело вкуса. Adobe решила, что система событий AS3 - это круто, поэтому они ее продвигают.
Таймер:
Предоставляет вам больше контроля, поскольку вы можете зарегистрировать больше слушателей событий, чтобы получать событие, а не {{1} } один с помощью setTimeout
Вы можете контролировать время начала и
количество повторений (не очень
полезно для setTimeout, так как этот
имеет для запуска только один раз и после задержки
, учитывая момент времени
, когда он был вызван)
setTimeout:
Легче использовать
Меньше кода для написания
Параметры могут быть легко отправлены;
Я предпочитаю класс Timer, но я видел, что setTimeout часто используется программисты.
Также, если вы используете библиотеки Tweening, некоторые из них поддерживают отложенный вызов
Например, TweenMax TweenMax.delayedCall (2, myFunction, ["myParam"]);
Для всех, кто говорит, что setTimeout устарел, это бессмысленно ..
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#setTimeout%28%29
Я верю, что вы можете ' здесь нет никаких "устаревших" ключевых слов вокруг setTimeout
Обычно что-то устаревает, если появляется новый и более мощный способ достижения чего-либо.
Да, в некоторых случаях setTimeout намного проще настроить, но в других случаях он гораздо более ограничен.
Я бы использовал класс Timer, потому что обычно, когда что-то устарело, это означает, что поддержка для него может быть прекращена когда-нибудь в будущем, и тогда ваш код не будет работать.
Проблема в том, что объект Timer не совсем точен и подвержен колебаниям частоты кадров. Прочтите http://forums.adobe.com/message/892631 . Я создал свой собственный таймер (так называемый RealTimer), используя объект Date
, и он намного точнее. Я рекомендую сделать то же самое.
Насколько я понимаю, setTimeout обесценивается в AS3. У меня небольшие проблемы с поиском источника кода setTimeout, но я также считаю, что легче очистить любые ссылки на объект Timer, чем с помощью setTimeout (если я правильно помню из AS2).