2013-05-30 62 views
0

我一直在尝试创建拖放式样应用程序,并遇到阻碍。我有一组将拖动到数组中的影片剪辑。当我拖累他们,我想他们要么,AS3:数组中的电影剪辑被丢弃在另一个数组中的电影剪辑上

A)转眼又回到原来的位置,如果下降,当没有目标(工作)

B)快照目标,如果有一个检测(不工作)

如果可能的话,这将是很好,但现在没有必要。

与目标C)开关的位置,如果目标是另一个拖能够影片剪辑

我都在一个阵列中拖能够影片剪辑和所有在另一个数组“目标”的影片剪辑。当我将MC拖放到目标上时,只有当我在代码中指定了目标时才起作用,或者目标是数组中的最后一个目标。这是我目前的代码。

var startX:Number = 0; 
var startY:Number = 0; 

var dropBoxes:Array = [/*list of dropBoxes*/]; 
var dragBoxes:Array = [/*list of dragBoxes*/]; 

for each (var dragBox_mc:MovieClip in dragBoxes){ 
    dragBox_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickIt); 
    dragBox_mc.addEventListener(MouseEvent.MOUSE_UP, dropIt); 
} 

function pickIt(evt:MouseEvent):void { 
    var objTarget = evt.target; 
    objTarget.parent.addChild(objTarget); 
    objTarget.startDrag(); 
    startX = objTarget.x; 
    startY = objTarget.y; 
} 

function dropIt(evt:MouseEvent):void { 
    var objTarget = evt.target; 
    var target = evt.target.dropTarget; 
    if (target != null && target.parent == (dropBoxes[0])){ 
     trace ("Dropped") 
     objTarget.x = (dropBoxes[0]).x; 
     objTarget.y = (dropBoxes[0]).y; 
    }else{ 
     trace ("Returned") 
     objTarget.x = startX; 
     objTarget.y = startY; 
    } 
    objTarget.stopDrag(); 
} 

那么基本上我怎么才能让它一次识别数组中的所有动画片段,而不是一次一个呢?

感谢

随着科迪亚克的帮助下,我得到这个工作正是我想这样非常感谢他!这是我最后的结果,以防其他人需要它。

function dropIt(evt:MouseEvent):void { 
    var objTarget = evt.target; 
    var target = evt.target.dropTarget; 
    // Drop dragBox onto dropBox 
    if (target != null && dropBoxes.indexOf(target.parent) != -1){ 
     trace ("Dropped") 
     objTarget.x = target.parent.x; 
     objTarget.y = target.parent.y; 
    // Switch dragBox with another dragBox 
    }else if (target != null && dragBoxes.indexOf(target.parent) != -1){ 
     trace ("Switched") 
     objTarget.x = target.parent.x 
     objTarget.y = target.parent.y 
     target.parent.x = startX 
     target.parent.y = startY 
    // If no target return to original position 
    }else{ 
     trace ("Returned") 
     objTarget.x = startX; 
     objTarget.y = startY; 
    } 
    objTarget.stopDrag(); 
} 

回答

0

如果你想弄清楚如果一个项目是在一个数组或没有,你可以使用Array.indexOf方法。

var objTarget = evt.target; 
var target = evt.target.dropTarget; 
if (target != null && dropBoxes.indexOf(target.parent) != -1) 
{ 
    //... 
} 

indexOf返回-1如果该项目不在Array或者如果它是该项目的第一指标。