Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-07-2004, 14:44   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 20
Kollision mit unbekannten MCs

Hallo zusammen,
ich bin noch nicht ganz sattelfest in AS. Deshalb moechte ich mich schon mal jetzt fuer meine Dummi-Frage entschuldigen.

Ich moechte Kollisionen einer Instanz mit mehreren anderen Instanzen eines anderen Objectes abfragen, ohne dass ich Instanznamen verwende.
Das ganze wird ne Jump n Run. Ich will einfach vermeiden dass jede kleine Ebene auf die der Spieler springen will auch einen Namen hat.
Sowas wie der "typeof" Operator in Java waere da ganz praktisch.

Wisst ihr was ich meine? Gibt es dazu eine Loesung mit flash?

Danke fuer eure Hilfe,
Z-D-M
__________________
Dumm zu sein und dies auch noch zu wissen ist das schlimmste!
z-d-m ist offline   Mit Zitat antworten
Alt 28-07-2004, 14:54   #2 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
ActionScript:
  1. //zB alle mcs im root
  2. var zeitleiste=_root
  3. for(var i in zeitleiste){
  4. //pfad sichern
  5. var p=zeitleiste[i]
  6. //typeof testen, liegt nen movieclip oder etwas nen anderes objekt vor?
  7. if(typeof p == "movieclip"){
  8. //hittest von diesem objekt mit deiner spielfigur etc
  9. p.hitTest(deinObjekt)
  10. }
  11. }

der for-in loop kann nicht indizierte objektsammlungen durchsuchen
in diesem fall eine bestimmte zeitleiste, und würde dir im ersten schritt jegliches objekt(objekte,mcs,funktion) zurückliefern durch das typeof sortiere ich mir die movieclips aus


deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 28-07-2004, 15:08   #3 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
...das ist ja nu ganz was anderes wie eine Anfängerfrage und einen Teil der Antwort lieferst Du auch schon mit typeof gibts auch in as (ob's nun dasselbe wie in java ist kann ich nicht beurteilen), für eine genaue Erklärung dessen was Du haben willst wäre natürlich mehr Hintergrundinformation nötig aber ich denke du kommst mit diesem Ansatz zurecht:
ActionScript:
  1. spielfigur.onEnterFrame = function() {
  2.     for (var i in _root) {
  3.         if ((_root[i] != this) && (typeof (_root[i]) == "movieclip")) {
  4.             if (_root[i].hitTest(this._x, this._y)) {
  5.                 trace("hit:"+i);
  6.             }
  7.         }
  8.     }
  9. };

Gruß

Alois

Edit: uii, deluxe inDaHouse, da hab ich nicht soviel Zeit zum Antwort schreiben
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (28-07-2004 um 15:10 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 28-07-2004, 15:10   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 20
Danke schoen

Das hilft mir schon weiter.
Allerdings moechte ich das ganze anderrum aufziehen.
Nehmen wir an ich habe genau ein Object (Verhalten MC) vom typ "Mann" und viele Objecte (Verhalten MC) vom Typ Boden.
Ich will aber im "Mann" abtesten ob er mit irgendetwas kollidiert.
Nach erfolgreicher kollision will ich testen ob boden (darauf kann er stehen) oder Feind (da krazt er ab).

D.h in Pseudo code:

if(hittset(irgendwas))
{
if(hittest(Boden)) //boden ist der Objecttyp nicht der Name
esle if(hittest(Feind))
}


Kannst Du da mit was anfangen?
Vielen Dank fuer Deine Hilfe!

z-d-m
__________________
Dumm zu sein und dies auch noch zu wissen ist das schlimmste!
z-d-m ist offline   Mit Zitat antworten
Alt 28-07-2004, 15:23   #5 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
häh?
is doch egal wie rum? im endeffekt mußt doch alle objekte mit dem mann durchtesten.
um festzustellen obs boden oder feind ist mußt das natürlich irgendwie hinterlegen, entweder im instanzname, dann kannste per indexOf arbeiten oder du hinterlegste ne variable typ im mc der dir den typ(hoho wer hätte es gedacht) speichert ("boden" ,"feind") usw


deluxe
yoyoyo deluxe in da house besten grüße an den langsamtipper
Deluxe ist offline   Mit Zitat antworten
Alt 28-07-2004, 15:27   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 20
Ok, dann mach ich das so. Vielen dank.
Hoffe nur mein Rechner geht nicht in die knie bei so vielen Kollisions-abfragen. Obwohl, sind ja nur rechtecks-test. Oder gibts da auch schicke Pixel per Pixel scans?

Grueße aus Ulm,
z-d-m
__________________
Dumm zu sein und dies auch noch zu wissen ist das schlimmste!
z-d-m ist offline   Mit Zitat antworten
Alt 05-08-2004, 22:37   #7 (permalink)
Flash-Rookie
 
Benutzerbild von specs2
 
Registriert seit: Aug 2004
Beiträge: 11
Ich versuche mich momentan auch mit einer Kollisionsabfrage. Mir wurde dafür empfohlen, im MC des Hauptcharacters mehrere kleine Kreise einzubauen und die für die Kollisionsabfrage zu verwenden.
specs2 ist offline   Mit Zitat antworten
Alt 06-08-2004, 09:33   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
du nennst doch selbst den unterschied!
du benutzt einen charakter, die kreise sind eine möglichkeit um den charakter sinnvoll mit hitTest zu testen.
denn das problem bei hitTest ist die technik von flash- um rechnezeit zu sparen wird nicht die reele fläche sondern das umschriebene rechteck des objekts zum testen heranzgezogen.nen kreis wird nie als kreis getestet sondern als quadrat mit a=radius.
daher wurde dir empfohlen solche kreise einzubauen.

hie bringt es konkret nichts, da es mehrere unterschiedliche instanzen sind


deluxe
Deluxe 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