将拖动应用到数组的原始位置

Applying Drag, Snap Back Into Original Position To An Array

我正在尝试拖动一个影片剪辑,然后在释放后让它回到原来的位置。我想将此功能应用于带有 actionscript3 的数组。这是到目前为止的代码:

var dragArray:Array = new Array;
dragArray.push(blockSmalla);
dragArray.push(blockSmallb);
dragArray.push(blockSmallc);
dragArray.push(blockSmalld);
dragArray.push(blockSmalle);

var startPosition:Point;
function drag(e:Event):void {
dragArray[i].startDrag();
startPosition = new Point( dragArray[i].x, dragArray[i].y);
}
function dragStop(e:Event):void {
dragArray[i].stopDrag();

dragArray[i].x = startPosition.x;
dragArray[i].y = startPosition.y;
startPosition = null;
}

for (var i:uint = 0; i < dragArray.length; i++) {
dragArray[i].addEventListener(MouseEvent.MOUSE_DOWN, drag);
dragArray[i].stage.addEventListener(MouseEvent.MOUSE_UP, dragStop);
}

该函数未应用于数组。有什么建议吗?

我认为 null 试图告诉您的是,在每个函数范围内,您应该删除 dragArray[i] 并改用 e.currentTarget。 这是一个简单的修复:

var dragArray:Array = new Array;
dragArray.push(blockSmalla);
dragArray.push(blockSmallb);
dragArray.push(blockSmallc);
dragArray.push(blockSmalld);
dragArray.push(blockSmalle);

var startPosition:Point;
function drag(e:Event):void {
    e.currentTarget.startDrag();
    startPosition = new Point( e.currentTarget.x, e.currentTarget.y);
}
function dragStop(e:Event):void {
    e.currentTarget.stopDrag(); 
    e.currentTarget.x = startPosition.x;
    e.currentTarget.y = startPosition.y;
    startPosition = null;
}

for (var i:uint = 0; i < dragArray.length; i++) {
    dragArray[i].addEventListener(MouseEvent.MOUSE_DOWN, drag);
    dragArray[i].addEventListener(MouseEvent.MOUSE_UP, dragStop);
}

另请注意,我删除了您的 MouseUp 侦听器上的舞台引用。