Наследование свойств из DisplayObject - PullRequest
0 голосов
/ 21 декабря 2009

В отношении проекта as3: Есть ли способ наследовать свойства данного DisplayObject? Я ищу один метод, который будет захватывать что-то вроде x, y, ширины, высоты, цвета и т. Д. Все, что входит в общие классы между двумя экранными объектами.

...

Edit:

Не думаю, что я достаточно ясен ... Позвольте мне привести пример того типа функций, который я ищу.

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);

Итак, в этом случае я знаю, что метод 'attributeitTransform ()' не существует, но мне интересно, есть ли что-то подобное Или, может быть, мне не хватает какого-то расширения класса? Я не понимаю, как эти два отношения будут в таком случае.

Спасибо, JML

Ответы [ 2 ]

1 голос
/ 21 декабря 2009

Во-первых, TextField - это объект DisplayObject, поэтому он имеет x, y, width и height.

Но, поправьте меня, если я ошибаюсь, если вы не хотите "копировать" свойства из одного DisplayObject (или любого объекта) в другой, вы можете сделать это вручную, я думаю, что нет "автоматического" способа сделать это. Вы можете использовать Prototype (или Prefab) для этого, но вы должны реализовать его.

Вы не можете наследовать значение свойства во время выполнения, вы наследуете само свойство, но не его значение (если свойство является свойством Instance, например x. y, width и height).

И еще, что вы можете сделать, это:

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)

И еще одна вещь, которая может вам помочь, это свойство transform класса DisplayObject, которое transform содержит информацию о положении, повороте и масштабе (в матрице) и информацию о цвете. Это может вам помочь.

В вашем примере вы можете сделать это:

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: простите за мой плохой английский.

EDIT:

Вы можете использовать addChildremoveChild) только с DisplayObjectContainer, см. http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_03.html

1 голос
/ 21 декабря 2009

Описание языка ActionScript 3 гласит:
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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...