-1

我有一个自上而下的僵尸射击游戏,我有一个奇怪的例子来显示一个健康栏。代码如下:

private function createLives():Void
{
    BaseLifeText = new FlxText(4, 28, 220, "Base Health: ", 12);
    BaseLifeText.color = 0xffFFFFFF;        
    guiGroup.add(BaseLifeText);

    for (i in 0...9) {
        var cur:Int = lifeGroup.length + 1;

               //Start Trick
        var colnum:Int = cur;
        var xPos:Float = (BaseLifeText.x + 96) + 14 * (colnum - 1);
               //End Trick 
        life = new FlxSprite(xPos, 34,"assets/BaseHealth.png");         
        lifeGroup.add(life);
    }
}

虽然这是 haxe/haxeflixel,但我曾在 as3 中看到过这个技巧,只是在绘图调用中完成。上面的技巧不是只显示一个精灵,而是显示 9。这个特定技巧有名称吗?

第 2 部分关于上述技巧,我还尝试添加一个可以治愈基地的收藏品。但是,我只成功地添加了数字。我正在这样做:

private function collectCoolant(player:FlxObject, cooler:Coolant):Void
{

    cooler.kill();

    var cur:Int = lifeGroup.length + 1;     
    lives ++;

    life.x += 14 * cur;     
    lifeGroup.length + 1;
}

它增加了事物的生命,但它不像创建时那样以图形方式进行。使用这个系统如何以图形方式恢复事物的健康?

4

1 回答 1

2
  1. 这不是一个把戏。如您所见,这是解决问题的简单方法,很奇怪而且也不起作用。

  2. 你不可能像现在这样去做。首先,lifeGroup.length + 1;是一个没有意义的陈述,除非+被重载,否则情况并非如此。它只需要长度并在其上加 1。所以我假设你想做一些事情,比如lifeGroup.length+= 1;将长度增加 1,但不幸的是它也不起作用。首先,它不会编译,因为长度属性是只读的。即使它确实编译并在 Flixel 中实现了更改组长度,它也不知道要添加到您的组中的对象,因此它会崩溃。

    我的建议是创建一个适当的健康栏组件并使用它。否则,您可以继续编写糟糕的代码并复制粘贴您的创建代码以增加生命。

于 2014-06-05T06:38:23.273 回答