使用TextureAtlas时,某些设备上不显示ImageButton的纹理

时间:2014-07-11 13:56:09

标签: libgdx

我正在使用libGDX 1.0而不确定它是否是一个bug。

使用TextureAtlas在LG OPtimus和HTC Desire上正确显示我的ImageButton。但是,在Galaxy Tab2上,它完全恢复,但它仍然是可点击的。

如果我从AssetsManger加载其纹理,一切都可以在任何设备上正常工作。

以下是代码的相关部分:

            stage = new Stage(new StretchViewport(fontCamera.viewportWidth,fontCamera.viewportHeight));

            ImageButtonStyle styleButtonPlay = new ImageButtonStyle();

            //this works
            //textureButtonPlay = new TextureRegion(game.manager.get("data/ui/play.png",Texture.class));
            //styleButtonPlay.imageUp =  new TextureRegionDrawable(textureButtonPlay);

            //this don't on Samsung Tab2
            atlas = new TextureAtlas("data/shot/atlas.pack");
            styleButtonPlay.imageUp =  new TextureRegionDrawable(atlas.findRegion("ui/play"));

            buttonPlay = new ImageButton(styleButtonPlay);
            buttonPlay.addListener(

                    new ClickListener() {
                        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button)
                        {
                            startGame();
                            return true;
                        }

                    });

            buttonPlay.setSize(80, 60);
            buttonPlay.setPosition(camera.viewportWidth/2 - buttonPlay.getWidth()/2,5);
            stage.addActor(buttonPlay);



我现在担心把我所有的精灵都打包成单个图像。

2 个答案:

答案 0 :(得分:1)

通过创建尺寸小于4096x4096的texturepack.png解决了该问题。 出于某种原因,它仅在某些设备上可以正常,并且在桌面上没有发现类似的问题。

希望这有助于某人...

答案 1 :(得分:0)

在此处查看您的代码:

        atlas = new TextureAtlas("data/shot/atlas.pack");
        style.imageUp =  new TextureRegionDrawable(atlas.findRegion("ui/play"));
        ^^^^^

        buttonPlay = new ImageButton(styleButtonPlay);
                                     ^^^^^^^^^^^^^^^

看起来你为imageButton指定了错误的样式,尝试将drawable放入正确的按钮样式(" styleButtonPlay"相反"样式"):

        styleButtonPlay.imageUp =  new TextureRegionDrawable(atlas.findRegion("ui/play"));