Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-06-2005, 17:51   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 4
Anzahl begrenzen und Zeit verzögern

Hallo,
ich hoffe Ihr könnt mir helfen.

Ich bastle an einem Space-Game und möchte die Anzahl der Laserschüsse auf fünf begrenzen und nach einer kurzen Pause wieder fünf Schüsse abfeuern können usw.
Dies gelingt mir einfach nicht.
Vielen Dank in voraus für Eure Hilfe.

Hier der Quellcode:

ActionScript:
  1. [COLOR=DarkOrange]
  2.  
  3. //Laser Schiff
  4.  
  5. _root.laser.onLoad = function() {
  6.  laser_geschw = 20;
  7.  laser_anzahl = 1;
  8. }
  9. _root.laser.onEnterFrame = function() {
  10.  if (_global.spiel_gestartet == true) {
  11.   if (Key.isDown(Key.SPACE)) {
  12.    laser_anzahl++;
  13.    _root.laser.duplicateMovieClip("laser_schiff"+laser_anzahl, laser_anzahl);
  14.    _root["laser_schiff"+laser_anzahl]._x = _root.schiff._x+50;
  15.    _root["laser_schiff"+laser_anzahl]._y = _root.schiff._y-1;
  16.    trace("Laserstrahlen auf fünf begrenzen");
  17.  
  18. //Zahl muss 6 sein da der Ausgangswert bereits 1 ist, laser_anzahl=1.
  19.  
  20.    if (laser_anzahl == 6) {
  21.  
  22.     //Laserstrahlen entfernen
  23.  
  24.     trace("Laser entfernt");
  25.     _root["laser_schiff"+laser_anzahl].removeMovieClip();
  26.  
  27.     //Laser-Sound stoppen
  28.  
  29.     trace("Laser Sound stoppen");
  30.     _root.laser_sound.stop();
  31.    
  32.    //Zähle bis 10
  33.  
  34.    i = 1;
  35.    if (i>10) {
  36.  
  37. //diese Traceausgabe wird mir nicht mehr angezeigt
  38.  
  39.     trace("zeitverzögerung");
  40.  
  41.     //Inkrementiere Zeit i
  42.  
  43.     i++;
  44.  
  45.     //Rufe nach abgelaufener Zeit die obrige Funktion auf
  46.  
  47.     _root.laser.onEnterFrame = function() {
  48.     };
  49.    }
  50.   }
  51.   }[/COLOR]

Geändert von fossil (27-06-2005 um 18:29 Uhr)
fossil ist offline   Mit Zitat antworten
Alt 27-06-2005, 18:22   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
hallo!
und gleich mal ein tipp in sache forum:

klick bitte mal links unten auf vB_Code. setz dein programmcode zwischen eckigeklammer AS eckigeklammer und eckigeklammer schrägstrich AS eckigeklammer. sonst kann man das nicht vernünftig lesen.

und wenn du dann noch dein fla hochladen könntest (alles unnötige draussen lassen). damit erspahrt du den helfern, das die erst eine eigene fla bauen müssen, nur um deine frage beantworten zu können ;-) danke!

und als letztes: bitte immer vorher erst mal suchen (rechts oben im menü). die meisten 'probleme' sind schon 1000mal besprochen worden.
schau dir mal das da an, da wird auch 'zeitverzögert' geschossen:
attachmovie
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (27-06-2005 um 18:31 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 27-06-2005, 18:58   #3 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
ActionScript:
  1. _global.spiel_gestartet = true;
  2. _global.maxLaser = 5;
  3. _global.intervall = 0;
  4. //
  5. _root.laser.laser_geschw = 20;
  6. _root.laser.laser_anzahl = _global.maxLaser;
  7. //
  8. _root.laser.onEnterFrame = function() {
  9.     if (_global.spiel_gestartet == true) {
  10.         if (Key.isDown(Key.SPACE)) {
  11.             if (this.laser_anzahl) {
  12.                 var neu = this.duplicateMovieClip("laser_schiff"+this.laser_anzahl, this.laser_anzahl);
  13.                 neu._x = _root.schiff._x+50;
  14.                 neu._y = _root.schiff._y-1;
  15.                 neu.laser_geschw = this.laser_geschw;
  16.                 neu.onEnterFrame = fLaserOnEnter;
  17.                 this.laser_anzahl--;
  18.             } else if (!_global.intervall) {
  19.                 _global.intervall = setInterval(fNewLaser, 600);
  20.             }
  21.         }
  22.     }
  23. };
  24. function fNewLaser() {
  25.     clearInterval(_global.intervall);
  26.     _global.intervall = 0;
  27.     _root.laser.laser_anzahl = _global.maxLaser;
  28. }
  29. function fLaserOnEnter() {
  30.     this._x += this.laser_geschw;
  31. }
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 27-06-2005, 20:30   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 4
Anzahl begrenzen und Zeit verzögern klappt leider nicht

Hallo,
Danke für die Hilfe, klappt leider nicht.
Ich habe mal die Dateien angehängt.
space_game.zip funktioniert (ohne Laserbegrenzung);
Es beinhaltet eine Textdatei mit dem Quellcode und die SWF-Datei.
Flash-Datei ist leider zu groß für Upload.

Mal sehen wo der Fehler liegt.
Vielen Dank nochmals im voraus wenn`s klappt!
Angehängte Dateien
Dateityp: zip space_game.zip (26,1 KB, 3x aufgerufen)
fossil ist offline   Mit Zitat antworten
Alt 27-06-2005, 21:02   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
klappt schon. was ich programmiere teste ich auch. natürlich ist das nur ein fragment und nicht das komplette spiel mit allen functionen die du gerne hättest. ein bisschen musst du schon noch selbst machen ;-)

mit
i = 1;
if (i>10) {
setze i auf 1 und dann fragen ob eins grösser zehn ist
bekommst du jedenfalls keine zeitverzögerung rein :-)
da müsstest du schon ein for oder ein while benützen, die mindestens auf 1000 zählen. wäre so aber ganz schlecht programmiert. steuere zeitliche abläufe mit setInterval.


was sollen wir mit dem swf? spielen? weil was machen kann man damit nicht - programmiertechnisch gesehen.
Angehängte Dateien
Dateityp: zip laser_fla.zip (4,7 KB, 3x aufgerufen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 28-06-2005, 20:40   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 4
Besten dank-es funktioniert

Hallo,
bedanke mich für die tolle Hilfe.
Habe es getestet und es funktioniert.

Habe ja einen groben Fehler im Quellcode gehabt.

Mit besten Grüßen
Fossil.
fossil 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 09:45 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele