Volledige versie bekijken : event.keyCode
Celien
%Europe/Berlin %913 %2009, 21:56
ik zit een beetje vast, bij het besturen van mijn snake1 maak ik gebruik van de pijltjes toetsen, dit lukt. met een event.keyCode
Ik pas hetzelfde event toe op andere knoppen nl. "e (keyCode 69)" ; "s(keyCode 83)" ; "d(keyCode 68 " ; "f (keyCode 70)" om mijn snake2 te kunnen laten bewegen en snake2 reageert hier niet op...
if(richting2 == "up2")
{
switch(event.keyCode)
{
case 83:
richting = "right2";
break;
case 70:
richting = "left2";
break;
}
...
}Iemand die het probleem ziet??
alvst bedankt...!
jaspermuts
%Europe/Berlin %923 %2009, 22:09
Misschien iets meer code laten zien? dit is wel echt heel erg weinig (ik zie ook niets van een snake1 of 2)
Celien
%Europe/Berlin %932 %2009, 22:22
Voila:)
var richting:String = "right";
var richting2:String = "right2";
function init():void
{
plaatsSlangOpstage();
plaatsSlangOpStage2();
}
function plaatsSlangOpstage():void
{
// de slang op de stage zetten
// startpunt in het midden laten beginnen
snake = new Snake();
snake.x = stage.stageWidth / 2;
snake.y = stage.stageHeight / 2;
addChild(snake);
snake.addEventListener( Event.ENTER_FRAME, enterFrameHandler);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
}
function plaatsSlangOpStage2():void
{
// de tweede slang op de stage zetten
// het startpunt van de tweede snake op een ander punt laten beginnen dan de andere snake
snake2 = new Snake2();
snake2.x = stage.stageWidth /2 + 30;
snake2.y = stage.stageHeight / 2 + 30;
addChild(snake2);
snake2.addEventListener( Event.ENTER_FRAME, enterFrameHandler2);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler2);
}
function keyDownHandler (event:KeyboardEvent):void
switch(event.keyCode)
{
case 38:
richting = "up";
break;
case 40:
richting = "down";
break;
case 37:
richting = "right";
break;
case 39:
richting = "left";
break;
}
function keyDownHandler2 (event:KeyboardEvent):void
{
switch(event.keyCode)
{
case 69:
richting = "up2";
break;
case 68:
richting = "down2";
break;
case 83:
richting = "right2";
break;
case 70:
richting = "left2";
break;
}
function enterFrameHandler(event:Event):void
{
// de slang laten vooruit bewegen
// doordat hierboven de "richting" telkens kan ik de snelheid van snake.x en snake.y toekennen
switch (richting)
{
case "left":
snake.x += speed;
break;
case "right":
snake.x -= speed;
break;
case "up":
snake.y -= speed;
break;s
case "down":
snake.y += speed;
break;
}
}
function enterFrameHandler2(event:Event):void
{
switch (richting2)
{
case "left2":
snake2.x += speed;
break;
case "right2":
snake2.x -= speed;
break;
case "up2":
snake2.y -= speed;
break;s
case "down2":
snake2.y += speed;
break;
}
}
jaspermuts
%Europe/Berlin %984 %2009, 23:37
1. Waarom 2 losse keyhandlers? (je hebt toch maar 1 toetsenbord...)
2. Het lijkt me nog steeds stug dat dit alle code is.
waar komt 'richting' vandaan, waar worden de keyhandlers aangeroepen/toegewezen, waar zijn de snakes enz enz.
Laat liever teveel code zien dan te weinig!
Celien
%Europe/Berlin %412 %2009, 09:54
meer code toegevoegd aan bovenstaande code!!
zo, mijn eerste slang gaat compleet goed, maar de tweede gaat enkel vooruit. wanneer ik de toetsen e,s,d of f indrukt doet hij niet ( althans als ik op bv "f" indruk dan gebruikt hij de letter in flash zelf om de gradient transform tool te activeren)... snap ni zo goe wat ik fout doe:)
bedankt voor de moeite!
jaspermuts
%Europe/Berlin %951 %2009, 22:49
Ik denk dat je window niet is geselecteerd als Flash al op de 'F' toets reageert, maar voor de zekerheid kun je bij het testen via het menu Control -> Disable Keyboard Shortcuts zorgen dat Flash niet reageert als je aan het testen bent.
Nu, voor je code: als je functies hebt met naam1 en naam2 dan kun je er eigenlijk vanuit gaan dat er iets niet goed is: een functie is herbruikbaar en daar zou je dus geen 2 van nodig moeten hebben.
Maar doordat wel (maar inconsequent) te doen is er een fout: in keyDownHandler2 verander je de waarde van richting, en niet van richting2, daardoor zal richting2 altijd dezelfde richting blijven houden.
function keyDownHandler (event:KeyboardEvent):void
{
switch(event.keyCode)
{
case 38:
richting = "up";
break;
case 40:
richting = "down";
break;
case 37:
richting = "right";
break;
case 39:
richting = "left";
break;
case 69:
richting2 = "up";
break;
case 68:
richting2 = "down";
break;
case 83:
richting2 = "right";
break;
case 70:
richting = "left";
break;
}
}
keyDownHandler2 is dus nergens voor nodig. En daarbij heeft het ook weinig zin om verschil te maken tussen 'left' en 'left2': dat verschil zit er al in door richting en richting2 te gebruiken
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.