检查hitTestObject是否已完成数组的所有元素

时间:2015-06-30 09:04:20

标签: actionscript-3

我有一个包含七个动画片段的数组,它们将一个名为ousiastikaChest的动画片段命名为TestObject。这很好用。我想检查该数组的所有元素是否都有hitTestObject,以便显示完成的消息。这部分代码是错误的。谁能帮我?谢谢

这是我的代码

 var circles:Array = [ous1,ous2,ous3,ous4,ous5,ous6,ous7];
 for each(var circleMC:MovieClip in circles)
 {
     circleMC.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
     circleMC.addEventListener(MouseEvent.MOUSE_UP, dropIt);
     circleMC.startX = circleMC.x;
     circleMC.startY = circleMC.y;
}

 function pickUp(event:MouseEvent):void
 {
     event.target.startDrag(true);
     event.target.parent.addChild(event.target);

 }

function dropIt(event:MouseEvent):void
 {
     event.target.stopDrag();

     if(event.target.hitTestObject(ousiastikaChest)){
         event.target.buttonMode = false;
         event.target.alpha = 0 
         event.target.x = ousiastikaChest.x;
         event.target.y = ousiastikaChest.y;
         ousiastikaChest.gotoAndPlay(2);
    }
    else
     {
         event.target.x = event.target.startX;
         event.target.y = event.target.startY;
         event.target.buttonMode = true;
    }
 }
 //problem with that part of the code
 for(var i:int = 0; i<circles.length;i++){
      if(circles[i].hitTestObject(ousiastikaChest)){
         feedback.text="Well Done";
      }
 } 

2 个答案:

答案 0 :(得分:3)

如果要在所有圈子的条件(hitTest)为真时显示消息,可以使用Boolean var,如下所示:

var show_message:Boolean = true;

for(var i:int = 0; i < circles.length; i++){
    // if the condition is false for only one item, so don't show the message
    if(!(circles[i].hitTestObject(ousiastikaChest))){
        show_message = false;
    }
}

if(show_message){
    // a trace for test, because sometimes text boxes don't show texts because of embedding fonts problem
    trace('Well Done');    
    feedback.text = 'Well Done';
}

希望可以提供帮助。

答案 1 :(得分:1)

可以通过两种方式实现 这很简单。只要您if(event.target.hitTestObject(ousiastikaChest)){成为现实,请将1添加到变量中。例如:

var point =0 
if(event.target.hitTestObject(ousiastikaChest)){
point++;
}

检查点是否等于7然后显示盈通。

  1. 第二种方式不同。为该对象分配一个类。在类内部声明一个公共布尔变量,如isHit使其为false。每当发生hittest时,将此变量设为true。最后检查所有对象的ishit变量是true还是false。