当我在游戏中点击一个按钮时,它会使用as3中的图形来绘制图形,简单的图形如圆形和矩形。
我想在我的一个类中发生一些事情时,删除已经绘制的图形。
基本上,当有hitTestObject(工作正常)时,我想清除舞台上的所有图形。
if (gb2.hitTestObject(h1s2))
{
trace ("holed")
ySpeed2=0;
xSpeed2=0;
this.visible=false;
var mcSplash:MovieClip =parent.getChildByName("mcSplash") as MovieClip;
mcSplash.visible=true;
//parent.drawings.graphics.clear();
}
我尝试使用parent.drawings.graphics.clear();没有成功,它给了我这个错误。
481 1119行:通过静态类型flash.display:DisplayObjectContainer的引用访问可能未定义的属性draws。
有人有什么建议吗?
更新。
这就是在最小时间线上,画图的方式。
var drawings:Shape = new Shape;
for (i=0; i<numRecs; i++)
{
recStartX = Number(xmlContent.rec[i].startpoint.@ptx);
recStartY = Number(xmlContent.rec[i].startpoint.@pty);
recWidth = Number(xmlContent.rec[i].dimensions.@w);
recHeight = Number(xmlContent.rec[i].dimensions.@h);
fillColor=int(xmlContent.rec[i].look.fillhex);
lineThick = Number(xmlContent.rec[i].look.strokethick);
lineColor = int(xmlContent.rec[i].look.strokehex);
drawings.graphics.lineStyle(lineThick, lineColor);
drawings.graphics.beginFill(fillColor);
drawings.graphics.drawRect(recStartX,recStartY,recWidth,recHeight);
drawings.graphics.endFill();
}
创建一个数组并推入每个shaperect.然后通过这个迭代并删除。
for(var iteration:int = 0; iteration < rectArray.length; iteration++)
this.removeChild(rectArray[iteration]);
或者如果你从一个类中调用这个函数,可以使用
MovieClip(this.root).removeChild(rectArray[iteration]);
希望对大家有所帮助:)Z
什么是 drawings
?! 如果你用mcSplash画画,你应该用 mcSplash.graphics.clear()
. 如果你画一个叫 drawings
你应该先把它作为一个孩子来获取(在mcSplash获取之后)。var drawings = mcSplash.getChildByName('drawings); drawings.graphics.clear();
. 你可以写检查看看是怎么回事。if (mcSlpash) { if (drawings) {
...等等...