PDA

Volledige versie bekijken : Keyboard press - Zonder repeat


debiesven
%Europe/Berlin %596 %2010, 14:18
Ik heb momenteel onderstaande code:


stage.addEventListener(KeyboardEvent.KEY_DOWN, speelToets);

function speelToets(e:KeyboardEvent):void{
var mySound:Sound = new mijnGeluid();
mySound.play();
}


Zodra ik een toets ingedrukt houdt, dan wordt het geluid gerepeat. Terwijl ik wil dat het maar 1x te horen is. Waarschijnlijk iets heel simpels maar ik krijg het maar neit gevonden.

Nidd
%Europe/Berlin %604 %2010, 14:29
Hey!


stage.addEventListener(KeyboardEvent.KEY_DOWN, speelToets);

function speelToets(e:KeyboardEvent):void{

e.target.removeEventListener(KeyboardEvent.KEY_DOW N, speelToets);

var mySound:Sound = new mijnGeluid();
mySound.play();
}


Grtz,
Niels.

debiesven
%Europe/Berlin %611 %2010, 14:40
Hey!


stage.addEventListener(KeyboardEvent.KEY_DOWN, speelToets);

function speelToets(e:KeyboardEvent):void{

e.target.removeEventListener(KeyboardEvent.KEY_DOW N, speelToets);

var mySound:Sound = new mijnGeluid();
mySound.play();
}


Grtz,
Niels.

Dan wordt de hele eventlistener weggegooid. Deze moet wel werken als ik 2x op een toets druk, alleen wanneer ik een toets ingedrukt houdt mag het geluid maar 1x afspelen.

eriknoorland
%Europe/Berlin %613 %2010, 14:42
een "afspeel" boolean op false zetten als je hem eenmaal hebt afgespeeld

debiesven
%Europe/Berlin %614 %2010, 14:44
een "afspeel" boolean op false zetten als je hem eenmaal hebt afgespeeld

Maar als je daarna nog een x op de knop drukt dan staat die boolean op false en wordt ie dus niet afgespeeld.

e.l.dam
%Europe/Berlin %616 %2010, 14:47
KEY_DOWN de eventlistener weggooien zoals Niels zegt
KEY_UP listener maken en daar de eventlistener weer toevoegen (van key_down)

debiesven
%Europe/Berlin %620 %2010, 14:53
KEY_DOWN de eventlistener weggooien zoals Niels zegt
KEY_UP listener maken en daar de eventlistener weer toevoegen (van key_down)

Logisch idd! Tnx!

e.l.dam
%Europe/Berlin %620 %2010, 14:54
Ik ben wel eens logisch ;)

debiesven
%Europe/Berlin %430 %2010, 10:19
Nieuw probleem wat hierbij hoort... Wat nou als je een toets indrukt, en je wilt (terwijl je die toets ingedrukt hebt) op de volgende toets drukken?

e.l.dam
%Europe/Berlin %533 %2010, 12:47
var lastPressed:int = -1;

function speelToets(e:KeyboardEvent):void
{
if (e.keyCode == lastPressed) {
// Zelfde toets als laatste keer, dus doe niets?
} else {
lastPressed = e.keyCode;
// Speel bijbehorende geluid af?
}
}

// En dan een key up functie waar je de lastPressed op -1 zet