Flashhilfe.de - Flash Community

currentTarget & hitTestObject Problem [Flash 9]

 


AntwortenRegistrieren Seite1  

MayM.#1
Benutzerbild von MayM.
Beiträge: 9
Registriert: Apr 2009

20.04.2009, 22:47

Hallo zusammen!

Ich hab ein kleines Problem mit meinem currentTarget und bin nach langer Suche immer noch auf keine Lösung gekommen... (Jub, noch ein Newbie, aber irgendwo muss man ja anfangen... )

Es geht darum das ich eine Reihe dragbarer MCs habe, die bei Kontakt mit meinem exit-MC verschwinden sollen. (Im Moment werden sie unsichtbar und an die Startposition verschoben... Kann man das auch eleganter lösen?)

ActionScript:
1
2
3
4
5
6
7
function checkHitTest(m:Event) {
   if (m.currentTarget.hitTestObject(exit)) {
      m.currentTarget.visible=false;
      m.currentTarget.stopDrag();
      m.currentTarget.x=startx;
      m.currentTarget.y=starty;
   }


Blöderweise funktioniert das nicht, da mein hitTestObject zum neuen currentTarget wird...
Ich neige schon zu Verzweiflungstaten wie das currentTarget auf irgendner variable zwischen zu speichern und nach dem hittest wieder abzurufen... Falls sowas überhaupt geht.

Hat irgendjemand eine Idee, wie ich das Problem umgehen oder lösen kann?

Vielen Dank!!!

  May
Geändert von MayM. am 20.04.09 um 22:59 Uhr
Kerstin77#2
Benutzerbild von Kerstin77
Beiträge: 1003
Registriert: Jul 2008

21.04.2009, 00:01

Hi,

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
33
34
// Rechtecke auf Bühne holen
for(var i:uint=0;i<4;i++) {
   var rechteck_mc:rechteck = new rechteck;
   rechteck_mc.x = 10;
   rechteck_mc.y = i*100+10;
   rechteck_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragdrop);
   rechteck_mc.addEventListener(MouseEvent.MOUSE_UP, dragdrop);
   addChild(rechteck_mc);
}

// Funktion, die das Drag & Drop ermöglicht
function dragdrop(evt:Event):void {
   switch(evt.type) {
      case "mouseDown" :
         evt.currentTarget.startDrag(false);
         evt.currentTarget.addEventListener(Event.ENTER_FRAME, hittest);
         break;
      case "mouseUp" :
         evt.currentTarget.stopDrag();
         evt.currentTarget.removeEventListener(Event.ENTER_FRAME, hittest);
         break;
   }
}

// Funktion, die auf Hittest prüft und ggf. den MC löscht
function hittest(evt:Event):void {
   var child:DisplayObject = evt.currentTarget as MovieClip;
   if(evt.currentTarget.hitTestObject(exit_mc)) {
      evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN, dragdrop);
      evt.currentTarget.removeEventListener(MouseEvent.MOUSE_UP, dragdrop);
      evt.currentTarget.removeEventListener(Event.ENTER_FRAME, hittest);
      removeChild(child);
   }
}


Siehe auch Beispiel im Anhang.

Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
Geändert von Kerstin77 am 21.04.09 um 00:16 Uhr
MayM.#3
Benutzerbild von MayM.
Beiträge: 9
Registriert: Apr 2009

Themenautor/in

21.04.2009, 20:01

Vielen Dank Kerstin!! :)

Klappt super; habs auch geschafft das auf meine schon vorhandenen Objekte anzuwenden. :D

Allerdings hab ich nun ein anderes Problem, zu dem ich noch keine Lösung gefunden habe...
Meine Objekte sind ja schon on stage, werden aber erst durch klick auf einen button sichtbar.
Die Buttons heißen zb XYZ und das zugehörige object XYZ1. Das ganze soll aber auch für sämtliche anderen Pare ABC, DEF, GHI,... gehen.
Um das ganze nicht zig-mal schreiben zu müssen, hab ich versucht, den Namen des Buttons als String umzuwandeln und einfach die 1 anzuhängen (...was ja auch klappt); nur weiß ich nicht, wie ich aus dem Ding wieder auf mein entsprechendes Object XYZ1 komme. :/

ActionScript:
1
2
3
4
5
6
7
8
//Click On
tom.addEventListener(MouseEvent.CLICK, tomclick);

function tomclick(evt:MouseEvent) {
   tom1.visible = true;
   tom1.addEventListener(MouseEvent.MOUSE_DOWN, dragdrop);
   tom1.addEventListener(MouseEvent.MOUSE_UP, dragdrop);
}


ActionScript:
1
2
3
4
5
6
7
8
9
function cl(evt:MouseEvent) {
   var co:String = evt.currentTarget.name;
   trace(co)
   co=co+1;
   trace(co);
   ?????????
   co.addEventListener(MouseEvent.MOUSE_DOWN, dragdrop);
   co.addEventListener(MouseEvent.MOUSE_UP, dragdrop);
}
Geändert von MayM. am 21.04.09 um 21:30 Uhr
Werbung
nicht sichtbar bei eingeloggten Mitgliedern
Kerstin77#4
Benutzerbild von Kerstin77
Beiträge: 1003
Registriert: Jul 2008

22.04.2009, 19:06

Hi,

ActionScript:
1
2
3
4
5
6
function cl(evt:MouseEvent) {
   var co:String = evt.currentTarget.name + "1";
   getChildByName(co).visible = true;
   getChildByName(co).addEventListener(MouseEvent.MOUSE_DOWN, dragdrop);
   getChildByName(co).addEventListener(MouseEvent.MOUSE_UP, dragdrop);
}


Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
MayM.#5
Benutzerbild von MayM.
Beiträge: 9
Registriert: Apr 2009

Themenautor/in

22.04.2009, 19:54

Vielen, vielen Dank, Kerstin!! :)

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
MovieClip und Arrays [Flash 11] 21.05.2012 - maroni15
Partner Webseiten: art-and-law.de  DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de   Tutorials.de

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