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

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

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

Регистрация: Jul 2011
Сообщений: 3
По умолчанию Простое движение с клавиатуры.

Подскажите такую вещь, пытаюсь сделать простое движение объекта с клавиатуры:

Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
var speed:Number = 10;
function keyPressed(evt:KeyboardEvent):void {
	if (evt.keyCode == 39) {
	this.hero.x += speed;
	}
	if (evt.keyCode == 37) {
		this.hero.x -= speed;
	}
}
Если нажать и держать клавишу Объект сначала делает 1 шаг на величину speed, останавливается, затем движется как надо.

в AS2 делал аналогичное движение вот так:
Код AS1/AS2:
if (Key.isDown(Key.Right)) {
_x += speed;
}
if (Key.isDown(Key.DOWN)) {
_x -= speed;
}
Все работало замечательно, объект сразу двигался в нужном направлении без остановки. Как победить эту остановку в AS3?

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
В as2 вы подписывались на EnterFrame верно? А в as3 уже не подписываетесь.

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

Регистрация: Jul 2011
Сообщений: 2
Код AS1/AS2:
package 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
 
	public class Hero extends MovieClip
	{
		public var step = 5; // скорость перемещения
 
		var leftPressed:Boolean;
		var rightPressed:Boolean;
 
		public function Hero()
		{
			if (stage)
			{
				ON_INIT();
			}
			else
			{
				addEventListener(Event.ADDED_TO_STAGE, ON_INIT);
			}
		}
 
		public function ON_INIT(event:Event = null)
		{
			removeEventListener(Event.ADDED_TO_STAGE, ON_INIT);
 
			stage.addEventListener(Event.ENTER_FRAME, ON_ENTER_FRAME);
			stage.addEventListener(KeyboardEvent.KEY_DOWN, ON_KEY_DOWN);
			stage.addEventListener(KeyboardEvent.KEY_UP, ON_KEY_UP);
		}
 
		public function ON_ENTER_FRAME(e:Event)
		{
			if (leftPressed)
			{
				this.x -= step;
			}
			else if (rightPressed)
			{
				this.x += step;
			}
		}
 
		public function ON_KEY_DOWN(e:KeyboardEvent)
		{
			if (e.keyCode==37)
			{
				leftPressed=true;
			} 
			else if (e.keyCode==39)
			{
				rightPressed=true;
			}
		}
 
		public function ON_KEY_UP(e:KeyboardEvent)
		{
			if (e.keyCode==37)
			{
				leftPressed=false;
			} 
			else if (e.keyCode==39)
			{
				rightPressed=false;
			}
		}	
	}
}

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

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

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


 


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


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