我有一个使用ButtonSprite作为某些UI元素精灵的游戏。
对于每个按钮,我都有一个“正常和按下状态”的“纹理区域”。
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的构造函数,您可以为每个状态提供不同的tile。
我想念什么吗?有没有办法用ButtonSprite做到这一点?还是我必须扩展TiledSprite并添加按钮功能,这样我才需要制作一个TextureRegion而不是两个。
谢谢
最佳答案
您可以向ButtonSprite提供TiledTextureRegion,因为它可以处理3种状态-正常,按下和禁用。检查ButtonSprite.java,您将看到几个采用TiledTextureRegion的替代构造函数,并将stateCount设置为传入的TiledTextureRegion中的瓦片数。
这是那些构造函数之一
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);
}
关于java - 具有单个TextureRegion的AndEngine ButtonSprite,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12446469/