Панель здоровья/Программный трюк 2 Parter
-
21-12-2019 - |
Вопрос
У меня есть шутер по зомби сверху вниз, и из примера у меня есть странный способ отобразить шкалу здоровья.Код выглядит так:
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, но, к сожалению, это тоже не сработает.Прежде всего, он не скомпилируется, поскольку свойство длины доступно только для чтения.И даже если бы он скомпилировался и во Flixel было реализовано изменение длины группы, он бы не знал, какой объект добавить в вашу группу, поэтому произошел бы сбой.Я бы предложил создать правильный компонент шкалы здоровья и просто работать с ним.В противном случае вы можете продолжать писать плохой код и копировать код создания для увеличения жизней.