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

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;
}

它增加了事物的生命力,但它并没有像创建时那样以图形方式实现。使用该系统如何以图形方式恢复该物体的健康状况?

有帮助吗?

解决方案

  1. 这不是一个诡计。正如您所看到的,这是解决问题的微不足道的方法,非常奇怪而且不起作用。
  2. 没有办法像你现在那样做。首先, lifeGroup.length + 1; 是一个毫无意义的陈述,除非 + 已超载,但情况并非如此。它只是获取长度并加 1。所以我假设你想做类似的事情 lifeGroup.length+= 1; 将长度增加 1,但不幸的是它也不起作用。首先,它不会编译,因为 length 属性是只读的。即使它确实编译并在 Flixel 中实现了更改组长度,它也不知道要添加到组中的对象,因此它会崩溃。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top