9
votes

ActionScript 3 init ()

J'ai souvent vu un init () dans le constructeur de classes AS3, même étant parfois le seul code du constructeur. Pourquoi serait-il utile de le faire, si vous pouvez simplement utiliser la fonction constructrice elle-même pour initialiser une classe? XXX


0 commentaires

4 Réponses :


16
votes

Dans ActionScript 3, le code du constructeur est toujours interprété plutôt que compilé. Je crois que le déplacement du code en une fonction init () peut lui permettre d'être compilé et optimisé.

http://blog.pixelbreaker.com/flash/as30-jit -vs-interprété /


1 commentaires

En effet, si vous avez un code important, mettez-le dans une fonction appelée par le constructeur.



6
votes

La raison pour laquelle j'ai fait est de pouvoir réinitialiser une classe sans en créer une nouvelle instance. La méthode Init () fonctionne comme un bouton "Réinitialiser" alors, si vous le permettez à droite, ce qui vous permet de renvoyer la classe à son état initial pendant, par exemple, permettant aux variables qui ont été réglées pour rester définies.

Selon la façon dont vous le codez, bien sûr.


0 commentaires

3
votes

Une autre raison peut être que vous avez besoin d'une référence à la scène ou à un conteneur parent et est trop paresseux pour configurer un ajouté_to_stage écouteur. Ensuite, vous auriez instancier la classe en premier, ajoutez-le au conteneur, puis appelez init () une fois qu'il figure sur la liste de diffusion.


0 commentaires

2
votes

Les programmeurs nouveaux à AS3 ont souvent des problèmes de référencement de la scène (le bien connu «ce n'est pas là»).

En faisant ...: P>

public function ClassName()
{
    super();
    addEventListener( Event.ADDED_TO_STAGE, init, false, 0, true );
}

private function init( event : Event ) : void
{
    removeEventListener( Event.ADDED_TO_STAGE, init );
    // Reference stage.stageWidth;
    // Call init after some sort of load completion initialized in the constructor
}


0 commentaires