我是 AndEngine 的新手。
由于某种原因,我必须从 Drawable 变量创建一个 TextureRegion。
不知道可不可以
但我的代码不起作用...
public class DrawableTextureSource implements ITextureSource {
private final int mWidth;
private final int mHeight;
private final Drawable mDrawable;
private final Context mContext;
public DrawableTextureSource(Context context, Drawable D) {
mContext = context;
mDrawable = D;
mWidth = D.getIntrinsicWidth();
mHeight = D.getIntrinsicHeight();
} // end DrawableTextureSource()
public DrawableTextureSource(Context context, Drawable D, int W, int H) {
mContext = context;
mDrawable = D;
mWidth = W;
mHeight = H;
} // end DrawableTextureSource()
public int getWidth() {
return mWidth;
} // end getWidth()
public int getHeight() {
return mHeight;
} // end getHeight()
public Bitmap onLoadBitmap(Config pBitmapConfig) {
Bitmap bitmap = Bitmap.createBitmap(1024, 1024, pBitmapConfig);
mDrawable.draw(new Canvas(bitmap));
return bitmap;
} // end onLoadBitmap()
public DrawableTextureSource clone() {
return new DrawableTextureSource(mContext, mDrawable, mWidth, mHeight);
} // end clone()
} // end class
我知道这不是解决这个问题的最好方法,但你可以把你的Drawable
to a Bitmap
然后创建一个TextureRegion
来自Bitmap
。
这是创建一个的代码TextureRegion
from a Bitmap
:
public class BitmapTextureSource implements ITextureSource {
private Bitmap mBitmap = null;
public BitmapTextureSource(Bitmap bitmap) {
this.mBitmap = bitmap;
}
@Override
public int getWidth() {
return mBitmap.getWidth();
}
@Override
public int getHeight() {
return mBitmap.getHeight();
}
@Override
public Bitmap onLoadBitmap() {
return mBitmap.copy(mBitmap.getConfig(), false);
}
@Override
public BitmapTextureSource clone() {
return new BitmapTextureSource(mBitmap);
}
}
这是一个link https://stackoverflow.com/questions/3035692/how-to-convert-a-drawable-to-a-bitmap帮助您制作一个Bitmap
从你的Drawable
.
希望您能找到一种更简单的方法,但这也应该可以完成这项工作。祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)