2014-03-12 71 views
0

我正在使用Java和Libgdx scene2d進行遊戲。這是我在構造函數代碼:Libgdx scene2d設置邊界太小時觸摸板會「倒置」

atlas = new TextureAtlas("gfx/button.pack"); 
skin = new Skin(atlas); 

TouchpadStyle touchpadStyle = new TouchpadStyle(); 
touchpadStyle.background = skin.getDrawable("button.up"); 
touchpadStyle.knob = skin.getDrawable("button.down"); 
touchpadStyle.knob.setLeftWidth(20); 
touchpadStyle.knob.setRightWidth(20); 
touchpadStyle.knob.setBottomHeight(20); 
touchpadStyle.knob.setTopHeight(20); 
controller = new Touchpad(1f, touchpadStyle); 
addActor(controller); 

然後在調整大小()我做了以下內容:

public void resize(float width, float height) { 
    setViewport(width, height, true); 

    //TODO setting the bounds too small breaks the touchpad? 
    controller.setBounds(width*1f/16, height*1f/9, width/7f, width/7f); 
} 

的問題是,當我調整屏幕(我運行桌面版)到足夠小的寬度,觸摸板會以某種方式「倒轉」。看起來背景是在頂部,並且在我觸摸觸摸板時正在移動。另外,它給出的方向(百分比X,百分比Y)是它應該是的負面因素。

爲什麼會發生這種情況,我該如何預防它?

回答

1

如果你想擁有一個總是屏幕七分之一的控制器,爲什麼你要使用像素完美的舞臺?在您的大小調整方法爲什麼不這樣做:

virtualStage.setViewport(MyGame.VIRTUAL_WIDTH, MyGame.VIRTUAL_HEIGHT, true); 
    virtualStage.getCamera().translate(-virtualStage.getGutterWidth(),-virtualStage.getGutterHeight(), 0); 
    Camera c = virtualStage.getCamera(); 
    c.update(); 

你可以離開了,如果你想(取決於您顯示在右側上什麼)的翻譯。我想知道是否改變調整大小的控制器的邊界是什麼攪亂它。

+0

我現在這樣做。當我使屏幕變得很寬而且高度很窄時,它肯定會起作用,儘管當hud元素遠離邊界時會變得很愚蠢。但我想這對移動屏幕分辨率和桌面應用來說都是可以的,他們甚至可以調整窗口大小以適應這種分辨率。所以,現在觸摸板正在工作,但我仍然想知道當我調整它太小時,它是什麼打破了它... – ploosu2