题
我有一个自上而下的僵尸射击游戏,我有一个奇怪的方法来显示健康栏。代码如下:
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;
}
它增加了事物的生命力,但它并没有像创建时那样以图形方式实现。使用该系统如何以图形方式恢复该物体的健康状况?
解决方案
- 这不是一个诡计。正如您所看到的,这是解决问题的微不足道的方法,非常奇怪而且不起作用。
没有办法像你现在那样做。首先,
lifeGroup.length + 1;
是一个毫无意义的陈述,除非+
已超载,但情况并非如此。它只是获取长度并加 1。所以我假设你想做类似的事情lifeGroup.length+= 1;
将长度增加 1,但不幸的是它也不起作用。首先,它不会编译,因为 length 属性是只读的。即使它确实编译并在 Flixel 中实现了更改组长度,它也不知道要添加到组中的对象,因此它会崩溃。我的建议是创建一个适当的健康栏组件并使用它。否则,您可以继续编写糟糕的代码并复制粘贴您的创建代码以增加生命。
不隶属于 StackOverflow