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

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

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

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
По умолчанию Проблема с обработкой или просто глюк? (перехват события)

Здравствуйте уважаемые flasher'ы...
Натолкнулся на такую проблему... пишется игра (просто чтобы руку набить) типа pacman'а... так вот при перехвате события нажатия на стрелки если в обработчике прописать trace("!") то этих знаков при коротком одном нажатии выводится несколько...
Все бы оно ничего, да вот если нажать одновременно на две стрелки, происходит нечто невообразимое... В конкретном случае (упрощенном)
Код:
function myOnKeyDown() {
	if (Key.isDown(Key.LEFT)) {
			_root.player_mc._x-=20;
	}
	if (Key.isDown(Key.RIGHT)) {
			_root.player_mc._x+=20;
	}
	if (Key.isDown(Key.UP)) {
			_root.player_mc._y-=20;
	}
	if (Key.isDown(Key.DOWN)) {
			_root.player_mc._y+=20;
	}
}
символ игрока (player_mc) соответственно получает координаты типа 428, 543...
Собственно вопрос: ПОЧЕМУ?
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

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

Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
Код:
var keyListener:Object = new Object();
keyListener.onKeyDown = myOnKeyDown;
keyListener.onKeyUp = myOnKeyUp;
Key.addListener(keyListener);

function myOnKeyDown(){
	trace( Key.isDown(Key.LEFT) );
}
function myOnKeyUp(){
	
}
да вроде все нормально при коротком нажатии. Просто корректно обрабатывайте нужную вам ситуацию, если необходимо - ставьте флаг - такая то клавиша нажата и флаг false - делаем действие, флаг true, отжата - false.

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

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
вы не поняли... у меня проблема не с перехватом события, а с тем, что свойства _x и _y получают приращения неправильные... (а вернее слишком большие) и зря переместили тему, я не новичек, и эта проблема мне кажется актуальной и для проф
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 10.01.2007, 13:42
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Вопрос о переносе темы решают модераторы.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 10.01.2007, 13:48
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Клавиатура у тебя глючит
Или у тебя этот обработчик подписан несколько раз.

Старый 10.01.2007, 13:54
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Key.isDown(Key.LEFT) и Key.isDown(Key.RIGHT) взаимоисключающие. Должна работать, толька та клавиша, которая была нажата последней. А у вас Key.RIGHT всегда нейтролизует действие Key.LEFT при одновременном нажатии.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 10.01.2007, 14:42
divinus вне форума Посмотреть профиль Отправить личное сообщение для divinus Найти все сообщения от divinus
  № 7  
Ответить с цитированием
divinus
 
Аватар для divinus

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
iNils, это понятно, но если проблема в этом, как это исправить? с помощью флагов не работает... кста, наткнулся на еще одну проблему... из
Код:
if (Key.isDown(Key.LEFT)) {
			>>()<<
	}
- не вызываются сторонние функции... например :
Код:
function traceIt(){
        trace("!");
}
......
if (Key.isDown(Key.LEFT)) {
			traceIt();
	}
не работает...
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 10.01.2007, 17:09
vic_ вне форума Посмотреть профиль Отправить личное сообщение для vic_ Посетить домашнюю страницу vic_ Найти все сообщения от vic_
  № 8  
Ответить с цитированием
vic_
 
Аватар для vic_

Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
Код:
import mx.utils.Delegate
var keyListener:Object = new Object();
keyListener.onKeyDown = Delegate.create(this,myOnKeyDown);
keyListener.onKeyUp = Delegate.create(this,myOnKeyUp);
Key.addListener(keyListener);

function myOnKeyDown(){
	if( Key.isDown(Key.LEFT) )testIt();
}
function myOnKeyUp(){}

function testIt(){
	trace("test");
}
а так?

Старый 10.01.2007, 17:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
vic_, извращенец?
Код:
Key.addListener(this);

function onKeyDown(){
	if( Key.isDown(Key.LEFT) )testIt();
}
function onKeyUp(){}

function testIt(){
	trace("test");
}
Только если, конечно, обозвать функцию по-другому не надо…


Последний раз редактировалось etc; 10.01.2007 в 17:17.
Старый 10.01.2007, 17:23
vic_ вне форума Посмотреть профиль Отправить личное сообщение для vic_ Посетить домашнюю страницу vic_ Найти все сообщения от vic_
  № 10  
Ответить с цитированием
vic_
 
Аватар для vic_

Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
упс, пардон, не подумал

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

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

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


 


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


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