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

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

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

Регистрация: Aug 2007
Сообщений: 29
Arrow Странные, не заданные задержки в скрипте

Есть скрипт:

Код:
function moveDown(movieRef, align) {
	if (movieRef._y != align) {
		movieRef._y = movieRef._y+1;
		updateAfterEvent();
	} else {
		break;
	}
}

function moveUp(movieRef, align) {
	if (movieRef._y != align) {
		movieRef._y = movieRef._y-1;
		updateAfterEvent();
	} else {
		break;
	}
}

i = 1;
k = 1;

spring.onPress = function() {
	i = i+1;
	k = Math.floor(i/2);
	if (i/k == 2) {
		clearInterval(sumInterval);
		clearInterval(autInterval);
		autInterval = setInterval(moveDown, 1, autumn, 170);
		sumInterval = setInterval(moveDown, 1, summer, 150);
		trace("раз");
	}
	if (i/k != 2) {
		clearInterval(sumInterval);
		clearInterval(autInterval);
		autInterval = setInterval(moveUp, 1, autumn, 40);
		sumInterval = setInterval(moveUp, 1, summer, 20);
		trace("два");
	}
};
Он начинает срабатывать сразу, но не так как должен. То, что в нем написано выполняется только где то через 3-4 секунды (проверил с помощью getSeconds). Это зависит и от количества нажатий, вот что странно. Могу предполагать, что это зависит от параметров компа, но ведь тогда скрипт не выполнялся бы вообще. Вобщем происходит что-то странное. Посмотрите исходник и сразу все поймете, но перед компиляцией исходника прочтите до конца.

Нажав по кнопке ВЕСНА 2007 ЛЕТО и ОСЕНЬ поедут вниз без остановки. Надо сразу нажать снова на ВЕСНУ - ЛЕТО и ОСЕНЬ поедут наверх. И только через 4-5 нажатий все будет так как и должно быть - ЛЕТО и ОСЕНЬ будут останавливаться на той координате, кот. указана в скрипте, до того они гуляют от минус до плюс бесконечности.

Все станет предельно ясно и не будет требовать дополнительных разъяснений когда скачаете исходник.

Кто может объяснить в чем дело? Ошибок в скрипте вроде нет...
Вложения
Тип файла: rar mistery.rar (5.4 Кб, 46 просмотров)

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Ну нафига задавать интервал в 1 мс? Да еще и писать updateAfterEvent после этого. У вас монитор 1000 герц держит?

Старый 22.08.2007, 00:01
Optimist вне форума Посмотреть профиль Отправить личное сообщение для Optimist Найти все сообщения от Optimist
  № 3  
Ответить с цитированием
Optimist

Регистрация: Aug 2007
Сообщений: 29
Ну а даже если 10 мс... Все равно все тоже. Сути скрипта то это не изменит. А без апдейтафтеривент движение слишком дискретно.

Старый 22.08.2007, 01:55
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Это очень маленькие интервалы, нет никакого смысла в них. Читайте хелп, там написано, что интервал зависит от частоты кадров и от многих других кадров и не является точным средством выполнения кода в заданные промежутки времени, особенно в такие.

Старый 22.08.2007, 02:56
Optimist вне форума Посмотреть профиль Отправить личное сообщение для Optimist Найти все сообщения от Optimist
  № 5  
Ответить с цитированием
Optimist

Регистрация: Aug 2007
Сообщений: 29
Вы имеете в виду, что интервалы должны быть больше? Даже если поставить 100 мс при достаточном фпс все равно скрипт не работает нормально...

Судя по всему ни у кого нет предложений как исправить ошибку? Неужели придется разбивать движение объектов по кадрам?
Может тогда кто нибудь может сказать как по-иному программно выполнить стоящую передомной задачу?

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Зачем там стоит break? Это совсем из другй оперы.
Код:
if (movieRef._y != align)
замените на
Код:
if (movieRef._y > align)
( и меньше соотверственно ), на else координату приравняйте к конечной, интервал поставьте xотя бы 20, а смещение увеличьте. Ну еще можно Tween заюзать для таких дел, очень удобно(см. хелп по компонентам).

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

Регистрация: Apr 2007
Сообщений: 1,369
Вот исправил тебе тут:
http://khk.com.ua/un-mistery.rar

Старый 22.08.2007, 15:40
Optimist вне форума Посмотреть профиль Отправить личное сообщение для Optimist Найти все сообщения от Optimist
  № 8  
Ответить с цитированием
Optimist

Регистрация: Aug 2007
Сообщений: 29
Огромное спасибо. Все так как должно быть.

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

Регистрация: Apr 2007
Сообщений: 1,369
Тока там надо, цикл сделать для того что бы не присваивать каждой кнопе функцию, циклом надо это сделать...вчера до 3:30, никак не мог пянть, как её написать (мозги не работали)...если будет время кину тебе ссылку с более универсальным кодом.

Старый 22.08.2007, 15:49
Optimist вне форума Посмотреть профиль Отправить личное сообщение для Optimist Найти все сообщения от Optimist
  № 10  
Ответить с цитированием
Optimist

Регистрация: Aug 2007
Сообщений: 29
ок. Будет отлично) Хотя и так все работает хорошо. Можешь не заморачиваться)

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

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

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


 


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


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