2010-03-05 6 views
2

Je suis novice en ActionScript alors excusez-moi si c'est une question stupide. J'ai donc créé une classe, étendu la classe des sprites, et maintenant dans le constructeur, j'essaie de définir les propriétés width et height du Sprite qui sont héritées de DisplayObject. Cependant, après avoir défini this.width et this.height, et imprimer les valeurs, j'obtiens 0 pour les deux.AS3 Class Sprite Spread

Que diable se passe-t-il? Quand je regarde les livesocs, je vois que DisplayObject a la largeur et la hauteur listées comme propriétés publiques. J'ai été capable d'instancier directement un sprite, et de définir la largeur et la hauteur après l'instanciation, donc je ne comprends pas.

package { 
    import flash.display.*; 

    public class ScrollBar extends Sprite { 
     public function ScrollBar(width:Number, height:Number) { 
      trace(width + "x" + height); 
      this.width = width; 
      this.height = height; 
      trace(this.width + "x" + this.height);   
    } 
} 

sortie:

20x400 
0x0 
+0

Je ne suis pas sûr de 'width: uint, height: uint'. Que se passera-t-il lorsque vous les changerez en ': Number', car' this.width' est de type Number. – Pindatjuh

+0

Même résultat même avec Number. Vous avez raison, les attributs doivent être Number. – Steve

Répondre

5

De l'docs:

La largeur est calculée sur la base des limites du contenu de l'écran objet . Lorsque vous définissez la largeur propriété, la propriété scaleX est ajustée en conséquence ... Sauf pour TextField et objets vidéo, un objet affichage sans contenu (comme un sprite vide) a une largeur de 0, même si vous essayez de définir la largeur à une valeur différente.

Vous aurez besoin de rendre quelque chose dans le cadre de l'image-objet pour obtenir un w/h valide.

+0

Génial, merci. Cela m'a déconcerté. – Steve

+0

Merci; Cela m'a aidé aussi aujourd'hui! – JeffryHouser