2015-01-07 126 views
0

.setRotation()或.rotateBy()函數適用於其他Actor類,但不適用於ProgressBar對象。libgdx ProgressBar旋轉不起作用

我在這裏錯過了什麼嗎?

public void create() { 
    stage = new Stage(new ScreenViewport()); 
    Gdx.input.setInputProcessor(stage); 
    skin = new Skin(); 
    Pixmap pixmap = new Pixmap(10, 10, Pixmap.Format.RGBA8888); 
    pixmap.setColor(Color.WHITE); 
    pixmap.fill(); 
    skin.add("white", new Texture(pixmap)); 

    TextureRegionDrawable textureBar = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("blue.jpg")))); // Just a blue square 
    ProgressBar.ProgressBarStyle barStyle = new ProgressBar.ProgressBarStyle(skin.newDrawable("white", Color.DARK_GRAY), textureBar); 
    progressBar = new ProgressBar(0,10,0.5f,false, barStyle); 
    progressBar.setPosition(10, 10); 
    progressBar.setSize(290, progressBar.getPrefHeight()); 
    progressBar.setAnimateDuration(2); 
    progressBar.setValue(5); 
    progressBar.setRotation(45); // Should rotate the bar 

    stage.addActor(progressBar); 
} 

The bar stays horizontal even if I set the rotation.

另外,如果我叫.getRotation()我得到什麼我將它以前,所以我不知道這裏有什麼問題。

+0

進度條本身的設計本身水平和垂直渲染和不允許通用輪替](見https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/ GDX /場景/ scene2d/UI/ProgressBar.java#L129)。試過把它放在一些密封容器中,然後旋轉它? – cfrick

+0

大多數UI小部件不支持任意旋轉,因爲它們依靠OpenGL剪裁進行裁剪。 – Tenfour04

+0

@cfrick啊,必須這樣。當我回家時我會嘗試。 – user865881

回答

0

Most UI widgets cannot be transformed directly,由於性能原因。儘管如此,仍然有getter/setter用於旋轉,這可能會讓人困惑。

但是可以將它們放入Group並轉換組。

ProgressBar progressBar = ... 
Group g = new Group(); 
g.addActor(progressBar); 
g.setRotation(45); 

stage.addActor(g);