2017-01-31 105 views
-1

有沒有辦法檢查我的精靈是否可見?例如,我有一個特定的精靈,我想只出現在這個其他精靈不可見的情況下。示例「您贏」只會在您贏得比賽並且屏幕上沒有「您輸了」精靈時出現。謝謝!LibGDX知名度

+2

爲什麼不使用一個簡單的布爾稱爲win和其他稱爲鬆散? '如果(win &&!鬆動)winSprite.draw(批處理);'或者爲了使它更具可讀性,只需設置'win = false;'和'loose = false;'每次鬆動或贏取時,並繪製if (贏)winSprite.draw(批次);'和鬆散? – centenond

+0

不確定的帽子你想實現:你想檢查可見性(如在測試中)還是你想控制它(像'sprite.setVisibile()')? – Sebastian

+0

在我看來,糟糕的設計嘗試使用各種精靈的可見性來跟蹤遊戲的狀態。這將變得非常複雜。 – Tenfour04

回答

0

通過擴展Sp​​rite類可以保持sprite的可見性。在擴展的Sprite類中添加數據成員,並在運行時檢查您的Sprite是否可見。

,你也可以通過這個滿足您的要求:

private Sprite win,loose; 
    private SpriteBatch spriteBatch; 
    private DialogType dialogType; 

    @Override 
    public void create() { 

     dialogType=DialogType.NONE; 

     spriteBatch=new SpriteBatch(); 

     win=new Sprite(...); 
     loose=new Sprite(...); 

    } 

    @Override 
    public void render(float delta) { 

    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    spriteBatch.begin(); 
    ... 
    ... 
    if(dialogType==WIN){ 
     win.draw(spriteBatch); 
    }else if(dialogType==LOOSE){ 
     loose.draw(spriteBatch); 
    } 
    spriteBatch.end(); 

    } 

public enum DialogType {  
     NONE,WIN,LOOSE 
} 
0

似乎是一個壓倒做你正在嘗試做的,就像我在評論說,用一個簡單的boolean win,loose;你幾乎覆蓋你的榜樣,或像其他評論說,你不應該有一些精靈可視性根據做出枚舉跟蹤遊戲狀態和跟蹤遊戲的狀態,而不是像其他的答案,但伊馬給你解決

使用Image,而不是...

Image image = new Image(texture); 
image.setBounds(0,0,100,100); // set x,y,width,height 
stage.add(image); //add to stage 

image.setVisible(false); //make it invisible 
image.setVisible(true); //make it visible 
image.isVisible(); //check if is visible