Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Выполнение через определённое время (http://www.flasher.ru/forum/showthread.php?t=172335)

JOGER 07.12.2011 04:47

Выполнение через определённое время
 
Уважаемые форумчане, подскажите как выполнить действие через определённое время?
пробовал setInterval, но действие у меня повторяется каждые n cекунд, а нужно однократное выполнение.

В частности, хочу сделать переход на ссылку через 10 секунд, как это оформить на AS3? ниже мой код. Переход на localhost происходит через каждые 5 секунд, а нужно один раз..
Код AS3:

stop();
var delay:Number = 5000;
var id:uint = setInterval(goNext, delay);
 
function goNext():void
{
        mc.gotoAndStop(2);
        navigateToURL( new URLRequest( "http://localhost/" ), "_blank" );
}


fish_r 07.12.2011 04:58

setInterval Возвращает uint — Уникальный числовой идентификатор отложенного процесса. Используйте этот идентификатор для отмены процесса, вызвав метод clearInterval().

А вообще рекомендуется пользоваться классом Timer. Там, кстати, вызов с явным аргументом опр. кол-во срабатываний.

ChuwY 07.12.2011 09:53

Для однократного исполнения можно воспользоваться setTimeout

fish_r 07.12.2011 10:55

Цитата:

Сообщение от ChuwY (Сообщение 1050166)
Для однократного исполнения можно воспользоваться setTimeout

сейчас не вспомню, но где-то читал что не рекомендуется пользоваться ни setInterval, ни setTimeout,
то ли они сделаны просто для соблюдения ECMA, то ли оставлены как атавизм прошлых версий,
то ли просто не надежны, что то такое ) В общем почему не помню, но не пользуюсь этими штуками )

Bgg 07.12.2011 11:26

Цитата:

Сообщение от fish_r (Сообщение 1050169)
сейчас не вспомню, но где-то читал что не рекомендуется пользоваться ни setInterval, ни setTimeout

В документации.

alatar 07.12.2011 11:27

Цитата:

но где-то читал что не рекомендуется пользоваться ни setInterval, ни setTimeout
Где-то
Цитата:

Вместо использования метода setInterval() рекомендуется создавать объект Timer с заданным интервалом, в котором в качестве параметра repeatCount используется значение 0 (то есть таймер выполняется бесконечно).
Цитата:

Вместо использования этого метода рекомендуется создавать объект Timer с указанным интервалом, в котором в качестве параметра repeatCount используется значение 1 (то есть таймер запускается один раз).

ChuwY 07.12.2011 11:50

А почему не рекомендуется никто не объяснит?
Слышал только весьма расплывчатые рассуждения.

gloomyBrain 07.12.2011 11:54

Ну, насколько я помню, обе функции являются обертками вокруг обычного Timer. Зачем мне обертка, если я могу использовать сам Timer?
И второе - что таймер каждый раз создается заново (на каждый вызов setTimeout или setInterval) - а это плохо с точки зрения потребляемых ресурсов

incvizitor 07.12.2011 12:13

Ну как вариант, вместо setTimeout, можно свою обвертку с пулом таймеров написать.

Srednas 07.12.2011 12:36

Можно запустить таймер на 10 секунд, а при срабатывании удалить слушатель.

Еще такая штука есть, может пригодиться.


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

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