Firstable,对不起我的英语。我有这个让我疯狂的问题。 我只想用箭头键进行演员动作,但他不动,为什么? 这是Screen类代码:
public class PantallaTest implements Screen{
JuegoTest juego;
Texture gato;
Sprite gatoSprite;
Stage escenario;
GatoActor gatoActor;
public PantallaTest(JuegoTest juego) {
this.juego = juego;
}
@Override
public void show() {
escenario = new Stage(new FitViewport(320f, 320f));
gato = juego.manager.get("cat_stand.png", Texture.class);
gatoSprite = new Sprite(gato);
gatoActor = new GatoActor(gatoSprite);
Gdx.input.setInputProcessor(escenario);
escenario.addActor(gatoActor);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
escenario.draw();
escenario.act();
updateJuego();
}
private void updateJuego() {
if(Gdx.input.isKeyPressed(Keys.LEFT)){
gatoActor.setX(gatoActor.getX()-2);
}
if(Gdx.input.isKeyPressed(Keys.RIGHT)){
gatoActor.setX(gatoActor.getX()+2);
}
if(Gdx.input.isKeyPressed(Keys.UP)){
gatoActor.setY(gatoActor.getY()+2);
}
if(Gdx.input.isKeyPressed(Keys.DOWN)){
gatoActor.setY(gatoActor.getY()-2);
}
}
演员的代码:
public class GatoActor extends Actor {
Sprite sprite;
public GatoActor(Sprite sprite) {
this.sprite = sprite;
this.setSize(sprite.getWidth(),sprite.getHeight());
}
@Override
public void draw(Batch batch, float parentAlpha) {
Color col = getColor();
batch.setColor(col.r, col.g, col.b, col.a * parentAlpha);
batch.draw(sprite,getX(),getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation());
}
@Override
public void act(float delta) {
rectGato.setPosition(getX(),getY());
super.act(delta);
}
}
主类的代码
public class JuegoTest extends Game{
PantallaTest pTest;
AssetManager manager;
SpriteBatch batch;
@Override
public void create() {
batch = new SpriteBatch();
manager = new AssetManager();
manager.load("cat_stand.png", Texture.class);
manager.load("platform.png", Texture.class);
pTest = new PantallaTest(this);
}
@Override
public void dispose() {
manager.dispose();
batch.dispose();
super.dispose();
}
@Override
public void render() {
if(manager.update()){
this.setScreen(pTest);
}
super.render();
}
}
请帮忙!感谢
答案 0 :(得分:0)
构建项目时是否出现任何错误?我遇到的唯一问题是在您的GatoActor类中,在act方法中,您使用了:
rectGato.setPosition(getX(),getY());
我注意到你从未在其他任何地方定义过rectoGato,你可能想设置精灵的位置,所以我把它改为:
sprite.setPosition(getX(),getY());
现在一切都适合我,演员随着按键移动。希望这会有所帮助。
编辑* 对于加载图像后的主类,您应该尝试
manager.finishLoading();
然后设置屏幕而不是在render方法中完成所有操作。你以前的所作所为似乎是正确的,但你应该试试看它是否有效。这是我的猜测。