Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.11.2014, 00:25
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 1  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Question Запуск функции по таймеру

Привет всем. Есть таймер, который запускает функцию с определенным интервалом. Мне нужно, чтобы в определенные моменты таймер срабатывал не дожидаясь истечения заданного интервала. Порылся, но решения пока не нашел.
Объясню на примере: идет отсчет 10-секундного таймер - 10,9,8... и тут по определенному событию сразу 0 и таймер запускает функцию.

Заранее cпасибо за помощь.

Код AS3:
var timerSlideShow:Timer = new Timer(10000);
timerSlideShow.addEventListener(TimerEvent.TIMER, moveSlides);
timerSlideShow.start();
 
private function moveSlides(e:TimerEvent):void {
     // тело функции
}
__________________
кто не отвечает, того garbage collector забирает

Старый 10.11.2014, 00:49
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Вызовите руками в нужном месте и остановите таймер.
Код AS3:
moveSlides(null);
__________________
тут я

Старый 10.11.2014, 00:49
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 3  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Может так?
Код AS3:
moveSlides(null);
Ну и останавливаем таймер, чтобы второй раз не выполнился.

Старый 10.11.2014, 15:03
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 4  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Нет, до этого я бы и сам догадался )
У меня приложение - слайдшоу, куда подгружаются фотки и видео из Instagram.
Этот таймер запускает функцию смены слайдов. При каждой итерации идет проверка, что подгружено - фото или видео. Если видео - то останавливаю таймер и запускаю проигрывание видео. И теперь следующий слайд должен запускаться не по таймеру, а по событию VIDEO_PLAY_COMPLETE.
В обработчике этого события я и возобновляю таймер
Код AS3:
timerSlideShow.start();
Но тогда после того как видео доиграло до конца будет происходить 10 сек пауза, после чего только сменится слайд - а нужно, чтобы тут не было паузы. Поэтому и возник вопрос, как можно в нужный момент обнулять сам временной период таймера.
А если вместо таймера запускать саму функцию - то таймер в этот момент остается остановленным. Как вариант только - внутри функции moveSlides проверять - остановлен ли таймер, и если да, то запускать его.
__________________
кто не отвечает, того garbage collector забирает

Старый 10.11.2014, 16:53
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 5  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Код AS3:
moveSlides(null);
timerSlideShow.start();

Старый 10.11.2014, 17:30
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 6  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
спасибо, я так и сделал ) просто думаю этот вариант не очень хорош тем, что после возобновления работы таймера следующим слайдом тоже может быть видео, следовательно произойдет остановка таймера - т.е. за время выполнения кода уже будет потеряна какая-то часть миллисекунд таймера. А при загрузке таких видеослайдов несколько раз подряд уже будет потеряно еще больше и на какой-то слайд с картинкой уже прийдется не 10 секунд, а 9. А то может и меньше...

Хотя, попробую каждый раз вызывать конструктор заново
Код AS3:
moveSlides(null);
timerSlideShow = new Timer(10000);
timerSlideShow.start();
Вопрос закрыт ) всем спасибо )
__________________
кто не отвечает, того garbage collector забирает


Последний раз редактировалось djken; 10.11.2014 в 19:33.
Старый 10.11.2014, 19:50
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 7  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
У таймера есть метод reset().
__________________
тут я

Старый 10.11.2014, 21:07
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Это было бы слишком просто. Как в документации.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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