Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-05-2011, 09:56   #1 (permalink)
Neuer User
 
Registriert seit: May 2011
Beiträge: 2
Question Problem mit hitTestObject() von 2 e.target

Hey zusammen,

ich bin gerade dabei ein Flash Game in ActionScript 3 für ein Projekt während meiner Ausbildung zum FI zu programmieren.

Jetzt bin ich bei einem wahrscheinlich leicht zu lösenden Problem hängen geblieben. Leider habe ich momentan keine Ansprechpartner, deshalb dieser Thread.


Mein Problem ist folgendes:
In meinem Spiel erzeuge ich mithilfe eines MouseDown Listeners
Code:
stage.addEventListener(MouseEvent.MOUSE_DOWN, Bollen);
bei jedem Klick einen neuen Bollen, a.k.a. Schuss.

Die Methode "Bollen" sieht so aus:

Code:
function Bollen(e:MouseEvent):void{
	meiBollen = new Kugel();
	meiBollen.x = weapon_mc.x;
	meiBollen.y = weapon_mc.y;
	kugelWinkel = weapon_mc.rotation*Math.PI / 180;
	meiBollen.xspeed_beschl = Math.cos(kugelWinkel)*kugelSpeed;
	meiBollen.yspeed_beschl = Math.sin(kugelWinkel)*kugelSpeed;
	addChild(meiBollen);
	meiBollen.addEventListener(Event.ENTER_FRAME, Move);
}
Das funktioniert auch wunderbar. Nun habe ich noch einen weitere Methode, einen Timer:
Zitat:
myTimer.addEventListener("timer", meineTimerFunktion);
myTimer.start();

function meineTimerFunktion(event:TimerEvent):void {

myGegner = new Gegner();

myGegner.x = (Math.random() * 1000);
myGegner.y = player_mc.y + 25;
myGegner.gegnerSpeed = Math.random()* 5;

addChild(myGegner);

myGegner.addEventListener(Event.ENTER_FRAME, gegnerHandler);


}
Welches auch gut funktioniert. Nun habe ich allerdings ein Problem: Ich will eine hitTestObject() oder hitTestPoint() Abfrage zwischen den Schüssen und den Gegnern machen.

Wie spreche ich die beiden an? Ich kann ja nur in der jeweiligen Methode mit
Zitat:
if(e.target.hitTestObject(einObjekt)){
trace("hit");
}
entweder den Schuss, oder den Gegner ansprechen. Wie spreche ich in der Methode "Bollen" einen bzw. alle Gegner an?

Noch mal zum Verständnis: Wenn ein Schuss einen Gegner trifft, soll der Gegner und der Schuss entfernt werden.


Hoffe mal auf 'ne Antwort
wr3ck ist offline   Mit Zitat antworten
Alt 31-05-2011, 10:20   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
Was ohne großen Umbau geht: steck jedes erzeugte Objekt zusätzlich in ein globales Array, gegen welches du jedesmal testen kannst. Das wird aber mit Sicherheit sehr langsam und fehleranfällig. Ein Graus woran du alles denken musst um ein Objekt zu löschen: Listener entfernen, Arrays updaten,... - wenn du davon was vergisst oder zu früh/spät/verkehrt machst, ist der nächste Crash sicher. Tendenz geht gegen unwartbar.

Grundsätzlich wäre ein Szenenmanager (implementiert als Klasse) besser, der alle Objekte kennt, sich um sämtliche Kollisionen kümmert ("jeder gegen jeden" - auch da gibts bewährte Optimierungen) und die Objekte hinzufügt, bewegt, entfernt etc. Und nur ein Enter-Frame-Handler für die ganze Szene statt jedem Objekt seinen eigenen zu geben.
joeydee ist offline   Mit Zitat antworten
Alt 31-05-2011, 11:34   #3 (permalink)
Neuer User
 
Registriert seit: May 2011
Beiträge: 2
Hey,
danke für die Antwort.

Ich verstehe nur so halb wie du das meinst. Du meinst also ich soll eine neue Klasse erstellen in der dann die Objekte erzeugt werden, oder wie? Und brauch ich dann nicht auch dort mehrere Listener (einen Timer und einen MouseDown)?

Kannst du mir da vielleicht ein kleines Beispiel zeigen?


MfG
wr3ck ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
as3, e.target, flash, hittestobject, hittestpoint

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Flash CS5] hitTestObject - Problem ValueTown Flash Einsteiger 6 26-08-2010 04:49
[Flash CS4] Problem mit der Kollisionsabfrage hitTestObject Lyssander Flash Einsteiger 8 25-05-2010 12:15
Problem mit tell target :-(( noni Flash 4 und Flash 5 1 14-11-2001 00:10
tell target problem fgovaere Flash 4 und Flash 5 2 17-10-2001 14:31
Target Problem cedot Flash 4 und Flash 5 4 28-08-2001 14:54


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele