拖动和放置动画片段

时间:2014-06-23 13:09:38

标签: actionscript-3 movieclip flash-cs6

我试图使用AS3制作动画,其中包括在一些矩形(位图)中拖动和放置动画片段(小图像),然后按照相同的顺序呈现与动画片段相对应的图像(大图像)。它们沿着矩形放置。

然而,有一点小技巧,我有一些困难。当一个动画片段被放置在一个矩形内部并且我尝试将另一个动画片段拖动到同一个矩形时,我拖动的那个应该返回到初始位置。我的代码有时会工作,但是其他代码,它没有(仍然可以将影片剪辑放在上面或下面)。

另一个问题是:我怎样才能制作出我一直拖到另一个动画片段而不是下面的动画片段呢? (有时他们会走到上面,而他们会受到影响)。

提前致谢。最好的问候。

这是我的代码:

function returnToInitial(k:int){
this["foto"+String(k)+"_mc"].x = this["foto"+String(k)+"_mc"].iniX;
this["foto"+String(k)+"_mc"].y = this["foto"+String(k)+"_mc"].iniY;}

for(i=1; i<7; i++){
  this["foto"+String(i)+"_mc"].addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
  this["foto"+String(i)+"_mc"].num = i;
  if(i <= 3){
    this["foto"+String(i)+"_mc"].iniX = (160*i)+(i-1)*100;
    this["foto"+String(i)+"_mc"].iniY = 100;
  }else if(i > 3){
    this["foto"+String(i)+"_mc"].iniX = (160*(i-3))+((i-3)-1)*100;;
    this["foto"+String(i)+"_mc"].iniY = 260;
  }
}

function startDragging(me:MouseEvent):void {
  stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
  MovieClip(me.currentTarget).startDrag(true);
  currentDragged = MovieClip(me.currentTarget);}

function stopDragging(evt:Event):void {
  stage.removeEventListener(MouseEvent.MOUSE_UP, stopDragging);
  stopDrag();
  checkPosition(currentDragged);}

function firstCheck(mcR:MovieClip){
for(q = 0; q < icons.length; q++){
    if(this[icons[q]].y == 455){
        posX = Math.abs(mcR.x - this[icons[q]].x);
        if(posX < 10){
            returnToInitial(mcR.num);
        }
    }
}
}

function checkPosition(mc:MovieClip){
firstCheck(mc);
if(mc.y > 420 && mc.y < 490){
    mc.y = 455;
    for(k=0; k<6; k++){
        if(mc.x > 60+(k*135) && mc.x < 120+(k*135)){
            mc.x = 90+(k*135);
            array[k] = mc.num;
        }
    }
}
}

1 个答案:

答案 0 :(得分:1)

要使正在拖动的影片剪辑显示在其他所有内容之上,请添加此项以开始拖动:

setChildIndex(MovieClip(me.currentTarget), this.numChildren-1);