Hit-test

Newb

Erfahrenes Mitglied
Hallo,


Angenommen ich habe 3 Objekte Wand1, Wand2 und Ball.
Ich werfe den Ball in den Raum in eine beliebige Richtung....
Kann man da prüfen lassen gegen welche Wand der Ball fliegt?
Über hitTest oder über eine andere *mir unbekannte* Funktion ^^?

Also den Namen des getroffenen MovieClips ausgeben.

Und das nicht über:
Code:
if (ball.hitTest(Wand1)) {
   ausgabe.text = "Wand1";
} else if (ball.hitTest(Wand2)) {
   ausgabe.text = "Wand2";
}

Sondern wenn der MovieClip Wand1/2 unbekannt ist.


MfG:
General ']['.G.
 
Abend,

der Satz spielt eigentlich keine Rolle - Was ich meine ist: Ob man über .hitTest oder so erfragen kann über welchem MovieClip man sich beispielsweise mit der Maus befindet.

MfG:
General ']['.G
 
Einen bestimmten Befehl dafür gibt es meines Wissens nicht. Man könnte aber ein Workaround mit hitTest erstellen, wenn es nicht zu viele MCs werden - oder wenne s zu viele sind bestimmte Tricks anwenden.
 
Hi,

es sollen um die 300 MC´s werden, bei dennen der Name abgefragt wird bzw. müsste ich wissen auf welchem der 300 MC´s sich ein anderer spezieller befindet^^ und ich will keine 2000 Zeilige Funktion für diesen anderen speziellen schreiben ^^

ich bin hier schon kräftig am testen.

Hab meinen Test mal in den Anhang gepackt.
Es geht geht darum das ein MovieClip (später auch mehrere) auf Kacheln positioniert werden kann. Das ginge fast auch noch ohne .hitTest.
Allerdings bräuchte ich die Nr. der Kachel auf der sich der MovieClip befindet.

Eine ebenfalls umständliche Möglichkeit wäre es, wenn man jeder Kachel nen kurzen .hitTest Code verpasst.

Code:
If (this.hitTest(MovieClip)) {   //Wobei this = die Kachel ist
   VariableX = x_Nr_der_Kachel;   //X-Position der jeweiligen Kachel auf dem Feld
   VariableY = y_Nr_der_Kachel;   //Y-Position der jeweiligen Kachel auf dem Feld
}

Und die VariableX und -Y haben damit die Position des einen MovieClips gespeichert.

Was anderes fällt mir irgendwie nicht ein.
Vielleicht kennt ja irgendeiner im Internet oder im Universum (Ist für den Informatiker ja eh das gleiche ;-) ) eine kürzere Lösung. Er möge bitte die Kraft dazu haben sie hier zu posten ^^.


MfG:
General ']['.G.
 

Anhänge

  • kacheln.fla
    101 KB · Aufrufe: 44
  • kacheln.swf
    15,8 KB · Aufrufe: 57
Zuletzt bearbeitet:
Wie es der Zufall so will schreibe ich grade ein Tutorial zu dem Thema, welches dir sicher helfen würde. Ist aber noch nicht fertig ... obwohl ich den Teil mit der Kollisionsabrage schon fertig habe.

Wenn es ganz dringend ist schreib mir ne PN und ich schick dir die entsprechenden Teile. Da das Tutorial aber noch in Schreibe ist können noch Fehler drin sein, hab noch nicht korrektur gelesen.

Ansonsten gedulde und freue dich auf mein LineRider-Tutorial Teil 2.
 
Abend,

und was meinst du wäre deiner Meinung nach eine gute Lösung für das Problem? Jeder Kachel oder der Figur selbst kilometerlangen Code zu schreiben find ich nicht so gut ^^

Wenn in deinem neuem Tutorials eine bessere Lösung zufinden ist könntest du diese ja hier posten - Danke.


MfG:
General ']['.G.
 
Wie gesagt der Tutorial ist noch nicht fertig. Man kann aber mittes for-Schleifen und intelligenter Namensvergabe der MCs in verbindung mit Dingen wie "_root["meinMC"+i].onEnterFrame" vielen Movieclips den selben Code geben, ohne ihn 2000 mal schreiben zu lassen.
 
Hi,

die MovieClips sind schon vorhanden.
Nun lassen sich diese ja wieder löschen :)
Wenn ich sie mit createEmptyMovieClip erstelle, bennen ich alle mit [Namen]+i und lasse i immer um 1 hochzählen.
Wäre vielleicht garnichtmal so schlecht....allerdings bleibt mir da noch eine Frage offen:

Kann man den einzelnen erstellten MC´s gleich eine Funktion zuweisen?
Sodass das Ganze am Ende ungefähr so aussieht:
Code:
var i = 1;
var kachelname;

for (i = 1, i == 300, i++){
     kachelname = "feld" + i;
     this.createEmptyMovieClip(kachelname, i);
     kachelname = [HIER FUNKTION ZUWEISEN, Nur wie?]
     ........
     ....
}
 
Hallo,
das hatte ich probiert zu erklären. :) Würde in etwa so aussehen:

Code:
var i = 1;
var kachelname;

for (i = 1, i <= 300, i++){
     kachelname = "feld" + i;
     this.createEmptyMovieClip(kachelname, i);
     this["feld" + i].onEnterFrame = function() {
      this._x += 10;
     }
}
 

Neue Beiträge

Zurück