Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-07-2003, 13:43   #1 (permalink)
dope
 
Registriert seit: Aug 2002
Beiträge: 40
Exclamation Problem bei hittest / beide Seiten dynamisch

Hallo.
Ich bastel gerade ein Spiel, bei welchem man mit einem kleinen Raumschiff Objekte anschießen kann. Mein Problem ist folgendes:
Sowohl die Schussfunktion als auch die von oben runter fallenden Ziele werden mit duplicatemovieclip erstellt. Meine Frage lautet, wie mache ich die hittest Abfrage, da ja beide aufeinander treffenden Objekte dynamisch erzeugt werden und der Pfad bzw Name der Clips auf beiden Seiten variieren.
shuricAn ist offline   Mit Zitat antworten
Alt 25-07-2003, 13:50   #2 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 518
hi

also wenn du die schüsse erzeugst einfach
eine schleife laufen lassen um die MC´s mit hitTEst
zu testen.

poste mal dein script welches die schüsse erzeugt,
dann kann ich dir besser helfen

grütze
hnes
hnes ist offline   Mit Zitat antworten
Alt 25-07-2003, 14:04   #3 (permalink)
dope
 
Registriert seit: Aug 2002
Beiträge: 40
So erzeuge ich die Schüsse:

onClipEvent (mouseDown) {
if (tiefe == 29) {
tiefe = 1;
}
gNeuerName = "schuss" + tiefe;
_root.schuss.duplicateMovieClip(gNeuerName, tiefe);
tiefe ++;
}

-------------

So die Ziele:

function duplicate(){
neuesziel = "ziel" + _root.tiefe2; // Neuer Name
_root.mc_ziel.duplicateMovieClip(neuesziel, tiefe2); // Ziel wird dupliziert
}

Zwischen den beiden muss ich jetzt eine Kollisionsabfrage starten.
shuricAn ist offline   Mit Zitat antworten
Alt 25-07-2003, 14:37   #4 (permalink)
dope
 
Registriert seit: Aug 2002
Beiträge: 40
ok ich habs soweit:

for (i=0; i<=20; i++) {

if(this.hitTest(eval("_root.schuss" + i))){ this.removeMovieClip();

trace("getroffen"+ i);
}

}

Das funktioniert allerdings nicht bei allen Zielen ??
Ausserdem besteht noch das Problem, dass er bei einem Treffer alle bisher duplizierten MC´s löscht. Wie kann ich das verhindern ?

Geändert von shuricAn (25-07-2003 um 14:42 Uhr)
shuricAn ist offline   Mit Zitat antworten
Alt 25-07-2003, 14:50   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 518
ActionScript:
  1. onClipEvent (mouseDown) {
  2. if (tiefe == 29) {
  3. tiefe = 1;
  4. }
  5. gNeuerName = "schuss" + tiefe;
  6. _root.schuss.duplicateMovieClip(gNeuerName, tiefe);
  7. _root.gNeuerName.onEnterFrame=function(){
  8. for(var 1;i<gegner;i++){
  9. if(this.hitTest(_root["gegner"+i])){
  10. removeMovieclip(this)
  11. removeMovieclip(_root["gegner"+i))
  12. }
  13. }
  14.  
  15. }
  16. tiefe ++;
  17. }

sollte so funzen

[!getestet]

grütze
hnes
hnes ist offline   Mit Zitat antworten
Alt 25-07-2003, 15:39   #6 (permalink)
dope
 
Registriert seit: Aug 2002
Beiträge: 40
Also ich hab das Skrip in den Movieclip des Ziels gepackt. Das läuft auch beinahe. Allerdings ist es so, dass wenn ich die Ziele in der Reihenfolge wie sie auftauchen treffe, dann ist der hittest erfolgreich und die punkte gehen hoch. Verfehle ich ein Ziel und treffe erst das darauffolgende, dann klappt der hittest ab da nicht mehr.

for(i=0;i<30;i++){
if(this.hitTest(_root["schuss"+i])){
_root.punkte++;
_root.t_punkte.text = _root.punkte;
removeMovieclip(this);

}
}

Im Klartext müssen momentan die Objekte genau in der Reihenfolge ihres Auftretens abgeschossen werden, ansonsten fliegt der Schuss einfach durch und der MC wird nicht gelöscht.
Ich versteh es nicht...

Geändert von shuricAn (25-07-2003 um 16:53 Uhr)
shuricAn ist offline   Mit Zitat antworten
Alt 25-07-2003, 19:57   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 518
ups
hab nen tipfehler drinnen gehabt

ActionScript:
  1. onClipEvent (mouseDown) {
  2.         if (tiefe == 29) {
  3.                 tiefe = 1;
  4.         }
  5.         gNeuerName = "schuss" + tiefe;
  6.         _root.schuss.duplicateMovieClip(gNeuerName, tiefe);
  7.         _root.gNeuerName.onEnterFrame=function(){
  8.                 for(var i;i<gegner;i++){
  9.                         if(this.hitTest(_root["gegner"+i])){
  10.                                 removeMovieclip(this)
  11.                                 removeMovieclip(_root["gegner"+i))
  12.                         }
  13.                 }
  14.                
  15.         }
  16.         tiefe ++;
  17. }

und jetzt???

und wie erzeugst du deine gegner???
alle auf einmal??

Geändert von hnes (25-07-2003 um 19:59 Uhr)
hnes ist offline   Mit Zitat antworten
Alt 26-07-2003, 15:19   #8 (permalink)
dope
 
Registriert seit: Aug 2002
Beiträge: 40
Gegner:

Ich habe meinen AusgangsMC. Dieser bewegt oberhalb der Bühne zufällig, indem ich ihm per random alle paar Sekunden einen anderen _x Wert zuweise. Dieser wird dann alle paar Sekunden dupliziert und bewegt sich nach unten.

Wenn der duplizierte mit dem Schuss kollidiert soll er verschwinden, was ich jetzt folgendermaßen gelößt habe:

Skript liegt auf dem Ziel/Gegner !

PHP-Code:
onClipEvent (enterFrame) {
    
    
// Bewegung nach unten
    
if (this._name != "mc_ziel") {
        
this._y += 5;
    }
    

for(
i=0;i<40;i++){
      if(
this.hitTest(_root["schuss"+i])){
      
trace(_root["schuss"+i]);
    
_root.punkte++;
    
_root.t_punkte.text _root.punkte;
    
removeMovieclip(this);

      }

Wenn ich die Ziele in der Reihenfolge ihrer Erstellung abschieße funktioniert das auch und die Ziele verschwinden. Wenn ich aber das zweite Ziel oder dritte.... vor dem zuerst duplizierten treffe geht der Schuss durch und die Kollision wird nicht erkannt.
Wird der erste also nicht getroffen, kann ich keine Ziele mehr abschießen
Ich versteh das nicht, bitte um euren Rat.

Hier sehr ihr das Spiel: http://www.shurican.com/spiel.swf

Geändert von shuricAn (26-07-2003 um 15:23 Uhr)
shuricAn ist offline   Mit Zitat antworten
Alt 26-07-2003, 16:05   #9 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Eigentlich sollte das so funktionieren, der Fehler scheint irgendwoanders zu sein. Vielleicht lädst du mal die Fla hoch.

mfg .r
bokel ist offline   Mit Zitat antworten
Alt 26-07-2003, 16:26   #10 (permalink)
dope
 
Registriert seit: Aug 2002
Beiträge: 40
Hier der File: www.shurican.com/spiel_fastfertig.fla
shuricAn ist offline   Mit Zitat antworten
Alt 26-07-2003, 19:18   #11 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Hallo shurican,

da Problem war, dass du beim Erzeugen der neuen Ziele _root.tiefe2 benutzt, was es nicht gibt. Deshalb hiessen alle Ziele gleich, nämlich ziel und konnten nicht mehr einzeln angesprochen werden. Es muss nur tiefe2 heissen, dann klappt es.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 26-07-2003, 19:56   #12 (permalink)
dope
 
Registriert seit: Aug 2002
Beiträge: 40
Ja du hast recht.
Vielen Dank und schönen Abend noch.
shuricAn 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 04:50 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele