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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Jun 2003
Адрес: Москва
Сообщений: 168
По умолчанию не понимаю смысл keyDown и keyUp

люди ни фига не получается
хочу чтобы при нажатии на пробел отрабатывалось действие (tween начиная с определенного фрейма мувика)
а при отпускании действие останавливалось на 1 фрейме

причем, все бы хорошо, только вот если удерживать клавишу пробела, действие зацикливается (рука останавливается на высшей точке (на последнем фрейме), а надо чтоб опустилась в исходное положение

onClipEvent(keyDown){
if (Key.isDown(Key.SPACE)){
gotoAndPlay(2);
}
else {
gotoAndStop(1);

}
}


это неправильный код
перепробовала разные варианты
и Key.isDown(Key.SPACE), и Key.getCode()==Key.SPACE
не помогает

Старый 08.07.2004, 21:14
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 2  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
Я же вроде писал уже?

Код:
onClipEvent(keyDown){
if (Key.isDown(Key.SPACE)){
if(!_root.spacepressed) gotoAndPlay(2);
_root.spacepressed = true;
}
else {
_root.spacepressed = false;
gotoAndStop(1);

}
}
onClipEvent(keyUp){
if (!Key.isDown(Key.SPACE)){
_root.spacepressed = false;
}
}

Старый 08.07.2004, 21:26
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 3  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
можно и без флага
onClipEvent(keyDown){
if (Key.getCode()==Key.SPACE){gotoAndPlay(2);}
}
onClipEvent(keyUp){
if (Key.getCode()==Key.SPACE){gotoAndStop(1);}
}

Старый 08.07.2004, 21:39
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
был не прав : без флага не обойтись

Старый 08.07.2004, 23:11
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 5  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
А мне вот больше нравится так:
Код:
function myOnKeyDown() {
  if (Key.isDown(Key.SPACE))  
	 gotoAndStop (2)
    else gotoAndStop (1);
}

var myListener = {};
myListener.onKeyDown = myOnKeyDown;
Key.addListener( myListener );
__________________
судью - на мыло, из игроков - вить веревки.

Старый 09.07.2004, 00:08
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ну тогда уж
Код:
Key.addListener( k={p:false} );
k.onKeyDown = function() {
  if (Key.getCode(Key.SPACE)&&!this.p) {
	  Key.broadcastMessage("onSpacePressed");
	  this.p=true;
  }
}
this.onKeyUp = function() {
  if (Key.getCode(Key.SPACE)){
	Key.broadcastMessage("onSpaceReleased");
	this.p=false;
  }
}
Key.addListener(this);
this.onSpacePressed=function(){this.gotoAndPlay(2);}
this.onSpaceReleased=function(){this.gotoAndStop(1);}
зы: тока надо ли..

Старый 09.07.2004, 00:33
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 7  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Цитата:
Оригинал написал(а) silin
ну тогда уж
....
зы: тока надо ли..
Прости silin, я и вправду не понял, что ты имеешь в виду. Если уж на то пошло, то использование Listener class - гораздо ближе к стандартам ООП, нежели использование несвязанного обработчика событий. И тем более применения флагов... Ещё дедушка Кнут нас учил, что лишняя переменная - всегда зло, а все события должны инкапсулироваться... Объясни что ты имел в виду, если не сложно...
__________________
судью - на мыло, из игроков - вить веревки.

Старый 09.07.2004, 00:52
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
я отнюдь не против Listener'ов (к слову сказать onClipEvent(keyDown) разве не тоже самое)
но тут дело в том, что надо 'чтобы при нажатии на пробел отрабатывалось действие (tween начиная с определенного фрейма мувика) а при отпускании действие останавливалось на 1 фрейме'
при долгом нажатии на клавишу onKeyDown отработает несколько раз :и как ты это без флага обойдешь?
зы:мой код здесь ни причем (хотя может пригодится если на этот пробел должны будут реагировать много объектов)
это я ,собственно, выпендрился так

Старый 09.07.2004, 01:39
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 9  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Для начала - покаюсь. Невнимательно прочитал первый пост. Вот исправленный код.
Код:
flag = false;
function myOnKeyDown() {
	if (Key.isDown(Key.SPACE)) {
		if (!flag) {
			trace(2);
			flag = !flag;}
		} else {
			trace(1);
		}
	}
function myOnKeyUp(){
	flag = !flag;
}
var myListener = {};
myListener.onKeyDown = myOnKeyDown;
myListener.onKeyUp = myOnKeyUp;
Key.addListener(myListener);
Цитата:
к слову сказать onClipEvent(keyDown) разве не тоже самое
Нет, не тоже, ибе обработчик событий onClipEvent может быть привязан только к мувиклипу. А точнее приаатачен к нему. Такой подход затрудняет навигацию по коду и мешает при разработке больших проектов.

Про "Key.broadcastMessage" я так и подумал, что ты подразумеваешь передачу сообщений нескольким объектам.

ЗЫ надеюсь, без обид
__________________
судью - на мыло, из игроков - вить веревки.

Старый 09.07.2004, 01:53
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 10  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
'обработчик событий onClipEvent может быть привязан только к мувиклипу'
а что мувик нельзя заставить слушать Key (он, что уже не объект)?
логика здесь такая:
раз ты к коду с onClipEvent(keyDown) (пример Елё) хочешь добавить еще один (лишний?) объект, слушающий Key(что-там говорил дедушка Кнут ?),
то пусть он походу хотя бы вещает об этом событии, ну и имеющий уши (т.е. подписаный на Key) да услышит..
тогда его существование будет оправдано, а иначе тоже самое может делать и сам мувик..

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

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

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


 


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


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