Flashhilfe.de - Flash Community

Probleme mit der Kollisionsabfrage mit hitTestObject [Flash 10]

Forum > ActionScript 3.0 > Probleme mit der Kollisionsabfrage mit hitTestObject

 


AntwortenRegistrieren Seite1  

 20.05.2010, 17:29 
Beiträge: 2
Registriert: May 2010

Probleme mit der Kollisionsabfrage mit hitTestObject
Hallo Welt!

ich habe mich nun daran gemacht eine erste einfache Kollisionsabfrage zu erstellen und bin daran... gescheitert.

Sollzustand: Wenn der äußere Rahmen des Movieclips Player (Player hat auch seine eigene Klasse) den äußeren Rahmen von Moviclip Labyrinth berührt soll ein trace ausgegeben werden.
Ist-Zustand: KEINE Fehlermeldung aber auch keine Kollision. Player Läuf hinter dem Objekt Labyrinth ohne trace vorbei. Es verhält sich so, als sei überhaupt keine Kollisionsabfrage im Hintergrund abgelaufen.

Was ich gemacht habe: Dem Movieclip Labyrinth wurde eine eigene Klasse zugeordnet. In der Actionsscriptdatei steht folgendes:

package de.mhmk.sfink.graphics{
import flash.display.MovieClip;
import flash.events.*;
import com.greensock.TweenLite;
import flash.ui.Keyboard;
import flash.display.*;

public class labyrinth extends MovieClip {

var Player:MovieClip = new MovieClip;
var Labyrinth:MovieClip = new MovieClip;

public function labyrinth():void {
trace('Labyrinth constructed');


stage.addEventListener(Event.ENTER_FRAME, kollisionsabfrage);

function kollisionsabfrage(evt:Event) {

if (Player.hitTestObject(Labyrinth)) {

trace("Kollision!")
}
}
}

}

}

Tabulatoren will der hier nicht nehmen


Wo liegt mein Fehler? Soll ich die Datein irgendwo hochladen?
Ich versuche mir die Logik von AS alleine ein wenig näher zubringen aber irgendwie habe ich noch kein Auge dafür. Also bitte für Anfänger erklären.
Wäre eine Bitmapkollisonsabfrage vielleicht sinnvoll?
Denn ganz per Hand mathematisch glaube ich nicht, dass ich das hinbekomme.

Verzweifelte Grüße

Lyssander
Schlagwörter: hitTestObject
 20.05.2010, 18:04Re1
Beiträge: 568
Registriert: May 2007

du hast die sachen warscheinlich einfach auf die stage gezogen das problem du sprichst die sachen so leider nicht an du machst lediglich neue movieclips probier das ganze mal eher so

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package de.mhmk.sfink.graphics{
import flash.display.MovieClip;
import flash.events.*;
import com.greensock.TweenLite;
import flash.ui.Keyboard;
import flash.display.*;

public class labyrinth extends MovieClip {

var Player:MovieClip = new MovieClip;
var Labyrinth:MovieClip = new MovieClip;

public function labyrinth():void {
trace('Labyrinth constructed');
Player = this.getChildByName("myplayer"); // myplayer muss der instanz name sein
Labyrinth = this.getChildByName("labyrinth"); //  the same

stage.addEventListener(Event.ENTER_FRAME, kollisionsabfrage);

function kollisionsabfrage(evt:Event) {

if (Player.hitTestObject(Labyrinth)) {

trace("Kollision!")
}
}
}

}

}
Bitte keine pn´s wegen irgendwelchen fragen zu Threads, dafür gibt es sie ja schließich
 21.05.2010, 10:47Re2
Beiträge: 2
Registriert: May 2010

Themenautor/in

Hallo,

erstmal vielenlieben Dank für deine Antwort. Du hast recht, ich habe die Movieclips einfach auf der Bühne erstellt.

Wennich deine Version austeste wird mir nun jedoch folgende Fehlermeldung ausgegeben, mit der ich leider nichts nafangen kann :(

1118: Implizite Umwandlung von einem Wert mit statischem Typ flash.display:DisplayObject in einen möglicherweise nicht verwandten Typ flash.display:MovieClip.

Kannst du mir nochmal einen Tip geben?

Liebe Grüße

Lyssander
 
nicht sichtbar bei eingeloggten Mitgliedern
 22.05.2010, 16:07Re3
Beiträge: 568
Registriert: May 2007

ah joh sry mein fehler nochmal :D

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package de.mhmk.sfink.graphics{
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.events.*;
import com.greensock.TweenLite;
import flash.ui.Keyboard;
import flash.display.*;

public class labyrinth extends MovieClip {

var Player:DisplayObject;
var Labyrinth:DisplayObject;

public function labyrinth():void {
trace('Labyrinth constructed');
Player = this.getChildByName("myplayer"); // myplayer muss der instanz name sein
Labyrinth = this.getChildByName("labyrinth"); //  the same

stage.addEventListener(Event.ENTER_FRAME, kollisionsabfrage);

function kollisionsabfrage(evt:Event) {

if (Player.hitTestObject(Labyrinth)) {

trace("Kollision!")
}
}
}

}

}
Bitte keine pn´s wegen irgendwelchen fragen zu Threads, dafür gibt es sie ja schließich
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de