[AS2 -> AS3] getDefinitionByName à la place d’un attachMovie dynamique

3 mai 2009 – 20:51

Encore un petit aide-mémoire : jusqu'à maintenant je n'avais jamais eu besoin d'attacher dynamiquement un clip de ma librairie sur ma scène en actionscript 3. Notez que lorsque je dis dynamiquement, je veux dire en utilisant une variable de type String qui serait l' id d'un élément dans ma librairie. En effet, avec actionscript 3 tous les éléments de la librairie sont des classes et pour les attacher sur la scène il faut les instancier avec l'opérateur "new".

Mais faire new "nom_de_la_classe_dans_la_librairie"() cela ne fonctionne pas évidemment.

Mais heureusement, il suffit d'utiliser getDefinitionByName :

import flash.utils.getDefinitionByName;
 
var maclasse:Class = getDefinitionByName("nomdemaclassedanslalibrairie");
var instance:Object = new maclasse();
this.addChild(maclasse(instance));

ou plus rapidement

var instance = new (getDefinitionByName("nomdemaclassedanslalibrairie") as Class);

Bon à savoir...

  1. 2 Responses to “[AS2 -> AS3] getDefinitionByName à la place d’un attachMovie dynamique”

  2. Après il faut que tu t’amuses depuis un swf externe

    By neolao on mai 3, 2009

  3. Bonjour,

    pour le premier exemple, il faut forcer le type du résultat de getDefinitionByName:

    import flash.utils.getDefinitionByName;

    var maclasse:Class = Class(getDefinitionByName(« nomdemaclassedanslalibrairie »));
    var instance:Object = new maclasse();
    this.addChild(maclasse(instance));

    Sinon ça marche très bien!

    Pascal

    By Pascal on mai 4, 2009

Post a Comment