MoveToAction、RotateToAction、およびScaleToActionを使用してスプライトを移動、回転、サイズ変更しようとしています。最初の2つは問題なく動作しますが、ScaleToActionに問題があります。 私は、動作する2つのアクションと同じように、アクタにアクションを追加します。私は問題が@オーバーライドにあるかもしれないと思いますか?コードを実行すると、スプライトは移動して回転しますが、スケーリングは行われません。Libgdx ScaleToActionがサイズ変更されない
私は以下の答えで示唆されているように、sprite.setscaleを使用しようとしましたが、まだ運がありません。また、スプライトを削除し、ちょうどTextureRegionを使用しようとしましたが、それは動作するように取得していない場合は
public class Prizes extends Actor {
private LearnToRead game;
private TextureAtlas atlas;
private TextureRegion prizepic;
private Sprite sprite;
private RotateToAction rta;
private ScaleToAction sta;
private MoveToAction mta;
public Prizes(LearnToRead game) {
this.game = game;
atlas = new TextureAtlas("prizes.pack");
prizepic = atlas.findRegion("haxhatt");
sprite = new Sprite(prizepic);
sprite.setPosition(450 - sprite.getWidth()/2, 450 * Gdx.graphics.getHeight()/Gdx.graphics.getWidth() - sprite.getHeight()/2);
//setBounds(sprite.getX(), sprite.getY(), sprite.getWidth(), sprite.getHeight());
setTouchable(Touchable.enabled);
rta = new RotateToAction();
sta = new ScaleToAction();
mta = new MoveToAction();
rta.setRotation(180f);
sta.setScale(2f);
mta.setPosition(0, 0);
mta.setDuration(5f);
rta.setDuration(5f);
sta.setDuration(5f);
Prizes.this.addAction(rta);
Prizes.this.addAction(sta);
Prizes.this.addAction(mta);
}
@Override
public void draw(Batch batch, float parentAlpha) {
sprite.draw(batch);
}
@Override
public void act(float delta) {
super.act(delta);
}
@Override
protected void positionChanged() {
sprite.setPosition(getX(), getY());
}
@Override
protected void rotationChanged() {
sprite.setRotation(getRotation());
}
@Override
protected void sizeChanged() {
sprite.setScale(getScaleX(), getScaleY());
}
}
:私はここのクラスからのコードを追加します。テクスチャは描画されますが、移動はしません。私もそのコードをポストが、私はこのコードについては非常に不確かだということを告白します:
public class Prizes extends Actor {
private LearnToRead game;
private TextureAtlas atlas;
private TextureRegion prizepic;
private RotateToAction rta;
private ScaleToAction sta;
private MoveToAction mta;
public Prizes(LearnToRead game) {
this.game = game;
atlas = new TextureAtlas("prizes.pack");
prizepic = atlas.findRegion("haxhatt");
Prizes.this.setBounds(450 - Prizes.this.getX(), Prizes.this.getY(), Prizes.this.getWidth(), Prizes.this.getHeight());
setTouchable(Touchable.enabled);
rta = new RotateToAction();
sta = new ScaleToAction();
mta = new MoveToAction();
rta.setRotation(180f);
sta.setScale(2f);
mta.setPosition(0, 0);
mta.setDuration(5f);
rta.setDuration(5f);
sta.setDuration(5f);
Prizes.this.addAction(rta);
Prizes.this.addAction(sta);
Prizes.this.addAction(mta);
}
@Override
public void draw(Batch batch, float parentAlpha) {
game.batch.begin();
game.batch.draw(prizepic, Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
game.batch.end();
}
@Override
public void act(float delta) {
super.act(delta);
}
@Override
protected void positionChanged() {
Prizes.this.setPosition(getX(), getY());
}
@Override
protected void rotationChanged() {
Prizes.this.setRotation(getRotation());
}
@Override
protected void sizeChanged() {
Prizes.this.setScale(getScaleX(), getScaleY());
}
}
たぶん誰か私が間違っているのかについて良いアイデアを持って?
Sprite + Actorの代わりにImageを使用してみませんか? – Aryan