You are not logged in.

  • Login

1

Sunday, December 19th 2010, 1:55am

ActionScript: Kollision

Hallo @ all

Ich möchte eine Kollision von zwei Kreisen machen. Habe dazu einen leeren Movieclip dem einen Kreis untergeordnet. Wenn ich jetzt diesen Code benutze pasiert aber gar nichts wenn sich die beiden Kreise berühren:

ActionScript Quellcode

1
2
3
4
if(this.Spieler_1.hitTestPoint(this.Ball.Leer.x, this.Ball.Leer.y, false))
	{	
		trace("Hit Spieler");
	}


Was ist falsch daran? Hoffe auf eure Hilfe.

Viele Grüße
Crosaider

2

Tuesday, December 21st 2010, 9:21am

1. Du weißt, dass es zwei Hittest-Methoden gibt? hitTestPoint und hitTestObject
2. Du weißt, dass du permanent die hittest-Methode abfragen musst?

ActionScript Quellcode

1
2
3
4
5
6
7
8
9
10
//1.
Spieler_1.addEventListener(Event.ENTER_FRAME, test);
 
//2.
function test(event:Event):void {
if(Spieler_1.hitTestPoint(Ball.Leer.x, Ball.Leer.y, false))
	{	
		trace("Hit Spieler");
	}
}

3

Tuesday, December 21st 2010, 5:19pm

ja weiß ich. der code ist im ENTER_FRAME event...

Habe mir gerade mal Ball.Leer.x und yausgeben lassen. Der Ball fällt zwar runter aber die Koordinaten bleiben immer gleich. Vllt habe ich Sie falsch untergeordnet?

Habe doppelt auf den Ball geklickt dann einen leeren Movieclip auf die Stage gezogen und an den Rand vom Ball gesetzt. Eigentlich müsste der sich doch dann mitbewegen oder?

This post has been edited 1 times, last edit by "Crosaider" (Dec 21st 2010, 5:47pm)


4

Wednesday, December 22nd 2010, 1:33pm

Warum nimmst du nicht gleich Ball.x und Ball.y?
Ich denk, dass das an deinem leeren MovieClip liegt....

5

Wednesday, December 22nd 2010, 1:40pm

Die Movieclips sind an verschiedenen Punkten des Balls. Wenn ich nur x und y benutze ist das ja nur

1. die Box um den Ball
2. ein Punkt - will aber "jeden" Punkt des Balles mit Koordinaten erreich können.

Das ganze ist so vorzustellen:
http://openbook.galileocomputing.de/acti…bilder/1503.gif

So kann ich ja sozusaegn jeden Punkt des Balles erreichen.

UPDATE: Habs hinbekommen. Die Movieclips wwerden, wenn Sie untergeordnet werden an der Position des Symbols neu berechnet. Also sind sie z.B nicht bei 200x300 sondern bei 2x3. Einfach die X Koordinate mit draufrechnen ;)

Hab jetzt aber eine andere frage: Wie kann ich alle untergeordneten Movieclips mit einer For-Schleife durchgehen und einzeln ansprechen?

6

Sunday, December 26th 2010, 1:56pm

Ich habe mir mal dafür eine rekursive Funktion geschrieben. Du kannst sie aber ganz leicht umschreiben:

Mehr unter http://blog.axxg.de/2009/09/alle-objekte…stage-ausgeben/

ActionScript Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function displayAll(container:DisplayObjectContainer, parent:String):void
{
	var child:DisplayObject;
 
	parent = parent + "--->" + container.name;
 
	for (var i:uint=0; i < container.numChildren; i++) {
		child = container.getChildAt(i);
		if (child is MovieClip) {
			trace(container.name + "--->" + child.name);
		}
		if (container.getChildAt(i) is DisplayObjectContainer) {
			displayAll(DisplayObjectContainer(child), parent );
		}
	}
	trace(parent);
}
 
// Aufruf
displayAll(this, "stage");

This post has been edited 1 times, last edit by "Torben Brodt" (Dec 27th 2010, 9:24am) with the following reason: Code Inline ergänzt. Link erhalten.


Similar threads

Social bookmarks