Actionscript 3 as3选框选择并拖动多个子对象

Actionscript 3 as3选框选择并拖动多个子对象,actionscript-3,flash,Actionscript 3,Flash,有谁能告诉我如何使用AS3实现字幕选择效果,通过在多个电影剪辑周围绘制一个动态矩形,然后将其拖放到任意位置来选择多个电影剪辑 如果需要拖动多个对象,不要使用startDrag(),因为它一次只允许拖动一个对象。相反,请侦听鼠标事件并手动执行移动操作: var oldX:int; var oldY:int; var dragging:Boolean = false; function onMouseDown(evt:MouseEvent):void { dragging = true;

有谁能告诉我如何使用AS3实现字幕选择效果,通过在多个电影剪辑周围绘制一个动态矩形,然后将其拖放到任意位置来选择多个电影剪辑

如果需要拖动多个对象,不要使用
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;
}
var oldX:int;
变量oldY:int;
变量拖动:布尔值=false;
mousedown函数(evt:MouseEvent):void{
拖动=真;
oldX=evt.stageX;
oldY=evt.stageY;
}
mouseMove函数(evt:MouseEvent):void{
如果(!拖动)返回;
var dX:int=evt.stageX-oldX;
变量dY:int=evt.stageY-oldY;
对于(int i=0;i
此代码假定:

  • 选定对象的数组称为
    selectedClips
  • 所选对象的数组都继承自
    DisplayObject
  • 您已经在所有可拖动对象上添加了事件侦听器,用于调用这些函数的
    鼠标向下
    鼠标移动
    、和
    鼠标向上
    鼠标事件

  • 如果不满足这三个条件中的任何一个,请更新我的代码或您的代码以使其正常工作。此外,如果在删除对象时需要进行任何其他处理,则可以使用鼠标向上处理程序添加自定义代码。

    您需要的答案的详细程度如何?从高级视图中,跟踪鼠标初始向下点,然后在鼠标向下和下一个鼠标之间的每一帧绘制/重画一个矩形,使其与当前鼠标位置和初始鼠标位置相匹配。鼠标向上移动时,检测矩形中包含的所有适用movieclips-将该列表暂时存储在某个位置。添加一些逻辑来处理当列表中的一个mc被鼠标按下时。然后开始拖动它们。@LondonDruges\u MediaServices感谢回复,已经完成了矩形部分,将hitTestObjects存储在一个数组中,但在数组中任何一个mc上的鼠标向下移动只会拖动该特定mc,而不是另一个mc。临时将所有要移动到另一个MovieClip中的剪辑转移到另一个MovieClip并拖动该剪辑。或者,不要真正执行startDrag()类型的拖动。相反,根据鼠标的增量调整x和y。