这里很基本的问题,但它仍然让我有点困惑..
我有一个对象(导航菜单栏),我想用代码更改颜色,所以在一个updateColor
函数中,我得到对象的边界(这是一个包含在影片剪辑中的绘图形状)并在顶部重绘一个新形状用新颜色,但我注意到最后一个形状仍然存在于这个重绘后面。
我在重绘之前尝试过使用obj.graphics.clear();
,但这并没有摆脱原来的形状。我忽略了另一个命令吗?
这里很基本的问题,但它仍然让我有点困惑..
我有一个对象(导航菜单栏),我想用代码更改颜色,所以在一个updateColor
函数中,我得到对象的边界(这是一个包含在影片剪辑中的绘图形状)并在顶部重绘一个新形状用新颜色,但我注意到最后一个形状仍然存在于这个重绘后面。
我在重绘之前尝试过使用obj.graphics.clear();
,但这并没有摆脱原来的形状。我忽略了另一个命令吗?
除非您在同一图形对象中绘制了要删除的对象,否则清除将不起作用。您需要删除 DisplayObject。
根据您可以做的孩子的数量:
obj.removeChildAt(0);
这也会删除您手动放置在舞台上的影片剪辑/按钮。如果您有对要删除的 DisplayObject 的引用,您可以简单地执行
obj.removeChild(backgroundClip);
请注意,您也可以直接更改 DisplayObject 的颜色:
import flash.geom.ColorTransform;
...
public var test:MovieClip; //instance on stage
...
var cf:ColorTransform = test.transform.colorTransform;
cf.color = 0xff0000;
test.transform.colorTransform = cf;
while(this.numChildren)
{
this.removeChildAt(0);
}
将清除此 MovieClip 上的子对象,如果清除过多,则将形状绘制放入子剪辑中,并清除子剪辑。