我制作了一个需要匹配对象的flash应用程序。所以下面,我将对象(ship,obj1,obj2,obj3)设置为目标(t1,t2,t3,t4)。然后我将分数设为0.
private function onAddedToStage(e:Event):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, _check);
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
ship.setTarget(t1,shipObject);
obj1.setTarget(t2,1Object);
obj2.setTarget(t3,2Object);
obj3.setTarget(t4,3Object);
score = 0;
scorecounter.text =" SCORE:" + score.toString();
}
接下来,我创建了一个函数,该函数可以确定对象(在本例中为船)是否已到达目标。
function _check(event:TimerEvent):void
{
if(ship.done)
{
score += 1;
scorecounter.text =" SCORE:" + score.toString();
}
}
这是正常的,因为一旦用户将船拖到目标,它会为分数添加+1,但随后会出现问题。我有多个对象/目标。这意味着当用户完成将船舶移动到目标时,任何其他被移动的物体会立即给分数+1,因为目标船仍然在目标上。
任何人都有任何想法如何解决这个问题?
非常感谢。
答案 0 :(得分:0)
嗯......如果没有完整的代码,有点难以捕捉正在发生的事情,但这里有一个镜头:
我注意到你的“ship”对象有一个属性“done”,所以我猜你在名为“done”的对象上创建了一个变量/属性,这让我觉得你可以像向船一样添加另一个属性“得分”
因此您的代码可能如下所示:
if ((ship.done) && (ship.scored == false)){
ship.scored = true;
score += 1;
scorecounter.text = "SCORE:" + score.toString();
}
这可能吗?