Alles, was Sie wollten schon immer mal mit Actionscript 3 zu tun

Eine große Innovation mit Actionscript 3.0 eingeführt wird, um der Lage sein, alle Objekte (einschließlich Form an der Zeit gezeichnet) in einen Behälter (Liste DisplayObjectContainer ). In der Tat war es nun, dass Adobe diese Funktion eingeführt. Ich hatte immer über diesen Mangel beklagt, vor allem seit dem Börsengang zu debuggen der Flash-Umgebung konnte sie auszuführen ruhig blieb aber völlig unzugänglich aus dem Code!

In ActionScript 1.0 und 2.0 konnten Sie keinen Zugriff auf bestimmte Objekte, wie Vektorformen, in dem Flash-Authoring-Tool erstellt. In ActionScript 3.0 können Sie auf alle Objekte in der Anzeigeliste, entweder die in ActionScript erstellt werden, die mit dem Flash-Authoring-Tool.

Diese Funktion ist nicht zu unterschätzen. In früheren Versionen von ActionScript, in der Tat halten biosgnava track von Objekten in einer künstlichen Art und Weise, board mit einem Array zum Beispiel. Darüber hinaus war es noch möglich, Objekte direkt in der IDE von Flash erstellt zugreifen. Jetzt können Sie "blättern" die gesamte hierarchische Struktur in eine einfache und schnelle Identifikation von Objekten, und dann alle Elemente, die sie zusammensetzen, von TextField Shape.

Einige der neuen Methoden und Eigenschaften (zur Verfügung gestellt durch das Objekt DisplayObjectContainer ), dass dies zu ermöglichen, sind:

  • numChildren
    Gibt die Anzahl der Kinder eines Container-Objekts ( DisplayObjectContainer )
  • getChildAt()
    Gibt das untergeordnete Anzeigeobjekt-Instanz, die an der angegebenen Index existiert.
  • getChildByName()
    Gibt das untergeordnete Anzeigeobjekt für den angegebenen Namen existiert. Wenn mehr als eine untergeordnete Anzeigeobjekt für den angegebenen Namen hat, gibt die Methode das erste Objekt in der Liste der Elemente.

Zum Beispiel, ausgehend von der Wurzel des Films, gibt der folgende Code uns die Anzahl der Objekte auf der Bühne:

1
this . numChildren ) ; trace (this. numChildren);

Diese einfache Schleife listet alle "Namen" der Objekte auf der Bühne:

1
2
3
4
5
6
: DisplayObject ; // generico var child: DisplayObject / / Generic
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <diesem numChildren; i + +.) {
getChildAt ( i ) ; = Untergeordneten Container getChildAt (s).;
child . name ) ; trace (Kind. name);

}

Versuchen Sie, etwas auf der Bühne mit glistrumeti Zeichnung durch die IDE Flash zur Verfügung gestellt zu ziehen und diesen Code ausführen:

1
2
3
4
5
: DisplayObject ; // generico var child: DisplayObject / / Generic
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <diesem numChildren; i + +.) {
getChildAt ( i ) ; = Untergeordneten Container getChildAt (s).;
rotation = 20 ; . Kind Rotation = 20;
}

Große Shape-Objekte IDE auch abgerufen und zur Laufzeit geändert werden, das erste, was im Grunde unmöglich, wenn sie in MovieClip mit dem Instanznamen verwandelt wurden!

Und was interessant ist, ist die Fähigkeit, Gegenstände, die uns interessieren durch den Betreiber zu identifizieren is . Zum Beispiel können Sie erkennen ein Objekt (oder Symbol) ist der Name des Typs. Oft, wenn ein Symbol von der Laufzeitbibliothek Namen geschaffen hat keine Bedeutung (instance3) und ist nützlich, um in der Lage sein, um den Typ zu identifizieren:

1
2
3
4
5
6
7
: DisplayObject ; // generico var child: DisplayObject / / Generic
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <diesem numChildren; i + +.) {
getChildAt ( i ) ; = Untergeordneten Container getChildAt (s).;
child is TextField ) { if (Kind TextField ) {
/ / Do something ...
}
}

Das Interessante daran ist, dass wenn wir eine Bibliothek MovieClip-Klasse durch Erstellen eigener exportiert haben CMiaClasse können wir schreiben:

1
2
3
4
5
6
7
: DisplayObject ; // generico var child: DisplayObject / / Generic
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <diesem numChildren; i + +.) {
getChildAt ( i ) ; = Untergeordneten Container getChildAt (s).;
child is CMiaClasse ) { if (Kind CMiaClasse) {
/ / Do something ...
}
}

Dieser Charakter ist sehr nützlich und ermöglicht eine fast vollständige Kontrolle über die Instanzen, vor allem, wenn Sie das Feature zu erstellen, um "Download" Objekte, die nicht mehr benötigt werden können! Zum Beispiel, hier ist, wie man "verschwinden" die Hand gezeichnete Form:

1
2
3
4
5
: DisplayObject ; // generico var child: DisplayObject / / Generic
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <diesem numChildren; i + +.) {
getChildAt ( i ) ; = Untergeordneten Container getChildAt (s).;
child is Shape ) this . removeChild ( child ) ; if (Kind Form ) dieser removeChild (Kind).;
}

Amazing! ;)

Es gibt keine Kommentare für diesen Beitrag

Hinterlasse einen Kommentar

XHTML TAG PERMIT: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Stoppen SOPA