我有一个包含七个动画片段的数组,它们将一个名为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";
}
}
答案 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然后显示盈通。