Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Listener (http://www.flasher.ru/forum/showthread.php?t=56667)

Vovchello 05.04.2004 22:31

Listener
 
Kak sdelat' tak 4tob 2 (naprimer) objecta upravljalis' s klaviaturi nezavisimo?
Sdelal 2 Listenera 1 k kagdomu objectu, no dvigajutsja objecti vse ravno po otdelnosti. Est' li vozmognost raboti s bufferom klaviaturi?
MOget ja esche 4ego-to ne dogonjau i Listener voobsche ne nugen?
Pasibo vsem...

silin 05.04.2004 22:48

Key.addListener(kl={});
kl.onKeyDown=function(){
switch(Key.getCode()){
case 49 : //действия по клавише('1') для mc1
mc1._x+=10;
break;
case 50 : //действия по другой клавише('2') для другого мувика
mc2._x+=10;
break;
//и так далее в том же духе
}
}

Vovchello 07.04.2004 22:03

K sogaleniu ento ne rabotaet.... pri uderganii 2-x dlja raznix MC dvigaetsja tolko 1 object
Proboval delat dlja kagdogo objecta odelnii Listener no effect totge...vernne nikagogo effecta.
Moget ja туплю?

Flasham 08.04.2004 12:11

Привет!

Для того что бы обрабатывались одновременное нажатие клавиш, сделай след. образом. При нажатии на клавишу устанавливай некий флаг в тру, а на мувике, напр. в ентерфрейм, стоит проверка на этот флаг и соотв. событие. Для обратного изменения делай листенер на кейУп.

удачи

silin 08.04.2004 18:52

Цитата:

pri uderganii 2-x dlja raznix MC dvigaetsja tolko 1 object
для такого расклада придется либо как Flasham предлагает флаги отслеживать , либо назначать обработчики мувикам по нажатию определенных клавиш и удалять при отпускании
пример:
Key.addListener(kl={});
kl.onKeyDown=function(){
var k=Key.getCode();
if(k==49)mc1.onEnterFrame=function(){this._x+=10};
if(k==50)mc2.onEnterFrame=function(){this._x+=10};
}
kl.onKeyUp=function(){
var k=Key.getCode();
if(k==49)delete mc1.onEnterFrame;
if(k==50)delete mc2.onEnterFrame;
}

Vovchello 08.04.2004 19:26

Rebjat, ja vot tut gljanul odin isxodnik (kak govoritsja ..vse poznaetsja v sravnenii) i tam prostoja function dlja ka*dogo objecta

function fKeyDown(){
if (Key.isDown(68)) {
_root.mc._x += d;
}
if (Key.isDown(65)) {
_root.mc._x -= d;
}
if (Key.isDown(87)) {
_root.mc._y -= d;
}
if (Key.isDown(83)) {
_root.mc._y += d;
}
}
i vse rulit kak v skaske. Ja delal function s switch() & case (po-moemu ento izjaschnee... i kone4no bistree) no objecti, padla, dvigalis' tolko po o4eredi:

function fKeyDown(){
switch (Key.getCode()){
case 68:
_root.mc._y -= d;
break;
case 65:
_root.mc._y += d;
break;
case 87:
_root.mc._x -= d;
break;
case 83:
_root.mc._x += d;
break;
}
}

Ne poimu v 4em delo... 2-oi variant i bistree i krasivshe, no sobaka ne rabotaet kak dol*no. Kto mo*et skazat v 4em xren'?

silin 08.04.2004 20:01

потому что по break обработка switch прерывается и реакции на следующие клавиши нет

Dindin 09.04.2004 10:24

Кстати, исключенние из порядка обработки switch'а команды break; один из вариантов условия or:

switch (Key.getCode()){
case 68:
_root.mc._y -= d;
case 65:
_root.mc._y += d;
case 87:
_root.mc._x -= d;
case 83:
_root.mc._x += d;

выполнит все проверки

silin 09.04.2004 19:27

Цитата:

выполнит все проверки
а заодно и все действия после первой удачной проверки

Dindin 09.04.2004 19:34

Так точно :)


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

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