Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 健康守则问题_Actionscript 3 - Fatal编程技术网

Actionscript 3 健康守则问题

Actionscript 3 健康守则问题,actionscript-3,Actionscript 3,嗯。我是AS3的新手,所以请耐心等待。我的健康代码遗漏了什么。生命值降低1,但只有在第一次击中障碍物时。最终结果是在比赛结束时得到19分——即使每次都碰到障碍物。这是我的密码。我将非常感谢您的帮助 var hitObstacle:Boolean=false; // keeps track if obstacle is hit var health=20; health_txt.text=health.toString(); stage.addEventListener(KeyboardEv

嗯。我是AS3的新手,所以请耐心等待。我的健康代码遗漏了什么。生命值降低1,但只有在第一次击中障碍物时。最终结果是在比赛结束时得到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();
}
}
var:Boolean=false;//在遇到障碍物时保持跟踪
var健康=20;
health_txt.text=health.toString();
stage.addEventListener(KeyboardEvent.KEY_DOWN,jump);
函数跳转(e:键盘事件):无效{
飞人游戏;
}
stage.addEventListener(Event.ENTER_FRAME,gameloop);
函数gameloop(e:事件):无效{
障碍物μmc.x-=20;

如果(障碍物)u mc.x看起来您并没有将“hitsubledy”的值设置回false

我假设您将“HitBarriend”设置为true,以避免在对象接触时生命值持续下降

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

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

我还不能发表评论,因为我没有足够的声誉

但是哈哈,这里的人太刻薄了。“我们不是来修东西的,走开。”他们不记得什么时候他们一点线索都没有了吗

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

看起来问题在于你创建的HitBarriend布尔值。你写道,只有当HitBarriend为false时,才会减去运行状况。然后你在第一次hitTest后将其设置为true,但你从未将其设置回false。这将始终为你提供20-1的运行状况。不管怎样,该变量有什么意义?我将以alto的方式删除它盖特

if (jumpman_mc.hitTestObject(obstacle_mc)) {
    health--;
    health_txt.text=health.toString();
}
如果这没有帮助,那么调试你的代码!=)

这是一个问答网站,不是“为你修复代码”网站。请花一些时间进行研究和研究。如果你不理解某些东西,请在这里问这个确切的问题。不要指望别人帮你编写代码。