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

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

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

Регистрация: May 2013
Сообщений: 8
По умолчанию Анимация персонажа при управлении

Добрый день!

С флешем знакома в общей сложности третьи сутки, учусь по туториалам которые попадаются на ютубе. Задача следующая: при движении персонажа вправо-влево-вверх-вниз включать соответствующую анимацию движения.
Код управления кнопками писался по туториалу управления тупокружочком, остальное - лучшее до чего я смогла дойти самостоятельно, прошерстив других схожих инструкций в количестве.
Проблема: при нажатии клавиш управления анимация включается, но проигрывается только один раз. Плюс есть не очень приятный баг: при одновременном нажатии двух клавиш, например вверх, потом не отпуская влево, персонаж поворачивается влево и продолжает в таком положении двигаться вверх.

Я буду очень благодарна, если случится чудо и какой-нибудь мимо проходящий альтруист поможет мне рецептом или хотя бы даст направление, и я очень прошу воздержаться от советов начать с чего-нибудь попроще.

Код AS3:
package AS {
 
	import flash.display.MovieClip;
	import flash.events.KeyboardEvent;
	import flash.events.Event;
 
 
	public class Hero extends MovieClip {
 
		private var moveUp:Boolean;
		private var moveDown:Boolean;
		private var moveLeft:Boolean;
		private var moveRight:Boolean;
 
		private var moveUpFlag:Boolean;
		private var moveDownFlag:Boolean;
		private var moveLeftFlag:Boolean;
		private var moveRightFlag:Boolean;
 
		private var moveSpeed:uint;
 
		public function Hero() {
			moveUp=false;
			moveRight=false;
			moveLeft=false;
			moveDown=false;
 
			moveSpeed=4;
 
			Constants.stageRef.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedListener);
			Constants.stageRef.addEventListener(KeyboardEvent.KEY_UP, keyReleasedListener);
			Constants.stageRef.addEventListener(Event.ENTER_FRAME, frameListener);
 
		}
 
		private function keyPressedListener(e:KeyboardEvent){
			var key:uint=e.keyCode;
			if(key==87||key==38){//W or UP key
				this.gotoAndPlay("goUp")
				moveUp=true;				
			}else if(key==65||key==37){//A or LEFT key
				this.gotoAndPlay("goLeft")
				moveLeft=true;				
			}else if(key==83||key==40){//S or DOWN key
				this.gotoAndPlay("goDown")
				moveDown=true;				
			}else if(key==68||key==39){//D or RIGHT
				this.gotoAndPlay("goRight")
				moveRight=true;				
			}
 
		}
 
		private function keyReleasedListener(e:KeyboardEvent){
			var key:uint=e.keyCode;
			if(key==87||key==38){//W or UP key
				this.gotoAndStop("goUp")
				moveUp=false;
			}else if(key==65||key==37){//A or LEFT key
				this.gotoAndStop("goLeft")
				moveLeft=false;
			}else if(key==83||key==40){//S or DOWN key	
				this.gotoAndStop("goDown")
				moveDown=false;
			}else if(key==68||key==39){//D or RIGHT
				this.gotoAndStop("goRight")
				moveRight=false;
			}
		}
 
		private function frameListener(e:Event){
			if(moveUp){
				this.y-=moveSpeed;
 
			}else if(moveLeft){
				this.x-=moveSpeed;
 
			}else if(moveDown){
				this.y+=moveSpeed;
 
 
			}else if(moveRight){
				this.x+=moveSpeed;
 
			}
		}
	}
 
}
Вложения
Тип файла: zip AS3 Study.zip (21.1 Кб, 169 просмотров)

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

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

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


 


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


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