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();
}