2017-01-31 7 views
-1

Есть ли способ проверить, что мой спрайт виден? Например, у меня есть конкретный спрайт, который я хочу появиться только в том случае, если этот другой спрайт не виден. Пример «Вы выиграете» появится только в том случае, если вы выиграете игру, а спрайт «Вы теряете» еще не на экране. Благодаря!видимость LibGDX

+2

Почему бы вам не использовать простой логический вызов win и другие, называемые свободными? 'if (win &&! loose) winSprite.draw (пакет);' или чтобы сделать его более читаемым, просто установите 'win = false;' и 'loose = false;' каждый раз, когда они либо теряют, либо выигрывают, и рисуют его 'if (win) winSprite.draw (пакет); 'и то же самое с free? – centenond

+0

Неверная шляпа, которую вы хотите достичь: вы хотите проверить видимость (например, в тесте) или хотите ее контролировать (например, 'sprite.setVisibile()')? – Sebastian

+0

Мне кажется, как плохой дизайн, чтобы использовать видимость различных спрайтов для отслеживания состояния игры. Это станет очень запутанным. – Tenfour04

ответ

0

Видимость спрайта может поддерживаться расширением класса 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 

 Смежные вопросы

  • Нет связанных вопросов^_^