Есть ли способ проверить, что мой спрайт виден? Например, у меня есть конкретный спрайт, который я хочу появиться только в том случае, если этот другой спрайт не виден. Пример «Вы выиграете» появится только в том случае, если вы выиграете игру, а спрайт «Вы теряете» еще не на экране. Благодаря!видимость LibGDX
-1
A
ответ
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
Почему бы вам не использовать простой логический вызов win и другие, называемые свободными? 'if (win &&! loose) winSprite.draw (пакет);' или чтобы сделать его более читаемым, просто установите 'win = false;' и 'loose = false;' каждый раз, когда они либо теряют, либо выигрывают, и рисуют его 'if (win) winSprite.draw (пакет); 'и то же самое с free? – centenond
Неверная шляпа, которую вы хотите достичь: вы хотите проверить видимость (например, в тесте) или хотите ее контролировать (например, 'sprite.setVisibile()')? – Sebastian
Мне кажется, как плохой дизайн, чтобы использовать видимость различных спрайтов для отслеживания состояния игры. Это станет очень запутанным. – Tenfour04