拖动;放下多个对象和目标

时间:2012-11-22 14:10:37

标签: actionscript-3 flash

我有几个与水果相关的球。我想要它,这样当有人将球拖到相关的水果上时,它会调用一个动作(在这种情况下,跟踪'命中水果'),如果没有那么做其他事情。目前还没有发现这一点。

我发现我可以在舞台上添加一个偶数监听器来检测何时完成,但问题是我有多个球,每个球都有多个水果。任何人都可以告诉我如何做到这一点。

我来自PHP / Javascript背景,对于AS3来说,我只是一个初学者

ball1.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
ball1.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);


function mouseUpHandler(e:MouseEvent):void {
   var obj = e.target;

   if (e.target.hitTestObject("fruit1")) {
    trace('hit fruit1');
   } else {

   trace('Not hit fruit');
   } 

   obj.stopDrag();

}

1 个答案:

答案 0 :(得分:1)

您可以使用数组来存储所有水果,并使用循环测试任何球被拖放:

var fruitArray:Array = new Array();
fruitArray.push(fruit1);
fruitArray.push(fruit2);
fruitArray.push(fruit3);

function onMouseUp(e:MouseEvent) : void
{
  for(var j=0; j<fruitArray.length; j++) { // Every piece of fruit is tested..
        if(e.target.hitTestObject(fruitArray[j])) { // ..against the ball being dragged
          trace("hit fruit:", fruitArray[j]);
        }
  }
}

您需要使用类似的for循环系统将事件侦听器添加到球开始,并且您可以将水果分成不同类型的较小数组,并且仅针对特定水果阵列检查球