从DisplayObject继承属性

时间:2009-12-21 05:21:00

标签: flex actionscript-3

关于as3项目: 有没有办法继承给定DisplayObject的属性? 我正在寻找一种能抓住x,y,宽度,高度,颜色等的方法。 无论两个显示对象之间的公共类涉及什么。

...

编辑:

我认为我不够清楚......让我举一个我正在寻找的功能类型的例子。

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

所以,在这种情况下,我知道方法'inheritTransform()'不存在,但我想知道是否有类似的东西。 或许我错过了以某种方式扩展课程的重点? 在这种情况下,我不知道这两者是如何相关的。

谢谢, JML

2 个答案:

答案 0 :(得分:1)

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.

答案 1 :(得分:1)

首先,TextField是一个DisplayObject,因此它包含xywidthheight

但是,如果我错了,请纠正我,如果您不想将属性从一个DisplayObject(或任何对象)“复制”到另一个可以手动执行,我认为没有“自动”方式去做这个。您可以使用Prototype(或Prefab)来执行此操作,但您必须实现它。

您不能在运行时继承属性的值,继承属性本身,但不继承属性值(如果属性是Instance属性,如xy,{{ 1}}和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

PS:抱歉我的英语不好。

编辑:

您只能将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 (和addChild)与removeChild一起使用,请参阅http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_03.html