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

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

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

Регистрация: Nov 2006
Адрес: Karlsruhe
Сообщений: 4
Отправить сообщение для pink monster с помощью ICQ
Question Движение при использовании SetInterval получается скачкообразно=(

У меня такая запарка -
есть функция для передвижения обьекта:
Код:
function l_b(){
	blue._x -=10;
}
и есть функция для прыжка обьекта:
Код:
function jump(){
	up = setInterval(vverx,1);}
	function vverx(){
		blueY = getProperty(blue,_y);
	    if (blueY <= 150){clearInterval(up);down = setInterval(vniz,1);} 
		else
		{blue._y -= 10};
	
	function vniz(){
		blueY = getProperty(blue,_y);
	    if (blueY >= 560){
		clearInterval(down_blue); 
		} 
		else
		{blue._y += 10};
		};
}
Эти фунцкии вызываются из другой, которая проверяет не нажата ли кнопка:
Код:
function Scaner() {

/////////////////////////////BLUE//////////////////////////////////

	if (Key.isDown(Key.LEFT)){
		left();
	}
			  
	if (Key.isDown(Key.UP)) {
	    jump();
	}

//////////////////////--  VI4ESLENIYA KOORDINAT  --///////////////////////////		

	blueX = getProperty(blue,_x);
	redX = getProperty(red,_x);
	
	updateAfterEvent();
}
а та в свою очаредь запускается с помощью SetInterval вот так:
Код:
scan = setInterval(Scaner, 1);
Это конечно работает, но когда одновременно прыгают 2 обьекта и в прыжке еще и двигаются то движения становяться очень скачкообразными=( Видимо ошибка в логике..... подскажите, как этого избежать???

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

Регистрация: Nov 2006
Сообщений: 9
Я бы не баловался с перезапусками интервального таймера а оставил ему функцию позиционирования объектов А что и как подавал бы извне по тем же кнопкам Естественно после отработки заданных воздействий они гасятся функцией отрабатывающей по интервалу Впрочем это проблема с интервальным таймером не только во флэш То же происходит и на Web страницах со скриптами кроме того имеет смысл прыгать не сразу на 10px а с каждым запуском вычитать из заданного нажатием кнопки 2-3 px
а интервал подобрать исходя из желаемого времени прыжка на 10 px

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

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Цитата:
Сообщение от tishkovsergey
Я бы не баловался с перезапусками интервального таймера а оставил ему функцию позиционирования объектов А что и как подавал бы извне по тем же кнопкам Естественно после отработки заданных воздействий они гасятся функцией отрабатывающей по интервалу Впрочем это проблема с интервальным таймером не только во флэш То же происходит и на Web страницах со скриптами кроме того имеет смысл прыгать не сразу на 10px а с каждым запуском вычитать из заданного нажатием кнопки 2-3 px
а интервал подобрать исходя из желаемого времени прыжка на 10 px
Нифига себе, ни одного знака препинания. Уже на третьей строчке я потерял смысл поста...
2 автор
Не знаю что ты там намутил, но вместе установки и сброса интервала после одного вызова, лучше юзать
setTimeout(fnc, 100) - первый аргумент функция, втрой- время через которое она будет вызванаю
А лучше почитай про события.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©


Последний раз редактировалось miramax; 09.11.2006 в 02:52.
Старый 15.11.2006, 06:59
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 4  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Попробуй увеличить интервал -
Код:
scan = setInterval(Scaner, 25);
Возможно, плеер просто не успевает выполнять задачу раз в мсек.

...Да не возможно, а точно - у тебя стоит updateAfterEvent(), то есть по-твоему 1000 раз в секунду картинка должна обновляться. Хороший у тебя монитор.


Последний раз редактировалось Kikasso; 15.11.2006 в 07:06.
Старый 15.11.2006, 15:53
pink monster вне форума Посмотреть профиль Отправить личное сообщение для pink monster Найти все сообщения от pink monster
  № 5  
Ответить с цитированием
pink monster
 
Аватар для pink monster

Регистрация: Nov 2006
Адрес: Karlsruhe
Сообщений: 4
Отправить сообщение для pink monster с помощью ICQ
чет только хуже становиться от увеличения setInterval(). оно в принцепи и понятно. Когда они вместе прыгают, то это получается дольше и скачкообразно=( Наверно как-то конфликтуют 2 setInterval(), запущенные вместе. Я сейчас засек. Например он один прыгает и преземляется за 1,6 секунды, а вдвоем за 2,3 секунды... ааааааааааада что ж такое, пойду побьюсь апстенку

Старый 15.11.2006, 16:05
pink monster вне форума Посмотреть профиль Отправить личное сообщение для pink monster Найти все сообщения от pink monster
  № 6  
Ответить с цитированием
pink monster
 
Аватар для pink monster

Регистрация: Nov 2006
Адрес: Karlsruhe
Сообщений: 4
Отправить сообщение для pink monster с помощью ICQ
я б сщф приложил, для иллюстрации, но как это сделать на этом форуме наглухо непонятно=(

Код:
Ваши права в разделе:
Вы можете прикреплять файлы
.............
Вложить файлы
Разрешенные типы файлов: bmp doc gif jpe jpeg jpg pdf png psd rar txt zip
2miramax
setTimeout() это конечно замечательно, но мне же нужно чтоб прыжек каждый кусочек времени сначала уменьшал _у, а потом увеличивал, ну я почитал про события, там все правильно и логично. Но подобные темы не затрагиваются. Или Бибилия Юзера плохая книжка.......=(

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

Регистрация: Sep 2005
Адрес: Snezhinsk, Russia
Сообщений: 367
Отправить сообщение для firsoff с помощью ICQ Отправить сообщение для firsoff с помощью Skype™
отойди от setIntervala, переключись на onEnterFrame + флаги выполнения, поставь 30 fps и будет тебе счастье или как уже тебе говорили навтыкай updateAfterEvent(), если не возможно fps поменять.

Старый 15.11.2006, 18:02
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
2 pink monster: В разделе ActionScript использование кода c getProperty запрещено, для этого есть раздел для начинающих.

2 tishkovsergey: за кашу без знаков препинания буду наказывать.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
2 iNils: что вы придираетесь к tishkovsergey? Парень честно поставил пробелы между словами, даже где-то большие буквы попадаются, сам видел кто-то тут помнится искал эффект матрицы..

2 автор: как это файлы не вложить?? Там были в списке разрешенных файлов волшебные буквы zip и rar, делаются такие файлы с помощью программ WinZip и WinRar соответственно.

По сути проблемы: по-моему, корень зла в том, что у тебя сажается несколько интервалов одновременно, и все на одну функцию. Вот смотри: у тебя твой scanner проверяет, нажата ли кнопка, и если нажата, вызывает jump. Jump сажает при каждом вызове новый интервал, а очищает его далеко не каждый раз. Чем дольше ты держишь кнопку нажатой, тем больше интервалов сажается, а очищается только последний - все остальные продолжают выполняться. И все это 1000 раз в секунду! У тебя уже компьютер сам должен запрыгать!
Так что либо очищай интервал перед тем как его поставить (хоть бы он и не был поставлен), или пользуй таймауты по совету miramax`a, если у тебя flash 8, а еще лучше, послушай firsoff`a, убери интервалы вообще - ну зачем они тебе? Ставь флажки, вверх - да, прыгаем, вниз - нет, не прыгаем.. Просто и понятно..

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

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

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


 


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


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