Просмотр полной версии : Listener
Vovchello
05.04.2004, 22:31
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...
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 туплю?
Привет!
Для того что бы обрабатывались одновременное нажатие клавиш, сделай след. образом. При нажатии на клавишу устанавливай некий флаг в тру, а на мувике, напр. в ентерфрейм, стоит проверка на этот флаг и соотв. событие. Для обратного изменения делай листенер на кейУп.
удачи
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'?
потому что по break обработка switch прерывается и реакции на следующие клавиши нет
Кстати, исключенние из порядка обработки 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;
выполнит все проверки
выполнит все проверки
а заодно и все действия после первой удачной проверки
Vovchello
15.04.2004, 22:27
Ni xrena ne polu4aetsja..... i voobsche ne dol*no ento po-moemu pomo4", ibo esli ubrat "break" to prosto-naprosto budut proverjatsja sledujuschie "case".. i vse.
A po4emu variant s "if" rabotaet korrektno, a s "case" net... ja is4o ne ponjal. Podska*ite 4e-nibud'.... a to u menja u*e golova bolit...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.