PDA

Volledige versie bekijken : key finder action script


vegeto
%Europe/Berlin %428 %2005, 11:17
ik heb deze code is een keer ergens gevonden maar ik snap niet hoe het werkt (en dat trace snap ik echt niks van zijn werking ) kan iemand mij uit leggen hoe het werkt en mechien ook hoe je het moet gebruiken

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
trace("Key code is: "+Key.getCode());
};
Key.addListener(keyListener);

Dauntless
%Europe/Berlin %432 %2005, 11:22
Sure... Het gaat om het gebruik van listeners.

//eerst een nieuw object aanmaken waaraan je de listener gaat hangen (willekeurig object)
var keyListener:Object = new Object();
//dan de method 'onKeyDown'. Deze zal (na het toevoegen van de listener) worden uitgevoerd wanneer er een toets wordt gedrukt
keyListener.onKeyDown = function() {
//deze trace laat wat tussen de haakjes staat zien in het output panel bij het testen.
//hier laat hij dus zien: "Key code is: +[code van de key in flash] "
trace("Key code is: "+Key.getCode());
};
//en dan aan de Key (class? :s) een listener toevoegen met argument het object dat je wilt gebruiken om de toetsen op te vangen
Key.addListener(keyListener);

Dit (http://flashfocus.nl/forum/showthread.php?t=284) is ook nog een uitleg over listeners + voorbeelden.

vegeto
%Europe/Berlin %462 %2005, 12:05
als ik het goed begrijp moet je dus een text veld maken en de instansename new Object geven ok begrijp ik het verkeerd

TjOeNeR
%Europe/Berlin %466 %2005, 12:11
als je alleen een textveld wilt, maak je een nieuw textfield, en zet je deze op input text.
Dan trek je er een kadertje rond (of je klikt op "show border around text") en voila.
Nog een naam geven en je kunt de text eruit halen met "naam.text"
Dat is alles :)

Dauntless
%Europe/Berlin %469 %2005, 12:16
als je alleen een textveld wilt, maak je een nieuw textfield, en zet je deze op input text.
Dan trek je er een kadertje rond (of je klikt op "show border around text") en voila.
Nog een naam geven en je kunt de text eruit halen met "naam.text"
Dat is alles :)
Da's wel waar, maar daar gaat het niet om :D

Als je wilt dat de uitkomst in een tekstvak komt moet je de trace regel vervangen door:
instanceNaamVanTextField.text = Key.getCode();

vegeto
%Europe/Berlin %469 %2005, 12:16
als deze code aleen dat doet denk ik dat ik de verkeerde heb

weet iemand een code dat als je 1 knop drukt dat ie in de textveld komt te staan want ik ben een spel aan het maken met 4 knoppen om te bewegen dus ik will dat je je eigen knopen kan kiezen zoom betje als deze spel

http://jhunour.nease.net/gameworkshop/contra/contrasnow.html

TjOeNeR
%Europe/Berlin %473 %2005, 12:21
dat met die listeners enzo dat is goed als je een flashgame aan het maken bent die via het toetsenbord bediend word.

Als je wilt dat de uitkomst in een tekstvak komt moet je de trace regel vervangen door:
instanceNaamVanTextField.text = Key.getCode();


Dat werkt niet hoor volgens mij, Key.getCode() geeft een nummer terug, dat de waarde van de laatst ingedrukte toets voorstelt.

Je bent dus een flashgame aan het maken mmm.
je moet die knoppe gaan binden aan variabelen en dan met listeners enzo kijken of die knoppen ingedrukt worden. Ik weet daar niet de juiste code voor, maar die lijkt mij niet zo moeilijk hoor.
In flash anders eens naar de help gaan kijken=>Actionscript Reference=>Key class

Dauntless
%Europe/Berlin %476 %2005, 12:26
Dan moet je zelf een lijst maken met alle toetsen. De letters A tot Z zijn ook oplopend van nummer en je kan ze dus bv allemaal in een array zetten, dan zoeken welke letter het is (er van uit gaande dat 65 is (dus Key.getCode()-65) en dat getal uit de array halen.

Dauntless
%Europe/Berlin %477 %2005, 12:27
dat met die listeners enzo dat is goed als je een flashgame aan het maken bent die via het toetsenbord bediend word.



Dat werkt niet hoor volgens mij, Key.getCode() geeft een nummer terug, dat de waarde van de laatst ingedrukte toets voorstelt.
Inderdaad, en ik zeg toch ook dat hij dat doet ;). Het is pas na die post dat hij zegt dat hij de eigenlijke letter (a, b, c, ...) in het textvak wilt. Daarvoor had hij het gewoon altijd over de keyCode en die gaf ik hem. :)

vegeto
%Europe/Berlin %477 %2005, 12:27
is het ook mogelijk du nummer van een knop uit een txt bestand te halen ???

Dauntless
%Europe/Berlin %478 %2005, 12:28
is het ook mogelijk du nummer van een knop uit een txt bestand te halen ???
Sure, kijk even de tutorials eropna m.b.t. het laden van variabelen uit een txt bestand. Zorg er wel voor dat je ze cast naar Numbers (als je ze inlaad zijn het strings.) (Number("5");)

vegeto
%Europe/Berlin %480 %2005, 12:31
ik weet hoe je text uit een txt bestand moet halen en in een text veld laten zien meer nu dat hij heet als een key ziet

Dauntless
%Europe/Berlin %482 %2005, 12:35
//een ingelade var, bv 32 (spatie)
var springen = 32;
//nog een ingelade var, bv 40 (pijltje naar beneden)
var bukken = 40;

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
if(Key.getCode() == springen){
//actie om te springen...
} else if (Key.getCode() == bukken){
//actie om te bukken
}
};
Key.addListener(keyListener);

TjOeNeR
%Europe/Berlin %485 %2005, 12:39
Key.SPACE en Key.DOWN zijn toch al vaste toetsen ;)

Dauntless
%Europe/Berlin %487 %2005, 12:42
Key.SPACE en Key.DOWN zijn toch al vaste toetsen ;)
Ga jij maar eens "Key.SPACE" (String) omzetten naar een property van de Key class...
Het is dan veel handiger om zowieso met numbers te werken.

TjOeNeR
%Europe/Berlin %489 %2005, 12:44
juist, hij moest ze zelf kunnen aanpassen in de "opties" van zen game

ff erover gezien :s

vegeto
%Europe/Berlin %491 %2005, 12:47
als ik nu een een txt bestand genaamd key de text &40 geef en dan in de eerste farme de code loadText.load("key.txt"); en de 40 de var is maar ik krijg het niet voor mekaar om de key code te gebruiken

Dauntless
%Europe/Berlin %492 %2005, 12:49
In je text bestand zal eerder iets moeten staan:
&springen=40&
En dat kan je dan dmv loadVars inladen.

(Wat is LoadText??)

vegeto
%Europe/Berlin %493 %2005, 12:51
loadText = new LoadVars();
loadText.load("atack.txt");
loadText.onLoad = function() {
at1.text = this.at1;
at2.text = this.at2;
at3.text = this.at3;
at4.text = this.at4;
at5.text = this.at5;
at6.text = this.at6;
at7.text = this.at7;
};


het werkte dus ik klaag niet ik had het uit de help file van flash gehaald

Dauntless
%Europe/Berlin %494 %2005, 12:52
Ik kon/kan niet weten dat 'loadText' een door jouw aangemaakt LoadVars object was/is hé ;)

vegeto
%Europe/Berlin %654 %2005, 16:42
ik denk dat het zo ongeverr moet zijn maar kan iemand mij een voorbeeld kunnen geven van hoe ik dand de target_mc heen en weer kan laten gaan van een code uit een key.txt bestand


loadVariables("key.txt", target_mc);
function () {}

ik heb hier een beweeg script maar ik weet niet hoe het er uit moet zien als je de code van de keu uit een txt moet halen


var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
switch (Key.getCode()) {
case Key.LEFT :
car_mc._x -= 10;
break;
case Key.RIGHT :
car_mc._x += 10;
break;
}
};
Key.addListener(keyListener);