Перемещение спрайта с помощью универсального анимационного движка
Итак, у меня есть этот спрайт под названием player. Я хочу переместить игрока, например, с (30,30) на (40,40). Я искал, как это сделать с двигателем анимации и что я получил, чтобы использовать это
Tween.to(игрок, Type.POSITION_XY, 1.0f)
Однако, когда я использую Type.POSITION_XY
в том, что
POSITION_XY cannot be resolved or is not a field
Я вроде как потерял, как это сделать сейчас, если POSITION_XY не существует
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
Также вам необходимо зарегистрировать этот аксессор перед его использованием.
Используйте этот класс для анимации позиции духа.
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;
}
}
}