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

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

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
По умолчанию Мгновенная реакция объекта.

Подскажите как сделать мгновенный отклик обьекта, к примеру:
пусть то будет сдвиг в лево на нажатие клавиши "Left".

Код:
function move (e:KeyboardEvent):void {    // такой вариант не катит, т.к. обьект заикается.
  switch (e.KeyCode){
    case /*code клавиши.*/ :
    object.x --;
    break;
}


Последний раз редактировалось stweet; 09.09.2010 в 15:47.
Старый 09.09.2010, 16:27
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Event::updateAfterEvent() ?
Увеличить фреймрейт? =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 09.09.2010, 16:29
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 3  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
Код AS3:
addEventListener(KeyboardEvent.KEY_DOWN, startMove);
addEventListener(KeyboardEvent.KEY_UP, stopMove);
 
function startMove (e:KeyboardEvent):void
{ 
  addEventListener(Event.ENTER_FRAME, move);
}
 
function stopMove (e:KeyboardEvent):void
{
   removeEventListener(Event.ENTER_FRAME, move);
}
 
//UPD:
 
function move (e:Event):void
{
    object.x --;
}
__________________
low +


Последний раз редактировалось Jewelz; 09.09.2010 в 16:32.
Старый 09.09.2010, 19:19
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 4  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Jewelz спс.

Добавлено через 8 минут
Но, признаться работает не стабильно =(
Есть ещё какие нибуд варианты?

Добавлено через 13 минут
Можно ли сделать через "Timer"?


Последний раз редактировалось stweet; 09.09.2010 в 19:45.
Старый 09.09.2010, 20:39
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 5  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,723
Что значит не стабильно? Через EnterFrame все нормально работает

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Суть в том что когда жмём влево а после в право и с ново влево, объект на мгновение замирает.

Старый 10.09.2010, 00:29
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 7  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Много раз обсуждалось - по нажатию клавиши ставим флаг, по отпусканию сбрасываем, в enterframe изменяем координаты, если флаг установлен.

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Цитата:
Сообщение от VVall Посмотреть сообщение
Много раз обсуждалось - по нажатию клавиши ставим флаг, по отпусканию сбрасываем, в enterframe изменяем координаты, если флаг установлен.
Вот с флагами я как раз не знаком =( Если не трудно, можно по подробнее?

Старый 10.09.2010, 01:31
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 9  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Флаг - просто переменная, которая будет принимать одно из двух значений (кнопка нажата, кнопка отжата). Логично использовать для неё тип Boolean.

Старый 10.09.2010, 01:44
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 10  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Цитата:
Сообщение от VVall Посмотреть сообщение
Флаг - просто переменная, которая будет принимать одно из двух значений (кнопка нажата, кнопка отжата). Логично использовать для неё тип Boolean.
а, ясно. Просто я ещё не совсем знаком с терминами. Познаю, как говориться, в процессе выполнения простеньких задачек. =)

Добавлено через 47 часов 16 минут
Суть проблемы такова, при активном использование (типа, серия ударов из мортал комбат ультимэйт на сеге) клавиши не отвечают, либо путаются в назначении. Нажимаю: влево, вниз, вверх поочерёдно но быстро, выполняется действие наискосок вниз, влево.

Подскажите пожалуйста, есть ли более эффективная возможность манипулировать объектом или подскажите как улучшить этот код. Заранее, ОЧЕНЬ БУДУ БЛАГОДАРЕН.

Привожу код который использую.

Плюс, ещё хочу добавить "space", в этом коде его нет так как с ним ещё хуже.

Код AS3:
package {
	import flash.display.*;
	import flash.events.*;
	import flash.ui.*;
 
	public class Main extends Sprite {
 
		private var upPress:Boolean;
		private var leftPress:Boolean;
		private var rightPress:Boolean;
		private var downPress:Boolean;
		private var spacePress:Boolean;
 
		public function Main() {
 
			stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDawnListener, false, 0, false);
			stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpListener, false, 0, false);
		}
 
		private function KeyDawnListener (e:KeyboardEvent):void {
 
			if (e.keyCode == Keyboard.UP) {
				upPress = true;
			} else if (e.keyCode == Keyboard.LEFT) {
				leftPress = true;
			} else if (e.keyCode == Keyboard.RIGHT) {
				rightPress = true;
			} else if (e.keyCode == Keyboard.DOWN) {
				downPress = true;
			} else if (e.keyCode == Keyboard.SPACE) {
				spacePress = true;
				trace("spacePress");
			}
 
			if (upPress&&leftPress) {
				trace("upPress leftPress");
 
			} else if (upPress&&rightPress) {
				trace("upPress rightPress");
 
			} else if (downPress&&leftPress) {
				trace("downPress leftPress");
 
			} else if (downPress&&rightPress) {
				trace("downPress rightPress");
 
			} else if (upPress) {
				trace("upPress");
 
			} else if (rightPress) {
				trace("rightPress");
 
			} else if (leftPress) {
				trace("leftPress");
 
			} else if (downPress) {
				trace("downPress");
 
			}
		}
 
		private function KeyUpListener(e:KeyboardEvent):void {
 
			if (e.keyCode == Keyboard.UP) {
				upPress = false;
			} else if (e.keyCode == Keyboard.LEFT) {
				leftPress = false;
			} else if (e.keyCode == Keyboard.RIGHT) {
				rightPress = false;
			} else if (e.keyCode == Keyboard.DOWN) {
				downPress = false;
			} else if (e.keyCode == Keyboard.SPACE) {
				spacePress = false;
			}
		}
	}
}

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

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

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


 


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


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