3

这里很基本的问题,但它仍然让我有点困惑..

我有一个对象(导航菜单栏),我想用代码更改颜色,所以在一个updateColor函数中,我得到对象的边界(这是一个包含在影片剪辑中的绘图形状)并在顶部重绘一个新形状用新颜色,但我注意到最后一个形状仍然存在于这个重绘后面。

我在重绘之前尝试过使用obj.graphics.clear();,但这并没有摆脱原来的形状。我忽略了另一个命令吗?

4

2 回答 2

1

除非您在同一图形对象中绘制了要删除的对象,否则清除将不起作用。您需要删除 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;
于 2009-11-17T22:27:57.807 回答
0
while(this.numChildren)
{
   this.removeChildAt(0);
}

将清除此 MovieClip 上的子对象,如果清除过多,则将形状绘制放入子剪辑中,并清除子剪辑。

于 2009-12-02T06:21:45.470 回答