AS健康代码问题

时间:2013-12-05 02:32:16

标签: actionscript-3

行。我是AS3的新手,所以请耐心等待我。我的健康代码遗漏了一些东西。健康减少了一个,但只有在第一次遇到障碍物时。最终结果是在比赛结束时得分为19分 - 即使每次都有障碍物被击中。这是我的代码。我非常感谢你的帮助。

var hitObstacle:Boolean=false; // keeps track if obstacle is hit
var health=20; 
health_txt.text=health.toString();


stage.addEventListener(KeyboardEvent.KEY_DOWN, jump);
function jump(e:KeyboardEvent):void {
jumpman_mc.play();
}
stage.addEventListener(Event.ENTER_FRAME, gameloop);
function gameloop(e:Event):void{
obstacle_mc.x-=20;
if (obstacle_mc.x<-100){
obstacle_mc.x=650;
}
if (jumpman_mc.hitTestObject(obstacle_mc)) {
if (hitObstacle==false){ //only subtract health if hitObstacle is false
health--;
}
hitObstacle=true;
health_txt.text=health.toString();
}
}

2 个答案:

答案 0 :(得分:0)

看起来你没有将“hitObstacle”的值设置为false。

我假设你将“hitObstacle”设置为true,以避免在物体触碰时持续减少健康。

相反,我建议删除“hitObstacle”并在舞台上移动“obstacle_mc”,以便hitTest在被击中后评估为false,例如

if (jumpman_mc.hitTestObject(obstacle_mc)) {
    health --;
    obstacle_mc.x = 650;
}

答案 1 :(得分:0)

我还没有评论,因为我没有足够的声誉= /。

但大声笑,人们在这里很有意思。 “我们不是来修理任何东西,而是”离开“。当他们根本没有线索时,他们不记得了吗?

嗯,您需要做的第一件事就是调试代码。您需要检查您编写的代码是否实际被调用。您可以通过简单地添加跟踪(“”)并在运行应用程序时检查控制台来实现。如果你学会这样做,你将能够一瞥这样的问题。

看起来问题是你创建的hitObstacle布尔值。你写道,当hitObstacle为false时,只会减去健康状况。然后在第一次hitTest之后将其设置为true,但是你永远不会将其设置为false。这将永远给你20 - 1健康。无论如何,这个变量的重点是什么?我会完全删除它。

if (jumpman_mc.hitTestObject(obstacle_mc)) {
    health--;
    health_txt.text=health.toString();
}

如果这没有帮助,那么调试你的代码吧! =)