从drawable资源加载TextureRegion

时间:2013-12-11 16:52:29

标签: android andengine

我有这个代码工作:

menu2TextureAtlas = new BitmapTextureAtlas(this.activity.getTextureManager(),256, 128);
menu2TextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(menu2TextureAtlas, this.activity, "menu2.png", 0, 0);
menu2TextureAtlas.load();

但我现在已经将图片menu2.png移动到res / drawable- *(其中*是hdpi,mdpi,xhdpi,xxhdpi)。所以现在我需要从那里加载图像。我该怎么做呢?

更新

答案下,  不确定它是否是最好的:

Resources resources = activity.getResources();
Drawable drawable = resources.getDrawable(R.drawable.menu1);
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
menu1TextureAtlas = new BitmapTextureAtlas(this.activity.getTextureManager(), width, height);
menu1TextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromResource(menu1TextureAtlas, this.activity, R.drawable.menu1, 0, 0);
menu1TextureAtlas.load();

2 个答案:

答案 0 :(得分:1)

这是我用来从内部存储加载png而不是drawable的代码。希望这将符合您的需求。 事实上,在我自己的情况下,我首先将drawable保存到内部存储器,以便我可以覆盖存储中的文件。不确定这是否适合你的情况,但这是代码。如果您需要更多,只需添加评论即可。

    public void loadImageFromInternalStorage(){
        Log.d(TAG, "loadImageFromInternalStorage()");
        try {
                File imageFile = this.getFileStreamPath(userCreatedFileName);
                FileInputStream fi = new FileInputStream(imageFile); // Throws an error if file not exits.
                FileBitmapTextureAtlasSource fileTextureSource = FileBitmapTextureAtlasSource.create(imageFile);
                this.grabTexture.clearTextureAtlasSources();
                Log.d(TAG, "fileTextureSource" + fileTextureSource.toString());
                BitmapTextureAtlasTextureRegionFactory.createFromSource(grabTexture, fileTextureSource, 0, 0);
                Log.d(TAG, "createdFromResource");

        } catch (FileNotFoundException ex) {
                Log.e("File Not found in internal storage", ex.getMessage());

        }
    }

答案 1 :(得分:0)

答案是在原始帖子的末尾