【发布时间】:2019-05-23 23:51:46
【问题描述】:
我想让 2 个值同时工作 例子: 我希望 X 从 0 到 100 和 Y 从 500 到 -200 变量
我的代码仅适用于 X_start 和 X_end 它从 (0, 1,2...100) 但是 Y_start 和 Y_end 不能那样工作,它会 (500,500...500,-200) 而我需要它做的是 (500,499,498.. .-199,-200)
float X_start = 0;
float X_end = 100;
float Y_start = 500;
float Y_end = -200;
Tween.set(skeleton, SkeletonAcessor.P_Z).target(X_start,Y_start).start(tweenManager);
Tween.to(skeleton,SkeletonAcessor.P_Z, 5.0f).target(X_end,Y_end).setCallback(new TweenCallback(){
@Override
public void onEvent(int arg0, BaseTween<?> arg1) {
}
}).start(tweenManager);
tweenManager.update(Float.MIN_VALUE);
我的公共类 SkeletonAcessor 实现 TweenAccessor
public class SkeletonAcessor implements TweenAccessor<Skeleton> {
// tween the position
public static final int P_X = 1;
public static final int P_Y = 2;
// tween the scale
public static final int P_Z = 3;
public static final int P_TREME =4;
@Override
public int getValues(Skeleton target, int tweenType, float[] returnValues) {
switch(tweenType){
case P_X:
returnValues[0] = target.getRootBone().getX();
// returnValues[1] = target.getRootBone().getY();
return 1;
case P_Y:
returnValues[0] = target.getRootBone().getY();
return 1;
case P_Z:
returnValues[0] = target.getRootBone().getScaleX();
returnValues[0] = target.getRootBone().getScaleY();
returnValues[1] = target.getRootBone().getY();
// System.out.println("get valor "+returnValues[0]+"\n");
return 1;
case P_TREME:
returnValues[1] = target.getRootBone().getX();
return 1;
default:
assert false;
return -1;
}
}
@Override
public void setValues(Skeleton target, int tweenType, float[] newValues) {
switch(tweenType){
case P_X:
target.getRootBone().setX(newValues[0]);
// dá o efeito andar
//target.getRootBone().setY(((float)(0.1*Math.cos(newValues[0]))*20) +400);
break;
case P_Y:
target.getRootBone().setY(newValues[0]);
break;
case P_Z:
target.getRootBone().setScaleX( newValues[0]/2);
target.getRootBone().setScaleY( newValues[0]/2);
target.getRootBone().setY(newValues[1]);
// System.out.println("newValues[1] "+newValues[1]+" \n");
break;
case P_TREME:
int random = (int)(Math.random() * 20 + 1);
// System.out.println("rand "+random+" valor "+newValues[0]+"\n");
target.getRootBone().setX(newValues[1]+random);
break;
default:
assert false;
}
}
}
【问题讨论】: