4

アクションを使用してアクターをスケーリングしようとしています。しかし、うまくいきません。特定の時間にアクターのサイズを増減させたいだけです。

アクターは、指定した 2 秒間だけ待機しScaleToます。MoveTo私が与えたアクションに基づいて正しく動きます。

public class SpriteTest extends Actor {
       private Sprite sprite;
       private TextureAtlas atlas;
       Rectangle boundsd = new Rectangle();

       public SpriteTest(FirstGame game) {
           //super(game);
           Gdx.app.log( FirstGame.LOG, "spritetest's costructor" );
           atlas = new TextureAtlas(Gdx.files.internal("pages-info.atlas"));
           sprite = atlas.createSprite("Plus");
       }

       public void draw(SpriteBatch batch,float parentAlpha) {
            batch.draw(sprite, x, y);
       }

// We are adding the actor to the stage in another class

public class LevelScreen extends AbstractScreen {
   private Jumper2D jumper2d;
   SpriteTest obstacled = new SpriteTest(game); 

   public LevelScreen(FirstGame game) {
      super(game);
   }

   @Override
   protected boolean isGameScreen() {
      return true;
   }  

   @Override
   public void show() {
      super.show();

      stage.addActor(obstacled); 
      obstacled.action  
      (Forever.$
            (Sequence.$
               (ScaleTo.$(1.4f, 1.4f, 2),(MoveTo.$(100,120, 3f) ))
                         ));
      jumper2d = Jumper2D.create(getAtlas());
      stage.addActor(jumper2d);
      stage.draw();
   }

   public void render () {
      Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
      stage.act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f));
      stage.draw();
   }
}

どんな助けでも大歓迎です

4

1 に答える 1

8

の方法draw()SpriteTest、のスケールまたは回転設定を無視することActorです。スプライトを適切にスケーリング/回転/サイズ変更して描画する必要があります。(アクターのx、y、幅、高さを設定する必要がある場合もあります---を参照してください setBounds

public void draw(SpriteBatch batch, float parentAlpha)
{
     final Color c = getColor();
     batch.setColor(c.r, c.g, c.b, c.a * parentAlpha);
     batch.draw(sprite, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation());
}
于 2013-02-28T16:45:30.710 に答える