0 votes

Hériter des propriétés d'un DisplayObject

En ce qui concerne le projet as3 : Existe-t-il un moyen d'hériter des propriétés d'un DisplayObject donné ? Je suis à la recherche d'une méthode unique qui saisira quelque chose comme le x, y, largeur, hauteur, couleur, etc. Tout ce qui est impliqué dans les classes communes entre les deux objets d'affichage.

...

Edit :

Je ne pense pas avoir été assez clair... Laissez-moi vous donner un exemple du type de fonctionnalité que je recherche.

var sp1:Sprite = new Sprite();
sp1.x = 30;
sp1.y = 30;
sp1.width = 500;
sp1.height = 30;
var tf1:TextField = new TextField();
tf1.inheritTransform(sp1);

Dans ce cas, je sais que la méthode "inheritTransform()" n'existe pas, mais je me demande s'il existe quelque chose de similaire. Ou peut-être que je ne comprends pas l'intérêt d'étendre une classe d'une certaine manière ? Je ne vois pas comment les deux seraient liés dans un tel cas.

Merci, jml

1voto

bhups Points 6257

La référence du langage Actionscript 3 dit :
The DisplayObject class itself does not include any APIs for rendering content onscreen. For that reason, if you want create a custom subclass of the DisplayObject class, you will want to extend one of its subclasses that do have APIs for rendering content onscreen, such as the Shape, Sprite, Bitmap, SimpleButton, TextField, or MovieClip class.

1voto

Tout d'abord, un TextField est un DisplayObject donc, il a l'attribut x , y , width y height .

Mais, corrigez-moi si je me trompe, si vous voulez "copier" les propriétés d'un DisplayObject (ou de tout autre objet) à un autre, vous pouvez le faire manuellement, je pense qu'il n'y a pas de moyen "automatique" de le faire. Vous pouvez utiliser un Prototype (ou Prefab) pour le faire, mais vous devez l'implémenter.

Vous ne pouvez pas hériter de la valeur d'une propriété au moment de l'exécution, vous héritez de la propriété elle-même, mais pas de sa valeur (si la propriété est une propriété d'Instance, comme x . y , width y height ).

Et l'autre chose que vous pouvez faire est la suivante :

var s:Sprite = new Sprite()
s.x = 125
s.y = 200
var t:TextField = new TextField()
s.addChild(t)  // here t transformation matrix is concatenated with s (because now t is inside s coordinate system because is a child of s)

Et une autre chose qui pourrait vous aider est le transform de l DisplayObject que transform contient des informations sur la position, la rotation et l'échelle (dans une matrice) et des informations sur les couleurs. Cela peut vous aider.

Dans votre exemple, vous pouvez faire cela :

var s:Sprite = new Sprite()
s.x = 30
s.y = 30
s.width = 500
s.height = 30
var t:TextField = new TextField()
t.transform = s.transform // this overrides the transform object, but sadly don't work with the width and height
t.width = s.width
t.height = s.height

PS : Désolé pour mon mauvais anglais.

EDITAR:

Vous pouvez uniquement utiliser addChild (et removeChild ) avec DisplayObjectContainer veuillez voir http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_03.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X