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

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

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

Регистрация: Jun 2004
Сообщений: 83
По умолчанию как остановиться на время в кадре?

Доброго времени дня всем.

Всегда если нужно было выполнить задержку на кадре и по истечению времени выполнить какую либо функцию, использовал такой код

Код AS1/AS2:
var intervalID;
function callback() {
clearInterval(intervalID);
play();
}
intervalID = setInterval(callback, 3500);
stop();
но недавно столкнулся с проблемой, опишу кратко...

есть кадр(обозначим его Pervi) на нем ролик весит некоторое время, по истечению 3500 например как в примере, прыгает на кадр (100) ролика.
при это в кадре (pervi) есть кнопка которая при нажатии перемешает нас на кадр (50) ролика.
проблема в том что если мы нажимаем кнопку и попадаем в кадр 50, то нас через время отправляет в кадр (100) потому что как я понял время отсчета было запущено вместе с загрузкой кадра (pervi)

подскажите как избежать такой не приятной ситуации? что бы по нажатию кнопки, со временем нас не перекидывало в кадр (100)?

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

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
отлавливать нажатие кнопки и, если таймер запущен, останавливать его, или перезапускать - по ситуации

Старый 09.01.2012, 21:47
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Код AS1/AS2:
var to:Number = setTimeout(go100, 3500);
 
btn.onRelease = function() 
{
	clearTimeout(to);
	gotoAndStop(50);
};
 
function go100()
{
  gotoAndStop(100);
}
__________________
Идите первым!

Старый 09.01.2012, 21:48
Bankomat вне форума Посмотреть профиль Отправить личное сообщение для Bankomat Найти все сообщения от Bankomat
  № 4  
Ответить с цитированием
Bankomat

Регистрация: Jun 2004
Сообщений: 83
Код AS1/AS2:
button.onPress = function ()
{
clearInterval(intervalID);
};
сделал так, вроде получил нужный эффект, спасибо



еще такой вопрос, подскажите как мне задать что бы функция
Код AS1/AS2:
gotoAndStop();
переключала меня случайным образом на 3 5 или 6 кадр к примеру?
насколько я понимаю нужно задать некую переменную которая выбирала случайно из набора 3 5 и 6, одно число из них случайно, а потом эту переменную подставить в gotoAndStop

но я не знаю как это осуществить в коде, подскажите..

Добавлено через 1 минуту
Цитата:
Сообщение от mooncar Посмотреть сообщение
Код AS1/AS2:
var to:Number = setTimeout(go100, 3500);
 
btn.onRelease = function() 
{
	clearTimeout(to);
	//...
};
 
function go100()
{
  gotoAndStop(100);
}
извините, когда отвечал не видел вашего поста, безусловна вам так же спасибо за помощь, ради интереса вашим методом обязательно попробую

Старый 09.01.2012, 21:51
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Пожалуйста. Просто не надо использовать setInterval, если нужно только однократное отложенное исполнение.
Это дает setTimeout - по сути то же самое, только нет необходимости делать clear.
__________________
Идите первым!

Старый 09.01.2012, 22:00
Bankomat вне форума Посмотреть профиль Отправить личное сообщение для Bankomat Найти все сообщения от Bankomat
  № 6  
Ответить с цитированием
Bankomat

Регистрация: Jun 2004
Сообщений: 83
Цитата:
Сообщение от mooncar Посмотреть сообщение
Пожалуйста. Просто не надо использовать setInterval, если нужно только однократное отложенное исполнение.
Это дает setTimeout - по сути то же самое, только нет необходимости делать clear.
попробовал вашим способом, все работает, только кроме onRelease написал onPress, а то изза того что я не успеваю отжать мышку, он не запускает clearTimeout(to);

спасибо

Добавлено через 1 минуту
реально ли сделать переход с помощью gotoAndStop в случайный из заданных кадров?

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Допустим, диапазон кадров 1 - 100, тогда
Код AS1/AS2:
var randomFrame:Number = Math.ceil(Math.random() * 100);	
gotoAndStop(randomFrame);
Добавлено через 3 минуты
Допустим, диапазон кадров 60 - 200, тогда

Код AS1/AS2:
var randomFrame:Number = (60 - 1) + Math.ceil(Math.random() * (200 - (60 - 1));	
gotoAndStop(randomFrame);
__________________
Идите первым!


Последний раз редактировалось mooncar; 09.01.2012 в 22:23.
Старый 09.01.2012, 23:06
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 8  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Код AS1/AS2:
var arr:Array = [3,5,6];
var index:Number = int(Math.random() * arr.length());	
gotoAndStop(arr[index]);
__________________
Отряд Котовскага

Старый 09.01.2012, 23:07
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 9  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Для произвольных номеров, т.е. для непоследовательного диапазона кадров:
Код AS1/AS2:
var frames:Array = [3, 5, 8];
var randomFrame:Number = Math.ceil(Math.random() * frames.length);
gotoAndStop(frames[randomFrame -1]);
Пожалуй, так аккуратнее:
Добавлено через 6 минут
Код AS1/AS2:
var frames:Array = [3, 5, 8];
var randomFrame:Number = Math.floor(Math.random() * frames.length);
gotoAndStop(frames[randomFrame]);
__________________
Идите первым!


Последний раз редактировалось mooncar; 09.01.2012 в 23:13.
Старый 09.01.2012, 23:16
Bankomat вне форума Посмотреть профиль Отправить личное сообщение для Bankomat Найти все сообщения от Bankomat
  № 10  
Ответить с цитированием
Bankomat

Регистрация: Jun 2004
Сообщений: 83
всем спасибо все работает=) всем +

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

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

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


 


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


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