2012-06-03 1 views
0

Je suis un peu nouveau à l'ajout de classes dans AS3, jusqu'ici je viens de faire tout sur frame1 du film. Je me suis dit que je devrais éventuellement apprendre des cours, alors voilà :) Quand j'ajoute des objets sur l'écran, j'aime les regrouper dans des objets de conteneurs pour les utiliser plus tard. J'ai donc une planche de Hex que je construis, et j'essaie de les placer dans un MovieClip nommé hexContainer que j'ai sur la scène. Maintenant, si je faisais ce code comme je le ferais normalement, je ferais juste hexContainer.addChild (tempHex). Cependant, cela me jette une erreur 1120.AS3 - Ajout d'un objet à un MovieClip Container d'une classe

Mon code de classe est la suivante:

package 
{ 
import flash.display.MovieClip 
import Hex 
import flash.display.Stage 

public class Boards extends Hex 
{ 
    public function buildBoardOne() 
    { 
     for(var i:int = 1; i <= 5; i++) 
     { 
      var tempHex:Hex = new Hex(); 
      tempHex.x = 100; 
      tempHex.y = 100; 
      hexContainer.addChild(tempHex); 
     } 
    } 

} 

}

Je l'ai fait au début juste ont ces ajouté à la scène et a été d'obtenir une erreur quand je l'ai fait, c'est pourquoi la déclaration d'importation est là. J'avais vérifié sur google pour comprendre pourquoi et c'est ce qu'ils ont dit de faire.

Maintenant, quand j'ai ajouté cela à la scène, ça a bien fonctionné. J'ai pu obtenir mon hexagone et les manipuler et nous avons fait la fête et c'était un bon moment. Maintenant que j'essaie de les mettre dans le clip du conteneur, ils sont plutôt en colère contre moi et je ne peux pas les apaiser: p

Toute aide que vous pourriez me donner serait grandement appréciée.

Code modifié pour tester ce okayGraphics suggéré:

package 
{ 
    import flash.display.MovieClip 
    import Hex 
    import flash.display.Stage 

    public class Boards extends Hex 
    { 
     var hexContainer:MovieClip = new MovieClip(); 
     stage.addChild(hexContainer); 

     public function buildBoardOne() 
     { 
      for(var i:int = 1; i <= 5; i++) 
      { 
       var tempHex:Hex = new Hex(); 
       tempHex.x = 100; 
       tempHex.y = 100; 
       stage.addChild(tempHex); 
      } 
     } 

    } 

} 
+3

Une suggestion que je peux faire est que lorsque vous commencez à programmer purement dans les classes, vous oubliez la scène et son contenu et travaillez entièrement avec ActionScript. Cela permettra de réduire considérablement la confusion. Utilisez la classe de document comme point d'entrée principal pour les graphiques (car elle doit étendre Sprite ou MovieClip). – Marty

+0

Je ne sais pas exactement comment contourner cela. Je ne sais pas ce qu'est une classe de document.

Répondre

1

Vous obtenez une erreur 1120 parce hexContainer n'est pas défini dans ce package. Soit vous (1) doivent déclarer var hexContainer = [your_reference_here] avant d'essayer d'ajouter des enfants à elle,

ou

(2), vous pouvez simplement ajouter les hexagones que les enfants à la classe Conseils, puis ajouter à votre hexContainer . au lieu de hexContainer.addChild(TempHex); vient de mettre addChild(TempHex);

Il y a beaucoup d'autres façons de le faire aussi, mais je pense que ces deux sont les approches les plus simples.

+0

@ okayGraphics herm ce qui va paraître idiot, mais Je ne suis pas sûr de la façon de procéder. Après votre réponse, j'ai essayé d'ajouter: herm, ne peux pas obtenir le code pour montrer ici, je l'afficherai dans mon message original. Eh bien, j'ai essayé d'ajouter cela, mais je reçois 1120 pour l'étape, et 1120 pour hexContainer. si je commente le stage.addChild (hexContainer); alors je n'obtiens plus le 1120 pour la scène (même si j'ai le stage.addChild (tempHex) qui confond aussi l'hex de moi –