Tout ce que vous avez toujours voulu faire avec Actionscript 3

Une grande innovation introduite par ActionScript 3.0 est d'être capable de lister tous les objets (y compris forme dessinée à l'époque) présente dans un conteneur ( DisplayObjectContainer ). En fait, il était maintenant que Adobe a introduit cette fonctionnalité. J'avais toujours plaints de ce manque, surtout depuis que va débogage de l'environnement Flash a été capable de le mener à bien tranquillement, mais est resté totalement inaccessible à partir du code!

Dans ActionScript 1.0 et 2.0, vous ne pourriez pas accéder à certains objets, comme des formes vectorielles, établi dans l'outil auteur Flash. Dans ActionScript 3.0, vous pouvez accéder à tous les objets dans la liste d'affichage, soit ceux créés dans ActionScript que ceux réalisés avec l'outil auteur Flash.

Cette fonctionnalité n'est pas sous-estimer. Dans les versions précédentes d'ActionScript, en fait, biosgnava suivre des objets de façon artificielle, du conseil en utilisant un tableau par exemple. Par ailleurs, il était encore possible d'accéder à des objets dessinés directement dans l'IDE de Flash. Maintenant vous pouvez "défiler" toute l'arborescence hiérarchique dans une identification simple et rapide des objets, et ensuite tous les éléments qui le composent; du TextField pour la forme.

Certaines des nouvelles méthodes et propriétés (mis à disposition par l'objet DisplayObjectContainer ) qui permettent cela sont:

  • numChildren
    Retourne le nombre d'enfants d'un objet conteneur ( DisplayObjectContainer )
  • getChildAt()
    Renvoie l'occurrence enfant de l'objet d'affichage associée à l'index spécifié.
  • getChildByName()
    Renvoie l'objet d'affichage enfant portant le nom spécifié. Si plus d'un objet d'affichage enfant portant le nom spécifié, la méthode retourne l'objet premier de la liste d'éléments.

Par exemple, à partir de la racine du film, le code suivant nous donne le nombre d'objets sur la scène:

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

Cette boucle simple liste de tous les «noms» des objets sur la scène:

1
2
3
4
5
6
: DisplayObject ; // generico enfants var: DisplayObject / / Générique
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <ce numChildren; i + +). {
getChildAt ( i ) ; Conteneurs enfant = getChildAt (s).;
child . name ) ; trace (nom enfant.);

}

Essayez de dessiner quelque chose sur la scène avec le dessin glistrumeti fournies par l'IDE Flash et exécuter ce code:

1
2
3
4
5
: DisplayObject ; // generico enfants var: DisplayObject / / Générique
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <ce numChildren; i + +). {
getChildAt ( i ) ; Conteneurs enfant = getChildAt (s).;
rotation = 20 ; . enfants de rotation = 20;
}

Grande forme des objets IDE également être consulté et modifié à l'exécution, la première chose pratiquement impossible sauf si elles ont été transformées en MovieClip avec un nom d'instance!

Puis ce qui est intéressant est la capacité à identifier des objets qui nous intéressent par l'opérateur is . Par exemple, vous pouvez identifier un objet (ou symbole) est le nom du type. Souvent, quand un symbole est créé par le nom de la bibliothèque runtime n'a pas de sens (instance3) et est utile d'être capable d'identifier le type:

1
2
3
4
5
6
7
: DisplayObject ; // generico enfants var: DisplayObject / / Générique
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <ce numChildren; i + +). {
getChildAt ( i ) ; Conteneurs enfant = getChildAt (s).;
child is TextField ) { if (enfant est TextField ) {
/ / Faire quelque chose ...
}
}

La chose intéressante est que si nous avons exporté une classe MovieClip en créant des bibliothèques de nos propres CMiaClasse nous pouvons écrire:

1
2
3
4
5
6
7
: DisplayObject ; // generico enfants var: DisplayObject / / Générique
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <ce numChildren; i + +). {
getChildAt ( i ) ; Conteneurs enfant = getChildAt (s).;
child is CMiaClasse ) { if (enfant est CMiaClasse) {
/ / Faire quelque chose ...
}
}

Ce personnage est très utile et permet un contrôle presque total sur les instances, surtout quand vous avez pour créer la fonction de «délester» des objets qui ne sont plus nécessaires! Par exemple, voici comment faire «disparaître» de la forme dessinée à la main:

1
2
3
4
5
: DisplayObject ; // generico enfants var: DisplayObject / / Générique
var i : uint = 0 ; i < this . numChildren ; i ++ ) { for (var i: uint = 0; i <ce numChildren; i + +). {
getChildAt ( i ) ; Conteneurs enfant = getChildAt (s).;
child is Shape ) this . removeChild ( child ) ; if (l'enfant est de forme ), ce removeChild (enfant).;
}

Amazing! ;)

Il n'y a aucun commentaire pour cet article

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <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