0

UI 要素のスプライトの一部として ButtonSprite を使用するゲームがあります。ボタンごとに、通常状態と押された状態のテクスチャ領域があります。

mSomeBottonTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mLoadTextureAtlas, this, "SomeBotton.png", 0, 0);
mSomeBottonPressedTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mLoadTextureAtlas, this, "SomeBottonPressed.png", 0, 0);
ButtonSprite someButtonSprite = new ButtonSprite(0, 0, mSomeBottonTextureRegion, mSomeBottonPressedTextureRegion, mEngine().getVertexBufferObjectManager());

状態ごとに異なるタイルを提供できる単一の TiledTextureRegion を持つ ButtonSprite を処理するコンストラクターはないようです。

何か不足していますか?ButtonSprite でこれを行う方法はありますか? または、TiledSprite を拡張し、ボタン機能を追加して、TextureRegion を 2 つではなく 1 つだけ作成する必要がありますか。

ありがとう

4

1 に答える 1

1

TiledTextureRegion は、通常、押された、無効の 3 つの状態を処理するように設計されているため、ButtonSprite に指定するだけで済みます。ButtonSprite.java を確認すると、TiledTextureRegion を受け取り、渡された TiledTextureRegion 内のタイルの数に stateCount を設定するいくつかの代替コンストラクターが表示されます。

これがそれらのコンストラクターの1つです

public ButtonSprite(final float pX, final float pY, final ITiledTextureRegion pTiledTextureRegion, final VertexBufferObjectManager pVertexBufferObjectManager, final OnClickListener pOnClickListener) {
    super(pX, pY, pTiledTextureRegion, pVertexBufferObjectManager);

    this.mOnClickListener = pOnClickListener;
    this.mStateCount = pTiledTextureRegion.getTileCount();

    switch(this.mStateCount) {
        case 1:
            Debug.w("No " + ITextureRegion.class.getSimpleName() + " supplied for " + State.class.getSimpleName() + "." + State.PRESSED + ".");
        case 2:
            Debug.w("No " + ITextureRegion.class.getSimpleName() + " supplied for " + State.class.getSimpleName() + "." + State.DISABLED + ".");
            break;
        case 3:
            break;
        default:
            throw new IllegalArgumentException("The supplied " + ITiledTextureRegion.class.getSimpleName() + " has an unexpected amount of states: '" + this.mStateCount + "'.");
    }

    this.changeState(State.NORMAL);
}
于 2012-09-16T14:15:52.630 に答える