我通过动作脚本在屏幕上创建了一些flex原语。现在基于业务逻辑,我需要对其中一些原语进行更改,例如:更改厚度,箭头方向等
一个想法就是在构建这些原语时将id分配给这些原语 - 我该怎么做?
e.g。我得到一条如下所示的线
var myShape:Shape=new Shape();
myShape.graphics.lineStyle(thickness,color);
myShape.graphics.moveTo(XFrom,YFrom);
myShape.graphics.lineTo(XTo,YTo);
如果根据某些条件,我想改变上面的颜色/厚度,我如何参考上面的这一行?
答案 0 :(得分:1)
它可以想象这是在某种组件中完成的。所有UIComponents都有lifecycle您想要遵守的内容。您可以覆盖多个函数以获得所需的功能。像这样:
private var _shape:Shape;
override protected function createChildren():void
{
super.createChildren();
if(!this._shape)
{
this._shape = new Shape();
addChild(this._shape);
}
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
this._shape.graphics.lineStyle(thickness,color);
this._shape.graphics.moveTo(XFrom,YFrom);
this._shape.graphics.lineTo(XTo,YTo);
}
如果你希望它在数据更改时运行,你应该查看invalidateDisplayList
,你会在任何数据发生变化后调用它,它将在下一帧运行updateDisplayList函数。
答案 1 :(得分:1)
我提出了一种更简单的方法
基本上不是直接绘制图元,而是将绘图分配给将返回Shape对象的shape函数。
现在,原始行有一个简单的处理程序来更改属性。如果您需要有关如何实现此目标的更多具体细节,请与我们联系