私はAndEngineを使ってゲームを作成しています。AndEngineのGenericPool処理6スプライト
私はランダムにスプライトを私のコードに追加しました。
Generic Poolを使用すると、ガベージコレクションが自分のケースで保存されるため、ゲームが特定の時間に遅れてしまうことが報告されました。
あなたたちは、IVEは私がにスプライトを追加することができるよプールを作成した参照ように、ここではそう
public class FruitPool extends GenericPool<Sprite> {
private Sprite msprite;
public FruitPool(Sprite sprite) {
if (sprite == null) {
// Need to be able to create a Sprite so the Pool needs to have a TextureRegion
throw new IllegalArgumentException("The texture region must not be NULL");
}
msprite = sprite;
}
/**
* Called when a Bullet is required but there isn't one in the pool
*/
@Override
protected Sprite onAllocatePoolItem() {
return msprite;
}
/**
* Called when a Bullet is sent to the pool
*/
@Override
protected void onHandleRecycleItem(final Sprite sprite) {
msprite = sprite;
msprite.setIgnoreUpdate(true);
msprite.setVisible(false);
}
/**
* Called just before a Bullet is returned to the caller, this is where you write your initialize code
* i.e. set location, rotation, etc.
*/
@Override
protected void onHandleObtainItem(final Sprite fruit) {
fruit.reset();
}
}
..アイブは私GenericPoolのためを思い付くために管理するものです。
問題は、1から6の間の数字をランダムに選ぶ方法があることです。そして、私は、スイッチのステートメントを使ってシーンに追加するスプライトを選択しました。
GenericPoolでこれをどうすればできますか?それは6つの異なるスプライトを保持し、どれがシーンに追加されるかを選択できるようになっていますか?
私はゲーム内の各スプライトをプールに追加するメソッドを作成してから、スプライトがプールから選択されたものを選択する方法を見つけたところで止まってしまうかもしれません。スプライトを選択するのに必要なintを提供します。
アドバンスのお手伝いをありがとうございます!
うわー、ありがとう!私はそれをもっと良く理解しています!だから私はプールにテクスチャ領域を供給し、私は最初の果実を得るためにpoolItem.obtainItem()を使うことができます。病気はそれぞれのために6つの異なるプールを作成する必要があります。そのうちの1人が画面から外れてしまった場合、どのように動作しますか?リサイクルはどのように行われますか?もう一度同じスプライトを使用しますか? –
スプライトで終わったら(例えばスクリーンから消えます)、プールメソッド 'recyclePoolItem'と呼ばれます。今度はプールがそのスプライトを保持し、次回に 'obtainPoolItem'を呼び出すと、新しいプールを割り当てるのではなく戻ります。(それはプールの目的です) – Jong
ありがとうございました。あなたが助けてくれた!ありがとう!! –