如何检索精灵的设置图形属性?例如,在下面的代码中,我想获得精灵的颜色,它也是圆角设置和其他图形属性。
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0xFF0000, 0.75);
sp.graphics.drawRoundRect(0, 0, 300, 50, 10, 10);
sp.graphics.endFill();
addChild(sp);
trace(sp.graphics.color); //pseudo trace - this doesn't work
答案 0 :(得分:1)
我几乎可以肯定这是不可能的。但是,肯定有其他方法可以做到这一点。如果为存储所用值的每个属性都有一个valueObject。然后你可以拥有一个GrapheDisplayObject,您可以继承或通过合成使用它。例如:
package {
class FillVO extends Object {
public var fill_color:Number = 0xFF0000;
public var fill_opacity:Number = 0.75;
}
}
package {
import FillVO;
class GraphicalDisplayObject extends Sprite {
public var fill_vo:FillVO;
public function beginFill($vo:FillVO) {
graphics.beginFill($vo.fill_color, $vo.fill_opacity);
}
...
}
}
package {
import GraphicalDisplayObject;
class ObjectWithGraphicalProperties extends Sprite {
public var gfx:GraphicalDisplayObject;
public function ObjectWithGraphicalProperties() {
gfx = new GraphicalDisplayObject();
addChild(gfx);
}
public function beginFill($color:Number, $opactity:Number) {
var fill_vo:FillVO = new FillVO();
fill_vo.fill_color = $color;
fill_vo.fill_opacity = $opacity;
gfx.beginFill(fill_vo);
}
...
}
}
然后使用它......
var obj:ObjectWithGraphicalProperties = new ObjectWithGraphicalProperties();
addChild(obj);
obj.beginFill(0xffff00, .2);
...
...
trace(obj.gfx.fill_vo.fill_color);
这显然是通过组合,你需要编写额外的代理方法和相应的valueObjects ......但它应该可以工作。