-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 でこのトリックをもう一度見たことがあります。ドローコールでのみ行われます。上記のトリックは、1 つのスプライトを表示するだけでなく、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を追加するだけです。したがって、長さを 1 増やすようなことをしたいと思いますlifeGroup.length+= 1;が、残念ながらそれもうまくいきません。まず、 length プロパティが読み取り専用であるため、コンパイルされません。また、コンパイルしてグループの長さの変更が Flixel に実装されていたとしても、グループに追加するオブジェクトがわからないため、クラッシュします。

    私の提案は、適切なヘルスバー コンポーネントを作成し、それを操作することです。そうしないと、悪いコードを書き続け、ライフを増やすために作成コードをコピーペーストすることになります。

于 2014-06-05T06:38:23.273 に答える