【发布时间】:2013-03-22 03:09:32
【问题描述】:
我的目标是在MOUSE_WHEEL 事件上生成一个圆圈,并在发生拖动时移动它们所有,正如MOUSE_DOWN 和MOUSE_UP 检测到的那样。我通过将创建的每个Sprite 添加到一个数组中来完成此操作,并在鼠标向上/向下时迭代它。注意:Node 只是 Sprite 类型的扩展。
但是,由于某种原因,只有最近在数组中绘制的Sprite 被移动。任何想法为什么?
我的画布类:
public function Canvas() {
trace("Starting it");
const background:Sprite = new Sprite();
background.graphics.beginFill(0x00000000);
background.graphics.drawRect(0, 0, this.stage.stageWidth, this.stage.stageHeight);
background.graphics.endFill();
addChild(background);
background.addEventListener(MouseEvent.MOUSE_WHEEL, createNode);
background.addEventListener(MouseEvent.MOUSE_DOWN, startObjectMove);
background.addEventListener(MouseEvent.MOUSE_UP, endObjectMove);
mNodeList = new Array();
}
...
}
我的 startObjectMove 和 endObjectMove 方法:
public function startObjectMove(pEvent:MouseEvent) : void {
trace("Starting drag...");
trace("There are " + mNodeList.length + " in list");
for (var i:int = 0; i < mNodeList.length; i++) {
var node:Node;
node = Node(mNodeList[i]);
node.startMove(pEvent);
}
}
public function endObjectMove(pEvent:MouseEvent) : void {
trace("Ending drag...");
trace("There are " + mNodeList.length + " in list");
for (var i:int = 0; i < mNodeList.length; i++) {
var node:Node;
node = Node(mNodeList[i]);
node.endMove(pEvent);
}
}
endMove 和 startMove 方法只需调用 this.startDrag() 和 this.endDrag()。
【问题讨论】:
标签: actionscript-3