Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-12-2006, 13:44   #1 (permalink)
elk
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 93
Pfeiltasten und Space

Ich bin nun bei meinem Spiel auch auf das Problem gestoßen, dass man nicht Space + oben + rechts (Nur Beispiel ) drücken kann. Mein Weihnachtsmann läuft mit pfeiltasten durch die Gegend und soll auf Space Schießen.


Wenn jemand spontan ne Lösung hat wie ich den Fehler beheben kann wär das natürlich toll, wenn nicht würde ich auch einfach die steuerung auf die Num Tasten umlegen.

Probleme.
- Wo finde ich die Keycodes für die Numtasten?
- Wie kann ich bei meinem Listener eine andere taste als die vorgegebenen abfragen z.b "P" ??

PHP-Code:
_root.mc_santab.onEnterFrame = function() {
    if (
Key.isDown(68)) {
        
this._x += 5;
        
_root.mc_santab.gotoAndStop(2);
    }
    if (
Key.isDown(65)) {
        
this._x -= 5;
        
_root.mc_santab.gotoAndStop(3);
    }
    if (
Key.isDown(87)) {
        
this._y -= 5;
        
_root.mc_santab.gotoAndStop(1);
    }
    if (
Key.isDown(83)) {
        
this._y += 5;
        
_root.mc_santab.gotoAndStop(4);
    }
    if ((
Key.isDown(83)) and (Key.isDown(68))) {
        
this._y -= 2;
        
this._x -= 2;
        
_root.mc_santab.gotoAndStop(5);
    }
    if ((
Key.isDown(83)) and (Key.isDown(65))) {
        
this._y -= 2;
        
this._x += 2;
        
_root.mc_santab.gotoAndStop(6);
    }
    if ((
Key.isDown(87)) and (Key.isDown(68))) {
        
this._y += 2;
        
this._x -= 2;
        
_root.mc_santab.gotoAndStop(7);
    }
    if ((
Key.isDown(87)) and (Key.isDown(65))) {
        
this._y += 2;
        
this._x += 2;
        
_root.mc_santab.gotoAndStop(8);
    }
};
keyListenerN = new Object();
Key.addListener(keyListenerN);
keyListenerN = new Object();
keyListenerN.onKeyUp = function() {
    if ((
Key.getCode() == Key.SHIFT) and (slb == 1)) {
        
bom();
    }
    if ((
Key.getCode() == Key.SPACE) and (slr == 1)) {
        
boom();
    }
};
Key.addListener(keyListenerN);
function 
bom() {
    if ((
_root.mc_santab.hitTest(_root.mc_sb1._x_root.mc_sb1._ytrue)) and (_root.zb<5)) {
        if (
_root.== 1) {
            
//trace("oben");
            
schss(10000000);
        }
        if (
_root.== 2) {
            
//trace("rechts");
            
schss(01000000);
        }
        if (
_root.== 3) {
            
//trace("links");
            
schss(00100000);
        }
        if (
_root.== 4) {
            
//trace("unten");
            
schss(00010000);
        }
        if (
_root.== 5) {
            
//trace("ru");
            
schss(00001000);
        }
        if (
_root.== 6) {
            
//trace("lu");
            
schss(00000100);
        }
        if (
_root.== 7) {
            
//trace("ro");
            
schss(00000010);
        }
        if (
_root.== 8) {
            
//trace("lo");
            
schss(00000001);
        }
    }
}
function 
schss(orlurulurolo) {
    
_root.mc_sb1.onEnterFrame = function() {
        if (
== 1) {
            
hilf 2;
            
_root.mc_sb1._x -= 20;
        }
        if (
== 1) {
            
hilf 2;
            
_root.mc_sb1._x += 20;
        }
        if (
== 1) {
            
hilf 2;
            
_root.mc_sb1._y -= 20;
        }
        if (
== 1) {
            
hilf 2;
            
_root.mc_sb1._y += 20;
        }
        if (
lo == 1) {
            
hilf 2;
            
_root.mc_sb1._y -= 10;
            
_root.mc_sb1._x -= 10;
        }
        if (
lu == 1) {
            
hilf 2;
            
_root.mc_sb1._y += 10;
            
_root.mc_sb1._x -= 10;
        }
        if (
ro == 1) {
            
hilf 2;
            
_root.mc_sb1._y -= 10;
            
_root.mc_sb1._x += 10;
        }
        if (
ru == 1) {
            
hilf 2;
            
_root.mc_sb1._y += 10;
            
_root.mc_sb1._x += 10;
        }
    };

elk ist offline   Mit Zitat antworten
Alt 03-12-2006, 14:31   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
kein weihnachtsmann, aber läuft und schiesst

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 03-12-2006, 15:08   #3 (permalink)
elk
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 93
neeeeeee...

das mein ich nicht. Da kann ich ja die leertaste gedrückt halten und der schießt eine kugel nach der anderen ( onEnterFrame). ich habs ja gerade deswegen mit nem listener gemacht.

Das könnte man bei seinem script ja auch ncoh ändern, aber ich wollte das gerne auf meinen übertragen, der ja komplett anders ist.

Hat jemand auch ne antwort auf mein 2. prob?

Geändert von elk (03-12-2006 um 15:13 Uhr)
elk ist offline   Mit Zitat antworten
Alt 03-12-2006, 16:02   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
Zitat:
Zitat von elk Beitrag anzeigen
läuft mit pfeiltasten durch die Gegend und soll auf Space Schießen.
äääääh ?
und sonstiges soll der geneigte leser erraten?


_root.schuss_warten ... gesehen?
entsprechend, setze ein flag wann immer du schiessen lassen willst und hebe das flag wieder auf, wenn du meinst, jetzt darf man wieder.

p.s. listener sind manchmal ganz schön lamarschig ;-)

p.p.s.
üblich ist, das ein button nach onRelease ausgelöst wird. beim schiessen ist die motorig wohl eher so, das ich beim drücken einen schuss erwarte und nicht beim loslassen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (03-12-2006 um 16:06 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 03-12-2006, 17:14   #5 (permalink)
elk
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 93
hast meinen code mal gelesen?

Der fängt damit an das ich sage wenn ich nach oben drücke - bewege dich nach ob usw....

dann habe ich eine funktion im code die heißt "boom". Die Funktion Boom soll aufgerufen werden wenn ich die leertaste drücke ( das da jetzt onKeyUp steht ist egal --- funktioniert auch bei down).

Das geht NICHT, wenn ich die pfeiltasten gleichzeitig drücke!
(außer wenn ich oben + links + space drücke -- WARUM AUCH IMMMER)

Ich möchte eigendlich "nur" meinen Fehler beheben und ich einen Fremden quelltext kopieren!


Ach -- hab ichs doch glatt vergessen.

Wenn ich keinen listener nehme und nur schreibe

if (Key.isDown(Key.SPACE)) {
boom();
}

passiert genau das Selbe!

Geändert von elk (03-12-2006 um 17:17 Uhr)
elk ist offline   Mit Zitat antworten
Alt 03-12-2006, 17:59   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
sorry, dann kommen wir nicht zusammen ;-)
du hast eine version die nicht geht, ich habe eine version die geht -in bezug auf gleichzeitigem drücken- (kann man für deine speziellen wünsche ja anpassen). du bestehst aber weiterhin auf deine nicht funktionierende lösung. tja ...
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 03-12-2006, 18:12   #7 (permalink)
elk
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 93
Nein ... Dann formuliere ich halt allgemein -- weg von einer Steuerung und weg von dem Spiel.

Ich möchte, wenn ich die die Pfeiltaste "links" und "oben" drücke eine Aktion ausführen. Wenn ich links + oben + space drücke soll eine funktion aufgerufen werden. (die Aktion die bei links + oben ausgeführt wurde soll immer beibehalten werden)

Wie geht das?

Ich habe es so versucht.

PHP-Code:
onEnterFrame = function() {
if ((
Key.isDown(Key.UP)) and (Key.isDown(Key.LEFT))) {
        
trace("hallo");
    }
if (
Key.isDown(Key.SPACE)) {
        
MeineFunktion();
    }

elk ist offline   Mit Zitat antworten
Alt 03-12-2006, 19:04   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
??
meinst du es so?
Code:
onEnterFrame = function () {
	if (Key.isDown(Key.UP) && Key.isDown(Key.LEFT)) {
		trace("UP+LEFT");
	}
	if (Key.isDown(Key.UP) && Key.isDown(Key.LEFT) && Key.isDown(Key.SPACE)) {
		trace("UP+LEFT+SPACE");
	}
};
bzw. das selbe
Code:
onEnterFrame = function () {
	if (Key.isDown(Key.UP) && Key.isDown(Key.LEFT)) {
		trace("UP+LEFT");
		if (Key.isDown(Key.SPACE)) {
			trace("UP+LEFT+SPACE");
		}
	}
};
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (03-12-2006 um 19:09 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 04-12-2006, 12:39   #9 (permalink)
elk
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 93
genau das meine ich. Es müsste doch so wie du es gecodet hast funktionieren-es geht aber nicht!
elk ist offline   Mit Zitat antworten
Alt 04-12-2006, 15:38   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..es geht aber nicht!.."
kann nicht sein!

wenn du die 3 zeilen rauskopierst und laufen last, dann tracken die genau nach den gedrückten tasten.

lade mal deine fla (auf das problem reduziert) hoch.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 04-12-2006, 16:21   #11 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
zu Deiner aller ersten Frage:
PHP-Code:
trace(Key.getCode()); 
Bis dann,
querkopf


btw. setz mal ein paar gescheite traces in Deinen Code und nutze F1 um ein paar begriffe zu finden. Das wird durchaus helfen.
__________________
Alles ist wie immer. Nur schlimmer.
querkopf ist offline   Mit Zitat antworten
Alt 04-12-2006, 17:59   #12 (permalink)
elk
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 93
danke.
meine Hilfe ist kaputt, muss flash mal neu installieren

Was ich aber unbedingt wissen möchte- warum geht das nciht?? und wie
geht es??

PHP-Code:
onEnterFrame = function () {
    if (
Key.isDown(Key.UP) && Key.isDown(Key.LEFT)) {
        
trace("UP+LEFT");
    }
    if (
Key.isDown(Key.UP) && Key.isDown(Key.LEFT) && Key.isDown(Key.SPACE)) {
        
trace("UP+LEFT+SPACE");
    }
}; 
elk ist offline   Mit Zitat antworten
Alt 05-12-2006, 09:00   #13 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
Zitat:
Zitat von elk Beitrag anzeigen
meine Hilfe ist kaputt, muss flash mal neu installieren
mach das mal als erstes...
Dein erstes Ziel sollte immer die Flashhilfe sein und erst wenn Du dort nicht mehr weiterkommst gezielt Fragen im Forum stellen.


Was funktioniert an dem Code nicht?
Der funktioniert super...

Falls Du jedoch "UP+LEFT" nicht mehr getriggert haben möchtest wenn "UP+LEFT+SPACE" gedrückt wird dann erweiter doch einfach die erste if():
PHP-Code:
onEnterFrame = function ()
{
    if (
Key.isDown(Key.UP) && Key.isDown(Key.LEFT) && !Key.isDown(Key.SPACE))
    {
        
trace("UP+LEFT");
    }
    if (
Key.isDown(Key.UP) && Key.isDown(Key.LEFT) && Key.isDown(Key.SPACE))
    {
        
trace("UP+LEFT+SPACE");
    }
}; 
Bis dann,
querkopf
__________________
Alles ist wie immer. Nur schlimmer.
querkopf ist offline   Mit Zitat antworten
Alt 05-12-2006, 13:35   #14 (permalink)
elk
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 93
der text geht bei mir aber nicht. Was soll ich denn machen?

Ich bin verzweifelt!!!!!

ich drücke up + left und "up+left" wird ausgegeben. Ich lasse die beiden tasten gedrückt und drücke zusätzlich space und nichts ändert sich!

Egal wie ich es auch anstelle "up+left+space" wird NIE ausgegeben -- ist das ein fehler in flash ???

Der Fehler bei mir ist -- mit manchen Tasten gehts mit manchen nicht. (z.b. die leertaste)

Geändert von elk (05-12-2006 um 16:04 Uhr)
elk ist offline   Mit Zitat antworten
Alt 05-12-2006, 15:59   #15 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
mach mal 'ne leere fla bitte, schmeiß den code da rein:
PHP-Code:
onEnterFrame = function ()
{
     if (
Key.isDown(Key.getCode()))
     {
          
trace(Key.getCode());
     }

und sag' was in Deinem Trace Fenster steht nachdem Du Space gedrückt hast....
__________________
Alles ist wie immer. Nur schlimmer.
querkopf 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 00:43 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele