0

所以基本上我正在制作一个游戏,其中单击一个按钮来减少健康栏中的健康量。我在舞台上有一个名为 fortyfivedown_btn 的按钮,还有一个健康栏,它是一个 101 帧(包括零)电影剪辑。健康栏的实例名称为 lifebar。在舞台上,按钮编码为:

fortyfivedown_btn.addEventListener(MouseEvent.CLICK, fortyfivedownClick);
function fortyfivedownClick(event:MouseEvent):void{
    lifebar.health = lifebar.health-45;
    }

在 healthbar 影片剪辑中,我有一层编码是:

var health:int = 100;
gotoAndStop(health + 1);
if(health < 0) health = 0;
else if(health > 100) health = 100;
gotoAndStop(health + 1);

所以,有我的编码。问题是,当单击按钮时,健康栏不会下降。我在按钮中跟踪了健康变量:

  fortyfivedown_btn.addEventListener(MouseEvent.CLICK, fortyfivedownClick);
  function fortyfivedownClick(event:MouseEvent):void{
        lifebar.health = lifebar.health-45;
        }
        {
                trace(lifebar.health);  
                }

我看到输出是 0。由于某种原因,按钮认为健康是 0,当我在健康栏电影剪辑中声明它是 100 时?任何帮助表示赞赏。

(编辑)

好吧,在回答跟踪问题时,如果我不那样做,就没有输出。我应该说我是一个初学者,并且正在学习,所以请多多包涵。这是我的 fla 文件:

https://skydrive.live.com/embed?cid=9AB08B59DCCDF9C6&resid=9AB08B59DCCDF9C6%21107&authkey=AGqFHhlHnvOXvuc

4

1 回答 1

0

好的,所以将生命条影片剪辑中的代码完全删除,您现在可以删除该层,然后用此替换主场景中的代码,您应该会得到所需的结果:

fortyfivedown_btn.addEventListener(MouseEvent.CLICK, fortyfivedownClick);

var health:int = 100;

lifebar.gotoAndStop(101);

function fortyfivedownClick(event:MouseEvent):void{
    health -= 45;

    if(health < 0) health = 0;
    else if(health > 100) health = 100;

    lifebar.gotoAndStop(health + 1);

    //Can write this also: lifebar.health += 45;
    trace(health);
}

还有其他方法可以做到这一点,但鉴于您当前的设置,这将是获得您想要的东西的最少修改。另一种选择是设置精灵的宽度。

我上传了一个修改后的 fla 和同伴作为文件,说明我个人将如何做这件事,而不是在时间轴上包含太多内容:

http://www.mediafire.com/?d38hbm32p71x1n8

于 2012-07-16T03:58:27.103 回答