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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Oct 2002
Адрес: Minsk, Belarus
Сообщений: 103
Отправить сообщение для Geniot с помощью ICQ
По умолчанию Динамическое изменение interval в setInterval

В общем я все форумы облазил, про setInterval говорили много, но того, что мне надо, я так и не нашёл.
А надо мне следующее: я периодически выполняю функцию с помощью setInterval и хочу изменять параметр interval. Я пробовал динамически создавать эту функцию, а потом clearInterval, но что-то не получается.
(Открою секрет, этой функцией я опускаю кубик в тетрисе и мне нужно резко увеличивать скорость, когда нажимают стрелку вниз, а также изменять скорость в зависимости от уровня.)

Help will be much appreciated. If I ever finish programming this game, I promise to lay out its source code here at flasher.ru

Thanks
__________________
Не всё то флэш, что шевелиться.

Старый 26.12.2002, 19:38
llllllllll вне форума Посмотреть профиль Отправить личное сообщение для llllllllll Найти все сообщения от llllllllll
  № 2  
llllllllll

Регистрация: Feb 2001
Сообщений: 1,893
По умолчанию и что там не получается?

time=1000;
setInterval( function(){ trace(time) }, _root.time );
this.onMouseDown=function(){
time+=100;
}

Старый 26.12.2002, 19:51
Geniot вне форума Посмотреть профиль Отправить личное сообщение для Geniot Посетить домашнюю страницу Geniot Найти все сообщения от Geniot
  № 3  
Geniot

Регистрация: Oct 2002
Адрес: Minsk, Belarus
Сообщений: 103
Отправить сообщение для Geniot с помощью ICQ
По умолчанию Ага, верно, да не верно!

Трейсит-то он нормально, мол, всё окей, тайм увеличили, но ведь трейсит-то он он по-прежнему с той-же скоростью! - 1 раз в секунду, а мне нужно, чтобы динамически скорость можно было увеличивать или уменьшать, а не эту переменную менять.
__________________
Не всё то флэш, что шевелиться.

Старый 26.12.2002, 20:06
llllllllll вне форума Посмотреть профиль Отправить личное сообщение для llllllllll Найти все сообщения от llllllllll
  № 4  
llllllllll

Регистрация: Feb 2001
Сообщений: 1,893
По умолчанию и так не пашет?

id=setInterval( function(){ mc._x++; }, 1000 );
this.onMouseDown=function(){
clearInterval(id);
setInterval( function(){ mc._x++; }, 10 );
}

Старый 26.12.2002, 20:38
Geniot вне форума Посмотреть профиль Отправить личное сообщение для Geniot Посетить домашнюю страницу Geniot Найти все сообщения от Geniot
  № 5  
Geniot

Регистрация: Oct 2002
Адрес: Minsk, Belarus
Сообщений: 103
Отправить сообщение для Geniot с помощью ICQ
По умолчанию Так пашет, но эффективность?

Да, да, конечно, так пашет. Я тоже вчера на таком варианте остановился - отдельная функция для каждой скорости. Выходит мне таких нужно 10: 9 + 1- для падения. Я думал можно как-нибудь покороче.
Спасибо и на этом. До этого я не знал, что var id не обязательно объявлять перед id = setInterval();
__________________
Не всё то флэш, что шевелиться.

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

Регистрация: Feb 2001
Сообщений: 1,893
id нужен чтоб запомнить индивидуальный номер процесса возвращаемый при вызове steInterval, хотя можно и по номерам если не требуется чего-то более сложного:
setInterval(function(){mc1._x++},500);
setInterval(function(){mc2._x++},100);
this.onMouseDown = function(){ clearInterval(1)}
this.onMouseUp = function(){ clearInterval(2)}

Старый 27.12.2002, 03:36
Hirn вне форума Посмотреть профиль Отправить личное сообщение для Hirn Посетить домашнюю страницу Hirn Найти все сообщения от Hirn
  № 7  
Hirn

Регистрация: Jan 2000
Адрес: BRD
Сообщений: 42
В компоненте FListBox используется точно такойже принцип.
Код:
class.clickHandler = function(itmNum) {
	super.clickHandler(itmNum);
	if (this.dragScrolling == undefined && this.scrollBar_mc != undefined) {
		this.dragScrolling = setInterval(this, "dragScroll", 15);   
	};
};
class.dragScroll = function() {
	clearInterval(this.dragScrolling);   
	var yMouse = this.container_mc._ymouse;
	if (yMouse < 0) {
		this.scrollPosition--;
		this.selectionHandler(0);
		this.scrollInterval = Math.max(25, -23.8*(-yMouse) + 500);
		this.dragScrolling = setInterval(this, "dragScroll", this.scrollInterval);   
	} else if (yMouse > this._height) {
		this.scrollPosition++;
		this.selectionHandler(this.numDisplayed - 1);
		this.scrollInterval = Math.max(25, -23.8*Math.abs(yMouse-this._height) + 500);   
		this.dragScrolling = setInterval(this, "dragScroll", this.scrollInterval);
	} else {
		this.dragScrolling = setInterval(this, "dragScroll", 15);  
	};
};
и все работает за милую душу.
__________________
Дааа, не перевелись на Руси богатыри добры-молодцы!!?

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

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

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


 


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


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