【问题标题】:Health Bar/Programming Trick 2 Parter健康栏/编程技巧 2 合作伙伴
【发布时间】:2014-06-05 00:57:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: haxe haxeflixel


    【解决方案1】:
    1. 这不是诡计。如您所见,这是解决问题的简单方法,很奇怪而且也不起作用。

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

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

    【讨论】:

    • 该死。我只是想知道,因为我在几个地方见过它。谢谢。
    • 说到 lifebar 组件的实现,我猜 iw 基本上是由你现在使用的相同代码组成的,只需将它包装到一个类中并制作一些可设置的变量,如 total 和 curret 并在这些变量时更新实体被设置。您还可以使实例构造函数将精灵(1 个小节部分)和尺寸(就像您所有的 96、14、24 一样)作为参数,这对于您的大多数游戏来说已经足够了,而且对于这个游戏来说绝对足够。跨度>
    猜你喜欢
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多