【问题标题】:Moving a sprite using the universal tween engine使用通用补间引擎移动精灵
【发布时间】:2013-08-19 01:26:29
【问题描述】:

所以我有这个名为 player 的精灵。我想将播放器从(30,30)移动到(40,40)。我四处寻找如何使用补间引擎来做到这一点,而我得到的是使用它

Tween.to(player, Type.POSITION_XY, 1.0f)

但是当我使用Type.POSITION_XY 时是这样的

POSITION_XY cannot be resolved or is not a field 

如果 POSITION_XY 不存在,我现在不知道该怎么做

【问题讨论】:

    标签: java libgdx tween


    【解决方案1】:

    使用这个类来补间精灵的位置。

    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;
                }
            }
        }
    

    【讨论】:

      【解决方案2】:

      您需要将以下链接中提供的 spriteaccessor 类 http://code.google.com/p/libgdx-texturepacker-gui/source/browse/src/aurelienribon/accessors/SpriteAccessor.java?r=c47de51d163f6facc57921495e70f9b1154b3426

      并将 type.position_xy 更改为 spriteaccessor.pos_xy

      另外你需要在使用前注册这个访问器..

      【讨论】:

      • 链接已损坏。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      相关资源
      最近更新 更多