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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 20.05.2013, 23:01
Idon'tKnow вне форума Посмотреть профиль Отправить личное сообщение для Idon'tKnow Найти все сообщения от Idon'tKnow
  № 10  
Ответить с цитированием
Idon'tKnow

Регистрация: Apr 2013
Сообщений: 77
Ну суть бага в том, что у Вас в приемнике Фрэйма стоит порядок движения, т.е если у Вас нажата кнопочка, которая раньше зарегистрирована, то это движение из двух, трех, четырех он выберет.

Т.е. Если нажата Вверх и вниз - пойдет вверх, влево и вниз - пойдет влево.
Т.е приоритеты :
1. up
2. left
3. down
4. right

Приоритет определяет направление, чем ниже он - туда и будет двигаться. А почему происходит поворот? Потому что рассылка события заходит в приемник keyPressedListener и делает поворот.

Исправить этот баг - просто, просто нужно обнулять переменные ненужных нам направлений в приемнике:

Код AS3:
private function keyPressedListener(e:KeyboardEvent){
			var key:uint=e.keyCode;
			if(key==87||key==38){//W or UP key
				this.gotoAndPlay("goUp");
				moveUp = true;
				moveRight=false;
				moveDown = false;
				moveLeft=false;
			}else if(key==65||key==37){//A or LEFT key
				this.gotoAndPlay("goLeft");
				moveLeft = true;
				moveUp = false;
				moveRight=false;
				moveDown=false;
			}else if(key==83||key==40){//S or DOWN key
				this.gotoAndPlay("goDown");
				moveDown = true;
				moveUp = false;
				moveRight=false;
				moveLeft=false;
				return;
			}else if(key==68||key==39){//D or RIGHT
				this.gotoAndPlay("goRight");
				moveRight = true;
				moveUp = false;
				moveDown=false;
				moveLeft=false;
			}
 
		}
Если же Вы хотите, чтобы после отпускания одной из двух клавиш Ваш персонаж продолжал движение, то Вам придется завести что-то типа переменной приоритета и менять при получении события, т.е где я менял значения переменных, там обновлять этот приоритет при получении событий, а в приемнике фрейма отталкиваться от значений :
1. Нажата ли кнопочка?
2. Если нажата, то проверять приоритет.

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

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

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


 


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


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