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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.03.2012, 16:45
AlexBob вне форума Посмотреть профиль Отправить личное сообщение для AlexBob Найти все сообщения от AlexBob
  № 1  
Ответить с цитированием
AlexBob

Регистрация: Sep 2011
Сообщений: 18
По умолчанию Как прекратить выполнение функции.

Добры день!
Есть полностью готовый ролик. В каждом кадре вызывается функция паузы. Пока отрабатывает пауза, воспроизводятся мувиклипы этого кадра.
Мне надо сделать, чтобы по наступлении события (например, нажатия кнопки), был переход на последний кадр и остановка. Вешаю слушателя и gotoAndStop(LastFrame);
Но функция паузы продолжает выполняться и, после истечении времени, снова запускает Play, и ролик начинается заново. Как быть?
Вот код паузы:
Код AS3:
MovieClip.prototype.ppause = function (seconds)
{
 
this.stop (); 
 
var pause = setInterval (function (mc)
{
 
clearInterval (pause);
mc.play ();
 
}
, seconds*1000, this);
 
};

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

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Ну Вам видимо нужно вызвать clearInterval в обработчике щелчка по кнопке. Но как это сделать в Вашем случае, даже не знаю, может стоит начать писать в классах?
__________________
http://www.chessmax.ru

Старый 02.03.2012, 17:11
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
В принципе ваш код выполнится в AS3, но так уже очень давно не пишут. Примерно так делали на заре AS2, хотя подход явно из AS1.
Если вы случайно ошиблись разделом - то я бы перенес. А если нет - то, пожалуй стоит смотреть в сторону класса Timer. setInterval существует, по-сути, только для совместимости.
__________________
Hell is the possibility of sanity

Старый 02.03.2012, 17:52
AlexBob вне форума Посмотреть профиль Отправить личное сообщение для AlexBob Найти все сообщения от AlexBob
  № 4  
Ответить с цитированием
AlexBob

Регистрация: Sep 2011
Сообщений: 18
Вы правы. Теперь задача переделать этот код в код, с использованием класса Timer. Однако как это реализовать, пока нет представления.

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Про класс Timer.

Старый 02.03.2012, 18:43
AlexBob вне форума Посмотреть профиль Отправить личное сообщение для AlexBob Найти все сообщения от AlexBob
  № 6  
Ответить с цитированием
AlexBob

Регистрация: Sep 2011
Сообщений: 18
Теперь функция ppause выглядит так.

Код AS3:
function ppause(secs:Number)
{
	stop();
 
	var myTimer:Timer = new Timer(secs * 1000, 1);
	myTimer.addEventListener(TimerEvent.TIMER, resume);
	myTimer.start();
	function resume(e:TimerEvent)
	{
		play();
		myTimer.removeEventListener(TimerEvent.TIMER, resume);
	} 
}
Однако работает всё по прежнему: при переходе в последний кадр пауза отрабатываетя и запускается Play().

Старый 02.03.2012, 19:02
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 7  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
При нажатии на кнопку:
Код AS3:
myTimer.stop()
myTimer.reset() // на всякий случай

Старый 02.03.2012, 19:45
AlexBob вне форума Посмотреть профиль Отправить личное сообщение для AlexBob Найти все сообщения от AlexBob
  № 8  
Ответить с цитированием
AlexBob

Регистрация: Sep 2011
Сообщений: 18
Спасибо! Работает!

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

Регистрация: Feb 2012
Сообщений: 1,540
Если ты захочешь опять продолжить таймер:
Код AS3:
myTimer.start()
Если ты не хочешь заново начинать таймер, то убери строчку:
Код AS3:
myTimer.reset()

Старый 02.03.2012, 19:59
AlexBob вне форума Посмотреть профиль Отправить личное сообщение для AlexBob Найти все сообщения от AlexBob
  № 10  
Ответить с цитированием
AlexBob

Регистрация: Sep 2011
Сообщений: 18
myTimer.reset() я и не ставил
Только теперь функцию ppause "не видят" другие мувиклипы на сцене. Эта функция только для основного Timeline.
Как её надо объявить, чтобы использовать внутри других мувиклипов сцены?


Последний раз редактировалось AlexBob; 02.03.2012 в 20:09.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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