{lang: 'de'}
Flashhilfe.de - Flash Community

Steuern nachgeladener SWFs [Flash 11]

 


AntwortenRegistrieren Seite1  

jenny88#1
Benutzerbild von jenny88
Beiträge: 18
Registriert: Aug 2010

02.06.2011, 15:19

Hallo ihr Lieben,

ich habe mal wieder eine klitzkleines Problem:

Es werden via XML SWFs nachgeladen. Diese beinhalten einfache Zeitleisten-Animationen.
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
         ... ... ..
                        var _container:Sprite = new Sprite();
         addChild(_container);
         pics[i] = _container;
         pics[i].x = (430-(cubesSumme*60))+(cubesCount*120);
         pics[i].y = 425;
         pics[i].addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOverHandler);
         pics[i].addEventListener(MouseEvent.MOUSE_OUT , fl_MouseOutHandler);
         pics[i].addEventListener(MouseEvent.MOUSE_DOWN, fl_MouseDownHandler);
         pics[i].buttonMode = true;
         pics[i].useHandCursor = true;
         _container.addChild(_loaders[i])
      }
   }
}


Funktioniert alles Prima. Objekte erscheinen an der richtigen Stelle usw.

Beim Mausover soll allerdings der geladene MC ab Bild 2 loslaufen:
ActionScript:
1
2
3
4
function fl_MouseOverHandler(e:MouseEvent):void
{
     e.currentTarget.gotoAndPlay(2);
}

Was so leider nicht funktioniert. Was mach ich falsch?

Lieben Dank schonmal für eure Hilfe.
Jenny
Schlagwörter: AS3, Extern, nachladen, steuern
micB#2
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

03.06.2011, 12:30

mal geraten ...
dein currentTarget aus der mouseOver-funtion ist doch der container.
also ein sprite, in das du die swf als child gelegt hast.
mit "e.currentTarget.gotoAndPlay(2)" sprichst du den sprite an, nicht sein child, die swf.
jenny88#3
Benutzerbild von jenny88
Beiträge: 18
Registriert: Aug 2010

Themenautor/in

03.06.2011, 13:55

ok. das bringt mich aber leider noch nicht zum Ziel.

ActionScript:
1trace (e.currentTarget.name);


Liefert mir "instance22" zurück.

Weder
ActionScript:
1   e.currentTarget.child.gotoAndPlay(2);

noch
ActionScript:
1   e.currentTarget.parent.gotoAndPlay(2);

funktioniern.

Wie muss ich das Baby denn jetzt ansprechen?
micB#4
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

03.06.2011, 15:01

> ok. das bringt mich aber leider noch nicht zum Ziel.
na dann ...
ob "currentTarget" der container-sprite ist, kannst du so herausfinden:
ActionScript:
1trace (e.currentTarget is Sprite); // ergibt true, falls sprite


falls "true" angezeigt wird, kannste weiterlesen, ansonsten ist der rest hinfällig.

das "child" erhälst du mit:
ActionScript:
1var myChild = e.currentTarget.getChildAt(0) as MovieClip;

damit hast du das 1. child im sprite. das sollte dann die geladene swf sein.
starten dann mit:
ActionScript:
1myChild.gotoAndPlay(2)
jenny88#5
Benutzerbild von jenny88
Beiträge: 18
Registriert: Aug 2010

Themenautor/in

03.06.2011, 15:36

Heul.... 8-(((.

füge ich folgenden Code ein:
ActionScript:
1
2
3
trace (e.currentTarget is Sprite);
var myChild = e.currentTarget.getChildAt(0) as MovieClip;
myChild.gotoAndPlay(2) ;


Erhalte ich diese Ausgabe:
ActionScript:
1
2
3
true
TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
   at FlashFinalVersion01_fla::MainTimeline/fl_MouseOverHandler()
micB#6
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

04.06.2011, 11:19

tja, schade!
deine ausgabe sagt: "ja, ich bin ein sprite" und "nein, ich habe kein child".
das ist merkwürdig ...
ich würde jetzt versuchen, herauszufinden, ob es wirklich der _container-sprite ist, der geklickt wird.
scheint nicht so ...

gib dem _container beim erstellen doch mal einen namen:
ActionScript:
1
2
var _container:Sprite = new Sprite();
_container.name = "test"+i;

(woher dieses "i" kommt, weiss ich nicht. aber du verwendest es ja bei "pics[i]")

abfragen kannst du den namen dann mit:
ActionScript:
1trace (e.currentTarget.name);


du kannst auch abfagen, ob in dem target überhaupt was enthalten ist:
ActionScript:
1trace (e.currentTarget.numChildren);


und so nebenbei ...
woher kommen denn diese "pics[i]" und warum verwendest du sie und nimmst nicht für positionierung und listener direkt den _container-sprite?
jenny88#7
Benutzerbild von jenny88
Beiträge: 18
Registriert: Aug 2010

Themenautor/in

06.06.2011, 13:28

So hier die Ergebnisse:

ActionScript:
1
2
3
4
5
6
function fl_MouseOverHandler(e:MouseEvent):void
{
  trace (e.currentTarget.name);
  trace (e.currentTarget is Sprite);
  trace (e.currentTarget.numChildren);
}

Liefert als Ausgabe:
ActionScript:
1
2
3
test0
true
1


Da ich die ganze Parent / Child - Sache nicht gescheit auf den Schirm bekomme -  wo gibt es denn im Web ein vernünftiges Tutorials/Literaturtipps  mit Beispielen, wie das ganze in den Griff zu bekommen ist?
Für brauchbare Tipps würd ich mich riesig Freuen.

Einen schönen Tag Euch
J.

AntwortenRegistrieren Seite1  

Schnellantwort

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

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de