2013-05-30 4 views
0

나는 드래그 앤 드롭 스타일의 앱을 만들려고 애 쓰고 있는데, 나는 배열로 드래그 될 영화 클립 그룹을 가지고있다. 내가 드래그하면 감소 할 때 대상이 아닌 경우 감지가있는 경우 나 작동하지 않음 (대상 (작업)AS3 : 배열의 무비 클립이 다른 배열의 무비 클립에 떨어졌습니다.

B) 스냅)

A, 하나에 원하는 다시 원래의 위치로 스냅)

가능하다면 좋지만 지금은 필요하지 않습니다. 대상과

C) 스위치 위치 타겟이 다른 드래그 할 무비 클립

에게 내가 만약 다른 배열의 "대상"무비 클립의 한 배열에서 드래그 할 무비 클립의 모든 모든 있습니다. 내가 목표 위에 MC를 놓으면 그것은 단지 내가 코드에서 그 대상을 지정한 경우,

(dragBox[0]) 

를 작동하거나 대상 배열의 마지막 인 경우. 다음은 현재 가지고있는 코드입니다.

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 또는 경우 항목의 첫 번째 인덱스에없는 경우.

관련 문제