我幾乎可以肯定,這是不可能的。但是,還有其他方法可以做到這一點。如何爲每個存儲使用值的屬性設置一個valueObject。然後,您可以擁有一個GraphicalDisplayObject,您可以從中繼承或通過組合使用它。例如:
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 ......但它應該工作。
有趣的解決方法。謝謝:) – TheDarkIn1978 2010-06-17 16:20:16
看起來像是與senocular的方法「相似」 - http://www.kirupa.com/forum/showpost.php?p=1939945&postcount=176 – 2010-06-18 00:18:31