|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Движение при использовании SetInterval получается скачкообразно=(
У меня такая запарка -
есть функция для передвижения обьекта: и есть функция для прыжка обьекта: 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(); } Это конечно работает, но когда одновременно прыгают 2 обьекта и в прыжке еще и двигаются то движения становяться очень скачкообразными=( Видимо ошибка в логике..... подскажите, как этого избежать??? |
|
|||||
Регистрация: Nov 2006
Сообщений: 9
|
Я бы не баловался с перезапусками интервального таймера а оставил ему функцию позиционирования объектов А что и как подавал бы извне по тем же кнопкам Естественно после отработки заданных воздействий они гасятся функцией отрабатывающей по интервалу Впрочем это проблема с интервальным таймером не только во флэш То же происходит и на Web страницах со скриптами кроме того имеет смысл прыгать не сразу на 10px а с каждым запуском вычитать из заданного нажатием кнопки 2-3 px
а интервал подобрать исходя из желаемого времени прыжка на 10 px |
|
|||||
Цитата:
2 автор Не знаю что ты там намутил, но вместе установки и сброса интервала после одного вызова, лучше юзать setTimeout(fnc, 100) - первый аргумент функция, втрой- время через которое она будет вызванаю А лучше почитай про события. Последний раз редактировалось miramax; 09.11.2006 в 02:52. |
|
|||||
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Попробуй увеличить интервал -
Возможно, плеер просто не успевает выполнять задачу раз в мсек.
...Да не возможно, а точно - у тебя стоит updateAfterEvent(), то есть по-твоему 1000 раз в секунду картинка должна обновляться. Хороший у тебя монитор. Последний раз редактировалось Kikasso; 15.11.2006 в 07:06. |
|
|||||
чет только хуже становиться от увеличения setInterval(). оно в принцепи и понятно. Когда они вместе прыгают, то это получается дольше и скачкообразно=( Наверно как-то конфликтуют 2 setInterval(), запущенные вместе. Я сейчас засек. Например он один прыгает и преземляется за 1,6 секунды, а вдвоем за 2,3 секунды... ааааааааааада что ж такое, пойду побьюсь апстенку
|
|
|||||
я б сщф приложил, для иллюстрации, но как это сделать на этом форуме наглухо непонятно=(
Ваши права в разделе: Вы можете прикреплять файлы ............. Вложить файлы Разрешенные типы файлов: bmp doc gif jpe jpeg jpg pdf png psd rar txt zip setTimeout() это конечно замечательно, но мне же нужно чтоб прыжек каждый кусочек времени сначала уменьшал _у, а потом увеличивал, ну я почитал про события, там все правильно и логично. Но подобные темы не затрагиваются. Или Бибилия Юзера плохая книжка.......=( |
|
|||||
отойди от setIntervala, переключись на onEnterFrame + флаги выполнения, поставь 30 fps и будет тебе счастье или как уже тебе говорили навтыкай updateAfterEvent(), если не возможно fps поменять.
|
|
|||||
Регистрация: 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, время: 20:38. |
|
« Предыдущая тема | Следующая тема » |
|
|