2015-04-04 39 views
4

我想要一個繪製drawable的演員,但剪輯它的演員的大小。我從窗口小部件派生這個類,並使用硬編碼值作爲一個簡單的測試:使演員剪輯的孩子圖片

public class MyWidget extends Widget { 

    public MyWidget(Drawable drawable) { 
     setDrawable(drawable); 
     setSize(100, 100); 
    } 

    public void draw(Batch batch, float parentAlpha) { 
     clipBegin(getX(), getY(), 20, 20); 

     drawable.draw(batch, getX(), getY(), 500, 500); 

     clipEnd(); 
    } 
} 

沒有削波,雖然進行,可繪製出溢出的演員界。如果它很重要,這個演員是表格的一部分。我相信我錯誤地使用了clipBegin()/ clipEnd()方法。什麼是正確的方法來做到這一點?

謝謝

+0

不確定這是問題,但'clipBegin'返回一個布爾值,如果返回true,則應該只調用'clipEnd'。 (文檔非常稀少,它意味着如果剪輯返回false,我認爲您不應該調用draw):http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/ scene2d/Actor.html#clipBegin-float-float-float-float- – 2015-04-05 18:00:32

+0

你有沒有想過這個問題? – you786 2015-07-10 05:44:50

回答

2

這是我發現基於評論和我自己的實驗。在開始剪輯之前和繪圖之後刷新批處理以確保正確繪製剪切很重要。

public void draw(Batch batch, float parentAlpha) { 
    batch.flush(); 
    if (clipBegin(getX(), getY(), 20.0f, 20.0f)) { 
     //do your drawing here 
     drawable.draw(batch, getX(), getY(), 500, 500); 
     batch.flush(); 
     clipEnd(); 
    } 
}