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

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

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

Регистрация: May 2012
Сообщений: 2
Question Программное движение

Здравствуйте!

Решил написать простенькую игру. Код ниже отвечает за движение объекта mc вправо. При зажиме клавиши Вправо объект mc передвигается вправо на 10 пикселей, далее следует небольшая задержка, потом объект начинает двигаться нормально. Можно ли как-то ускорить процесс?





Код AS3:
stop();
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKD);
 
function onKD(e:KeyboardEvent):void
{
 
	if(e.keyCode == 39)
	{
	mc.x = mc.x + 10;
	}
 
}

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
В обработчике события нажатия на клавишу меняйте значения moveX и moveY на -1 и 1 (в зависимости от направления движения). В обработчике события отжатия клавиш - обнуляйте значения. В обработчике ENTER_FRAME проверяйте эти значения и, например, координату x меняйте таким образом: mc.x = moveX * moveSpeed.
__________________
hauts.ru

Старый 12.05.2012, 20:03
Quatro0 вне форума Посмотреть профиль Отправить личное сообщение для Quatro0 Найти все сообщения от Quatro0
  № 3  
Ответить с цитированием
Quatro0

Регистрация: May 2012
Сообщений: 2
Честно говоря, я ничего не понял из того что Вы сказали, но благодаря Вам удалось осуществить что-то похожее)


Код AS1/AS2:
stop();
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKD);
stage.addEventListener(KeyboardEvent.KEY_UP, onKU);
addEventListener(Event.ENTER_FRAME, onFr);
 
 
var moveX:Number = 0;
function onFr(e:Event):void
{
	if(moveX==1)
	{
		mc.x= mc.x + 10;;
	}
}
 
 
 
 
function onKD(e:KeyboardEvent):void
{
 
 
	if(e.keyCode == 39)
	{
        moveX = 1;
	mc.x = mc.x + 1;;
	mc.gotoAndStop(2);
 
 
	}
 
}
 
 
function onKU(e:KeyboardEvent):void
{
	mc.gotoAndStop(1);
	moveX = 0;
}
Добавлено через 2 часа 7 минут


Последний раз редактировалось Quatro0; 12.05.2012 в 22:49.
Старый 13.05.2012, 00:37
Владимир Буквин вне форума Посмотреть профиль Отправить личное сообщение для Владимир Буквин Найти все сообщения от Владимир Буквин
  № 4  
Ответить с цитированием
Владимир Буквин
 
Аватар для Владимир Буквин

Регистрация: Aug 2011
Сообщений: 103
Можно - надо передвигать по таймеру! - при зажиме клавиши запустить таймер, и каждую единицу времени увеличивать или уменьшать значение икс.
То, что происходит задержка - это не flash виноват - это клавиатура так настроена - так и должно быть.
сначала набирается символ, затем после задержки дублируется, если клавиша не отпущена.

Старый 13.05.2012, 16:08
Monade 2 вне форума Посмотреть профиль Отправить личное сообщение для Monade 2 Найти все сообщения от Monade 2
  № 5  
Ответить с цитированием
Monade 2
 
Аватар для Monade 2

Регистрация: Apr 2011
Сообщений: 38
я по-другому делал. вешаем два обработчика события KeyboardEvent.KEY_DOWN и KeyboardEvent.KEY_UP на соотв. функции, и по коду нажатой (или отжатой) клавиши меняем соответствующее значение массива или объекта, в зависимости от реализации. а третья функция запускается когда надо выяснить состояние кнопок игрока - по ENTER_FRAME например. и возвращает состояния кнопок (тот самый массив)

Старый 13.05.2012, 17:17
Владимир Буквин вне форума Посмотреть профиль Отправить личное сообщение для Владимир Буквин Найти все сообщения от Владимир Буквин
  № 6  
Ответить с цитированием
Владимир Буквин
 
Аватар для Владимир Буквин

Регистрация: Aug 2011
Сообщений: 103
да -повесить слушатель на событие
Код AS3:
Event.ENTER_FRAME
это хорошая замена таймеру

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

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

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


 


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


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