Question

Je crée une sous-classe MovieClip (appelons-le MyClip) que je veux utiliser pour plusieurs actifs de la bibliothèque. Je vais instancié avec ces clips vidéo à partir du code ActionScript. MyClip a un paramètre de constructeur qui lui permet de fixer les valeurs initiales de certaines propriétés.

Comme je veux l'utiliser pour de multiples ressources de la bibliothèque, la façon logique de le faire semble l'indiquer dans la zone de texte « classe de base » dans la boîte de dialogue « Propriétés du symbole ». Le problème est que les sous-classes générées automatiquement ne sont pas le constructeur avec le paramètre. Au lieu de cela, Flash tente de les générer avec un constructeur par défaut uniquement, ce qui échoue aussi parce que MyClip ne dispose pas d'un constructeur par défaut.

Y at-il moyen de contourner cela, en dehors de l'initialisation de la propriété de reporter à une méthode normale?

Modifier Je n'ai pas été assez clair, je vais essayer de préciser ici. Si cela est la classe MyClip:

public class MyClip extends MovieClip
{
    private var someValue : Number;

    public function MyClip(someValue : Number)
    {
        this.someValue = someValue;
    }
}

et je spécifié MyClip comme classe de base pour MyClipA symbole dans la bibliothèque, je voudrais idéalement pouvoir faire clip = new MyClipA(17); sans avoir à écrire la classe MyClipA moi-même.

Était-ce utile?

La solution

Je suppose la raison pour laquelle vous devez créer MyClipA et MYClipB, etc cours est d'attacher l'art à des objets différents qui ont juste les comportements d'un objet myClip?

Peut-être que vous pourriez aborder différemment, faites votre classe de base - myClip que vous avez votre exemple, accepter 2 aruguments, dont une est une référence à l'art:

public class MyClip extends MovieClip
{
    public var art:ArtBaseClass
    private var someValue : Number;

    public function MyClip(someValue : Number, artClass:ArtBaseClass)
    {
        this.someValue = someValue;
        this.art = new artClass();
        this.addChild(art);
    }
}

Et vous pouvez définir tout ce dont vous avez besoin dans un ArtBaseClass qui est appliqué à chacun de ces objets de la bibliothèque d'art.

Autres conseils

Je ne pense pas que cela peut vraiment être fait. Mais si on peut le faire, il sera bel et bien avec le prototype. Peut-être que vous pouvez changer le contructor de chacune des classes par défaut.

Essayez d'indiquer les arguments par défaut pour le constructeur (null comme une valeur particulière, peut-être?). Ensuite, ajoutez un peu de vérification des erreurs au début du constructeur qui définit les valeurs par défaut raisonnables pour votre MovieClip. Il est vraiment aki, mais pour autant que je sais qu'il n'y a pas une meilleure façon de le faire en utilisant le glisser-déposer animant l'interface utilisateur (vous ne pouvez le faire par le code).

Si a couru dans cela aussi. La bonne façon de le résoudre est de créer des classes pour MyClipA et MyClipB héritant de myClip. Cela peut être lourd s'il y a beaucoup de classes qui sont basées sur myClip. Là encore, si tel est le cas, vous voudrez peut-être commencer à penser à utiliser la composition au lieu de l'héritage de toute façon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top