Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-01-2007, 23:20   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
dauerdrücken einer taste verhindern

hi, ich steh total auf dem schlauch. Gibt es nicht eine ganz einfache Methode, das dauernde Gedrückthalten einer Taste zu verbieten, also dass der Spieler wenigstens mal die Taste loslossen muss, bevor sie reagiert?

Auf dem Button liegt:
**************
on (release, keyPress "<Space>") {
gotoAndStop(1);
}
**************
keyUp "<Space>" gibt es ja nicht, oder?

Hier soll ein Gewehr geladen werden. Im ersten Bild ist es voll, im vierten leer, und da kommt auch dieser Button vor. Also ich habe eine Schleife...

Für jede Hilfe dankbar!

grüße, anni
annimunde ist offline   Mit Zitat antworten
Alt 16-01-2007, 23:28   #2 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
Jetzt habe ich das versucht, im root im vierten Bild... geht aber auch nicht, hier tut sich gar nix. :-??

var keyListener:Object = new Object();
keyListener.onKeyUp = function() {
// Rückgabewert von getCode() mit Konstante vergleichen
if (Key.getCode() == Key.SPACE) {
_root.eimer_sound.gotoAndPlay(2);
gotoAndStop(1);
}
};
Key.addListener(keyListener);
annimunde ist offline   Mit Zitat antworten
Alt 17-01-2007, 03:19   #3 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
benütze eine variable
so kannst du z.b. abfragen, ob eine bestimmte zeit vergangen ist,
oder ob's eine andere taste ist usw.

du kannst auch funktionen ab- und anhängen:
fPress=function()
{ delete this.onPress; // function abhängen
}
_btn.onPress=fPress; // function anhängen


http://www.seibsprogrammladen.de/fra...ispiele/flash6
-> Spiele
... Schiessen: Der Buttler schiesst in der Wohnung herum
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 17-01-2007, 12:32   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
Hi! Dankeschön, das sind ja tolle Beispiele auf deiner Seite.
Ich habe es jetzt an deins angepasst, aber mein Problem besteht immer noch. Man kann einfach SPACE gedrückt halten während des ganzen Spiels, und wenn die Kanone sagt, man müsse laden,
(was sie so sagt: patroneBitteLaden=true)
dann lädt sie halt, ohne dass man dafür erst mal loslassen müsste.

im root habe ich jetzt:
pat.onEnterFrame=function(){
trace(patroneBitteLaden)
if ((patroneBitteLaden) && (Key.isDown(Key.SPACE))) {
eimer_sound.gotoAndPlay(2);
pat.gotoAndStop(1);
}
}

Und in „pat“ im vierten Bild, wenn die Kanone leer ist, (patroneBitteLaden=true) und im ersten, wenn sie voll ist (=false)

Ich bräuchte so was wie Key.isUp...

Noch eine Idee?
anni
annimunde ist offline   Mit Zitat antworten
Alt 17-01-2007, 12:49   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
Jetzt habe ich es so gemacht:

pat.onEnterFrame=function(){
if((patroneBitteLaden) && (Key.isDown(Key.SPACE)) && (!k_down)) {
k_down = true;
} else {
k_down = false;
eimer_sound.gotoAndPlay(2);
pat.gotoAndStop(1);
trace("Taste los gelassen")
}
}

ABER – jetzt lädt sie STÄNDIG, also immer wenn die SPACE-Taste NICHT gedrückt wird. Das isses nu auch nicht.
annimunde ist offline   Mit Zitat antworten
Alt 17-01-2007, 13:02   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
Tja, ich schon wieder... ich hab’s!


keyListener={};
keyListener.onKeyUp = function() {
trace("up");
// Rückgabewert von getCode() mit Konstante vergleichen
if ((patroneBitteLaden) && (Key.getCode() == Key.SPACE)) {
trace("bereit")
eimer_sound.gotoAndPlay(2);
pat.gotoAndStop(1);
}
};
Key.addListener(keyListener);


Ich hatte den Listener falsch eingebaut.
annimunde ist offline   Mit Zitat antworten
Alt 17-01-2007, 13:10   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
und schau dir mal listener an,
das verbraucht nicht so viel rechenleistung wie dein onEnterFrame.
[edit] aha, schon selbst entdeckt ;-)
Code:
patroneBitteLaden = true;
k_down = false;
_root.createEmptyMovieClip("pat", 1);
//
pat.onEnterFrame = function() {
  if (patroneBitteLaden) {
    if (Key.isDown(Key.SPACE) && !k_down) {
      k_down = true;
      trace("SPACE gedrückt");
      // eimer_sound.gotoAndPlay(2);
      // pat.gotoAndStop(1);
    } else if (!Key.isDown(Key.SPACE) && k_down) {
      k_down = false;
      trace("SPACE losgelassen");
} } };
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (17-01-2007 um 13:13 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 17-01-2007, 13:15   #8 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
versteh ich jetzt nicht...

Aber danke für deine Bemühungen! :-)
annimunde ist offline   Mit Zitat antworten
Alt 17-01-2007, 13:24   #9 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
was verstehst du nicht?
habe deinen script gangbar gemacht.

zum testen
muss ich natürlich parameter setzen, die ich nicht habe aber gebraucht werden:
patroneBitteLaden = true;
k_down = false;
_root.createEmptyMovieClip("pat", 1);

und das was ich nicht habe und zum testen nicht gebraucht wird ist auskommentiert:
// eimer_sound.gotoAndPlay(2);
// pat.gotoAndStop(1);

ist jetzt egal, du hast ja selbst eine andere lösung gefunden!
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele