ActionScript 3 - 重新加载弹药

时间:2018-03-14 05:50:05

标签: function actionscript-3 mouseevent keyboard-events keycode

我是ActionScript 3.0的新手,我正在制作一款射击游戏。我的问题是关于重装枪,当然当弹药达到0时,你必须重装。按'R'后,子弹文本会返回到12,但是当我单击鼠标时,它将再次返回到0.

import flash.events.MouseEvent;
import flash.events.KeyboardEvent;

var bulletCount:int = 13;
var bullets:int = 12;
var bulletEmpty:int = 0;

stage.addEventListener(MouseEvent.CLICK, bulletcount);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);

function bulletcount(evt:MouseEvent):void
{
    bulletCount--;
    Bullet1.text = String(bulletCount);

    if(bulletCount <= 0)
    {
        stopcount();
    }
}

function stopcount():void
{
    Bullet1.text = String(bulletEmpty);
}

function keyDownHandler(evt:KeyboardEvent):void
{
    if(evt.keyCode == 82) 
    {
    //Reload (using key 'R')
    Bullet1.text = String(bullets);
    }
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

在按下'R'之后,子弹文本返回到12的原因是因为值bullets没有在任何地方被更改。它始终是12状态,因为这是你赋予它的值。

当您单击鼠标时,它返回0的原因是因为bulletCount变量在鼠标事件中递减后现在为0:

 bulletCount--;
Bullet1.text = String(bulletCount);

if(bulletCount <= 0)
{
    stopcount();  //bulletCount is now going to equal 0
}

要修复此问题,请在if语句或重新加载

的位置添加
if(bulletCount <= 0)
{
    stopcount();
    bulletCount += 12; // add the value back to the variable.
}

也不确定为什么你有两个子弹变量就可以了。