2013-08-19 34 views
1

所以我有這個精靈叫玩家。我想把玩家從例如(30,30)移動到(40,40)。我左顧右盼了如何與吐溫引擎,什麼II得到這樣做是爲了當使用這種使用通用補間引擎移動精靈

Tween.to(播放器,Type.POSITION_XY,1.0F)

不過我使用Type.POSITION_XY

POSITION_XY cannot be resolved or is not a field 

我sortof丟失如何做到這一點,如果現在POSITION_XY不存在

回答

2

使用這個類的補間spirte的位置。

public class SpriteAccessor implements TweenAccessor<Sprite> { 

     public static final int POS_XY = 1; 
     public static final int CPOS_XY = 2; 
     public static final int SCALE_XY = 3; 
     public static final int ROTATION = 4; 
     public static final int OPACITY = 5; 
     public static final int TINT = 6; 

     @Override 
     public int getValues(Sprite target, int tweenType, float[] returnValues) { 
      switch (tweenType) { 
       case POS_XY: 
        returnValues[0] = target.getX(); 
        returnValues[1] = target.getY(); 
        return 2; 

       case CPOS_XY: 
        returnValues[0] = target.getX() + target.getWidth()/2; 
        returnValues[1] = target.getY() + target.getHeight()/2; 
        return 2; 

       case SCALE_XY: 
        returnValues[0] = target.getScaleX(); 
        returnValues[1] = target.getScaleY(); 
        return 2; 

       case ROTATION: returnValues[0] = target.getRotation(); return 1; 
       case OPACITY: returnValues[0] = target.getColor().a; return 1; 

       case TINT: 
        returnValues[0] = target.getColor().r; 
        returnValues[1] = target.getColor().g; 
        returnValues[2] = target.getColor().b; 
        return 3; 

       default: assert false; return -1; 
      } 
     } 

     @Override 
     public void setValues(Sprite target, int tweenType, float[] newValues) { 
      switch (tweenType) { 
       case POS_XY: target.setPosition(newValues[0], newValues[1]); break; 
       case CPOS_XY: target.setPosition(newValues[0] - target.getWidth()/2, newValues[1] - target.getHeight()/2); break; 
       case SCALE_XY: target.setScale(newValues[0], newValues[1]); break; 
       case ROTATION: target.setRotation(newValues[0]); break; 

       case OPACITY: 
        Color c = target.getColor(); 
        c.set(c.r, c.g, c.b, newValues[0]); 
        target.setColor(c); 
        break; 

       case TINT: 
        c = target.getColor(); 
        c.set(newValues[0], newValues[1], newValues[2], c.a); 
        target.setColor(c); 
        break; 

       default: assert false; 
      } 
     } 
    }