谁能告诉我如何使用 AS3 实现选取框选择效果,通过在它们周围绘制一个动态矩形来选择多个影片剪辑,然后将它们拖放到任何地方?
问问题
1545 次
1 回答
2
如果您需要多个对象可拖动,请不要使用startDrag()
,因为它一次只允许拖动一个对象。相反,监听鼠标事件并手动移动:
var oldX:int;
var oldY:int;
var dragging:Boolean = false;
function onMouseDown(evt:MouseEvent):void {
dragging = true;
oldX = evt.stageX;
oldY = evt.stageY;
}
function onMouseMove(evt:MouseEvent):void {
if (!dragging) return;
var dX:int = evt.stageX - oldX;
var dY:int = evt.stageY - oldY;
for (int i = 0; i < selectedClips.length; i++) {
var clip:DisplayObject = selectedClips[i];
clip.x += dX;
clip.y += dY;
}
oldX = evt.stageX;
oldY = evt.stageY;
}
function onMouseUp(evt:MouseEvent):void {
dragging = false;
}
此代码假定:
- 您的选定对象数组称为
selectedClips
。 - 您的选定对象数组都继承自
DisplayObject
. - 您已经为调用这些函数的 、 和鼠标事件
MOUSE_DOWN
在MOUSE_MOVE
所有可拖动对象上添加了事件侦听器。MOUSE_UP
如果不满足这三个条件中的任何一个,请更新我的代码或您的代码以正常工作。此外,如果您需要在放置对象时进行任何额外的处理,您可以使用鼠标向上处理程序来添加自定义代码。
于 2012-07-20T06:13:04.177 回答