【发布时间】:2012-01-08 19:58:38
【问题描述】:
我的问题是:如何仅使用代码重绘形状?
对任务本身的简短评论。我有一个 eventListener,它可以抓取舞台上的点击次数和舞台大小。两者都执行相同的功能 - redrawEvents(evt:Event)。该阶段包含许多代表某些事件的块。在每次重绘时,这些块都会重新定位,并且还会绘制线条(表示事件之间的连接)。
我已经找到了一种重新定位所有块的方法,但我被困在重新绘制线条上。
我使用单个形状来保存所有线条,因为线条与块不同,不是交互式的。由于应用程序的重点是创建相互关联的事件集,因此每次创建新块时我都必须修改此形状,这也调用了重绘函数。
这是我用来修改形状的代码
stage.addEventListener(MouseEvent.CLICK,redrawEvents);
function redrawEvents (evt:Event) {
var lines:Shape = new Shape();
lines.graphics.lineStyle(2, 0xFFFFFF, .75);
lines.graphics.clear();
for (var k:int = 0; k < connections.length; k++){
lines.graphics.moveTo(eventList[connections[k][0]].x + 50, eventList[connections[k][0]].y + 50);
lines.graphics.lineTo(eventList[connections[k][1]].x + 50, eventList[connections[k][1]].y + 50);
}
addChild(lines);
}
但是,无论何时修改形状,它仍会在屏幕上留下其自身的“旧版本”,我不希望这样。我尝试创建和删除实例,变种类型转换,但仍然没有解决问题。
提前致谢
【问题讨论】:
标签: actionscript-3