我一直在尝试创建一个拖放式应用程序,并遇到了障碍。我有一组将被拖入数组的动画片段。当我拖动它们时,我想要它们,
A)如果掉落时没有目标,则回到原始位置(工作)
B)如果检测到一个(不工作)
,则捕捉到目标如果可能的话,这会很好但现在不是必需的。
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();
}
所以基本上如何让它一次识别数组中的所有动画片段,而不是一次只识别一个?
由于
在Kodiak的帮助下,我完全按照自己的意愿工作,所以非常感谢他!这是我最终得到的,万一其他人需要它。
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 :(得分:0)
如果您想知道某个项目是否在数组中,您可以使用Array.indexOf
方法。
var objTarget = evt.target;
var target = evt.target.dropTarget;
if (target != null && dropBoxes.indexOf(target.parent) != -1)
{
//...
}
如果项目不在indexOf
或项目的第一个索引(如果是),则 Array
返回-1。