0

我有几个球,每个球都与一个水果相关联。我想要它,这样当有人将球拖到相关的水果上时,它会调用一个动作(在这种情况下跟踪“击中水果”),如果不是,那么做其他事情。目前它没有检测到这一点。

我发现我可以在舞台上添加一个均匀的监听器来检测何时完成,但问题是我有多个球,每个球都有多个水果。谁能告诉我我是怎么做的。

我来自 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();

}
4

1 回答 1

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 循环系统将事件侦听器添加到球中,然后您可以将水果拆分为不同类型的较小数组,并且只根据特定的水果数组检查球。

于 2012-11-22T14:19:10.363 回答