Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-01-2004, 12:16   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 124
Kollision mit gaaanz vielen Objekten

Hi Leute,

ich sitze gerade vor meiner Pacman-Variante und habe ein kleines Problem.

Mein Spieler soll im Labyrinth Punkte aufsammeln, ingesamt gibt es fast 450 solcher Punkte, die alle Instanzen eines MCs sind. Ist es möglich irgendwie diese Punkte bei Berührung aus dem Film zu laden (bei visible = false würde er ja trotzdem weiter zählen bei Berührung).

Und muss ich wirklich jedem Punkt einen eigenen Instanznamen verpassen? Wird die Kollisionsabfrage dann nicht viel zu aufwändig?

Denyo
Denyo256 ist offline   Mit Zitat antworten
Alt 14-01-2004, 12:30   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
MCs kannst du mit meineMCInstanz.removeMovieClip() wieder löschen. Wenn du den MCs gleichlautende Namen mit einer Zahl gibst, kannst du die _name-Eigenschaft über einen substring auswerten. Beispiel:
ActionScript:
  1. //Instanzen bspw. meinMC1, meinMC2, meinMC3
  2. //in der hittest-Funktion
  3. var ZielMC = this._name.substring(this._name.length-1, this._name.length);//filtert die Zahl 1, 2 oder 3 heraus
  4. _root["meinMC"+ZielMC].removeMovieClip();//berührten MC löschen
  5.  
  Mit Zitat antworten
Alt 14-01-2004, 12:36   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 124
Wunderbar ... dann mach ich mich jetzt mal an die Arbeit und benenne meine MCs ... soll ich dann am besten alle mit 3 Stellen an Zahlen numerieren, also von 001 bis 450, sonst geht das wie du geschrieben hattest nicht, oder?
Denyo256 ist offline   Mit Zitat antworten
Alt 14-01-2004, 12:44   #4 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
sorry @agedoubleju deine variante funzt ja nur bei einer stelle.
warum nicht gleich den namen nehmen.
ActionScript:
  1. _root.ZielMC = this._name
  2. _root[ZielMC].removeMovieClip();

[edit] @Denyo256 wie baust du den deine mc auf !!!!???
__________________
gruß Harry

Geändert von HAY (14-01-2004 um 12:48 Uhr)
HAY ist offline   Mit Zitat antworten
Alt 14-01-2004, 13:36   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 124
Zitat:
Geschrieben von HAY
@Denyo256 wie baust du den deine mc auf !!!!???
Wie meinst du das genau? Ich hab einen MC meines Pacman, dann die MCs meiner Gegner und dann die MCs der Punkte zum Aufsammeln. Kann ich diese Punkte eigentlich irgendwie zusammenfassen, weil so hab ich ja ziemlich viele Instanzen und irgendwie läuft das Spiel nicht mehr ruckelfrei (kann aber auch an meinem Rechner liegen, der ist etwas älter)?
Denyo256 ist offline   Mit Zitat antworten
Alt 14-01-2004, 13:44   #6 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
mit aufbau meine ich holst du sie aus der bib. auf die bühne
oder duplizierst sie oder attach oder laden.
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 14-01-2004, 13:50   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 124
Also ich hole sie alle aus der Bibliothek auf die Bühne ... bekomme ich es anderswie hin, so dass die Koordinaten meinen Wünschen entsprechen (es sollen ja keine Punkte auf den Mauern des Labyrinths liegen).
Denyo256 ist offline   Mit Zitat antworten
Alt 14-01-2004, 13:56   #8 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
*ups* und du hast 450 solcher Punkte.
denen du eine instanznamen geben willst und so weiter.
hm, ich kenne deinen spielplan nicht.und kann deshalb deine frage nicht beantworten.
[edit] kannste nicht deine fla hochladen
__________________
gruß Harry

Geändert von HAY (14-01-2004 um 13:57 Uhr)
HAY ist offline   Mit Zitat antworten
Alt 14-01-2004, 13:58   #9 (permalink)
Steffen G.
 
Benutzerbild von Tschdaeff
 
Registriert seit: Aug 2001
Ort: Ba-Wü
Beiträge: 4.123
2dimensionales array

ActionScript:
  1. map = [[1,1,1,1],[1,0,0,1],[0,1,0,0],[1,0,0,1]]



z.b. 1 = mauer und 2 = punkt

cu mfg
Tschdaeff
__________________
mod@
www.flashbattle.de
www.steffen-guse.de
------------------------------------

Tschdaeff ist offline   Mit Zitat antworten
Alt 14-01-2004, 14:32   #10 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 124
Also ich würde die .fla gerne hochladen, aber hier im Forum geht das nicht (Datei zu groß)

Muss ich daheim machen, da hab ich Zugriff auf einen Server

Geändert von Denyo256 (14-01-2004 um 15:04 Uhr)
Denyo256 ist offline   Mit Zitat antworten
Alt 15-01-2004, 08:07   #11 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 124
So, jetzt hab ich .fla oben ...

Labyrinth_neu.zip

Also das mit dem Array hatte ich auch überlegt, nur sind meine Gänge 40 px breit, meine Wände aber nur 10 px, da wäre das auch nicht so einfach.

Ich hoffe, ihr könnt mir mit meinen Punkte helfen
Denyo256 ist offline   Mit Zitat antworten
Alt 15-01-2004, 11:21   #12 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
So wie du es gemacht hast, ist es - gelinde gesagt - etwas sehr umständlich. Ich hätte für die Energiepunkte mit createEmptyMovieClip einen MC zur Laufzeit angelegt und die Punkte als MCs mit attachMovie ebenfalls zur Laufzeit aus der Bibliothek auf die Bühne gelegt, etwa so:
ActionScript:
  1. this.createEmtpyMovieClip("hg",1);
  2. //mit Arrays eine Positionstabelle anlegen, z.B. posX[] und posY[]
  3. //und dann
  4. for(var i=0;i<450;i++){//bspw. 450 Energiepunkte
  5. //digit muss in der Bibliothek vorher mit einem Exportnamen versehen werden
  6. this.hg.attachMovie("digit", i, i, { _x: posX[i], _y: posY[i]});
  7. //also den ExportMC digit als Instanz i(also 0-449) auf Tiefenebene i mit der Position x=posX[i] und y=posY[i] kopieren
  8. }
  9. }
  10. //Berührungen der Punkte abfangen über eine hittest-Funktion wie von HAY vorgeschlagen
  11.  
  Mit Zitat antworten
Alt 15-01-2004, 12:19   #13 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 124
Also gut ... das hab ich jetzt soweit kapiert. Nun hab ich noch zwei Fragen

Kann ich dieses Array auch irgendwie aus einer txt-Datei laden? Oder muss ich es in Flash definieren?

Und dann ist mir die hitTest-Funktion nicht ganz klar ... woher weiß ich, welchen MC ich getroffen hab um ihn rauszuladen?
Denyo256 ist offline   Mit Zitat antworten
Alt 15-01-2004, 13:13   #14 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
klar kannst du das array aus einet txt generieren.

hab hier mal ein kleines script

ActionScript:
  1. var speed=3
  2. for(var i=10;i<100;i++)
  3. {
  4.     _root.attachMovie('mc',i,i,{_x:random(550),_y:random(400)})
  5. }
  6. bt.swapDepths(1000)
  7. _root.onEnterFrame = function()
  8. {
  9.         bt.move();
  10.         bt.kill();
  11. }
  12.  
  13. MovieClip.prototype.kill =function()
  14. {
  15.     for(var i in _root)
  16.     {
  17.         if(this.hitTest(_root[i]) && _root[i]!=this)
  18.         {
  19.             _root[i].removeMovieClip()
  20.         }
  21.     }                      
  22. }
  23.    
  24. MovieClip.prototype.move = function()
  25. {   
  26.     if (Key.isDown(Key.UP))
  27.     {
  28.         this._y -= speed;
  29.     }
  30.     if (Key.isDown(Key.DOWN))
  31.     {
  32.         this._y += speed;
  33.     }
  34.     if (Key.isDown(Key.LEFT))
  35.     {
  36.         this._x -= speed;
  37.     }
  38.     if (Key.isDown(Key.RIGHT))
  39.     {
  40.         this._x += speed;
  41.     }   
  42. };


ist jetzt natürlich nicht direkt auf dein prob zu tackern,
aber der ansatz sollte dir klar werden.

brauchst auf der bühne einen mc "bt" und in der lib einen
mc mit verknüpfer "mc"
warrantmaster ist offline   Mit Zitat antworten
Alt 28-01-2004, 10:59   #15 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 124
So, endlich kam ich mal wieder dazu etwas zu tun.

Also meine Punkte hab ich jetzt per Array geladen. Jetzt hab ich aber noch ein Problem mit dem wieder entfernen.

Bei mir lädt der die Punkte jetzt auf die Bühne, aber leider auf die oberste Ebene, aber sie sollen ganz nach unten. Wie geht das?
Hier erstmal mein Script

ActionScript:
  1. for (var i=0;i<150;i++) {
  2.     _root.attachMovie("raute", i, i, { _x: spalte[i], _y: reihe[i]});
  3. }

Nun kapier ich aber nicht, woher ich weiß, welchen MC ich getroffen habe. Mit der OOP habe ich noch so meine Probleme.
Ich hoffe, ihr habt noch die Geduld mir zu helfen

Denyo
Denyo256 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 18:41 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele