2015-12-15 44 views
0

我想改變一個精靈的y位置,翻譯的作品,我的問題是它忽略了我的目標,每次都去一個特定的點,我不明白爲什麼吐溫引擎 - Tween.to忽略目標值

雪碧存取器代碼:

public class SpriteAccessor implements TweenAccessor<Sprite>{ 
    public static final int ALPHA = 1; 
    public static final int POSITION_X = 2; 
    public static final int POSITION_Y = 3; 

    @Override 
    public int getValues(Sprite target, int tweenType, float[] returnValues) { 
     switch (tweenType) { 
      case ALPHA: 
       returnValues[0] = target.getColor().a; 
       return 1; 

      case POSITION_X: 
       returnValues[1] = target.getX(); 
       return 2; 

      case POSITION_Y: 
       returnValues[2] = target.getY(); 
       return 3; 

      default: 
       return 0; 
     } 
    } 

    @Override 
    public void setValues(Sprite target, int tweenType, float[] newValues) { 
     switch (tweenType) { 
      case ALPHA: 
       target.setColor(1, 1, 1, newValues[0]); 
       break; 

      case POSITION_X: 
       target.setX(newValues[1]); 
       break; 

      case POSITION_Y: 
       target.setY(newValues[2]); 
       break; 
     } 
    } 
} 

和作用在哪裏使譯文:

private void setupTween() { 
     Tween.registerAccessor(Sprite.class, new SpriteAccessor()); 
     manager = new TweenManager(); 

     TweenCallback cb = new TweenCallback() { 
      @Override 
      public void onEvent(int type, BaseTween<?> source) { 

      } 
     }; 

     Tween.to(menuLogoSprite, SpriteAccessor.POSITION_Y, 2f) 
       .target()//any value i put here is ignored 
       .ease(TweenEquations.easeInOutQuint) 
       .setCallback(cb).setCallbackTriggers(TweenCallback.COMPLETE) 
       .start(manager); 
    } 

回答

1

您好像誤會怎麼TweenAccessor東西工程。在getValue()方法中,您應該將值放入從零元素開始的returnValues數組中,結果應該是放置的值的數量。

這允許您使用單個補間類型處理多個值。

爲了解決立即解決問題,試試這個...

switch (tweenType) { 
     case ALPHA: 
      returnValues[0] = target.getColor().a; 
      return 1; 

     case POSITION_X: 
      returnValues[0] = target.getX(); 
      return 1; 

     case POSITION_Y: 
      returnValues[0] = target.getY(); 
      return 1; 

     default: 
      return 0; 
    } 
} 

@Override 
public void setValues(Sprite target, int tweenType, float[] newValues) { 
    switch (tweenType) { 
     case ALPHA: 
      target.setColor(1, 1, 1, newValues[0]); 
      break; 

     case POSITION_X: 
      target.setX(newValues[0]); 
      break; 

     case POSITION_Y: 
      target.setY(newValues[0]); 
      break; 
    } 
} 

警告 - 這是從內存中,我還沒有真正嘗試你的代碼。

+0

謝謝!這解決了我的問題 –