java - 如何在通用补间引擎 libgdx java 上使用 2 个值
问题描述
我想让 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;
}
}
}
解决方案
在getValues上只需将return 1更改为return 2即可
推荐阅读
- java - 查找兼容元素的所有可能组合
- sql - 从具有子表条件的父表中选择
- .net - 如何在没有参数的情况下运行“dotnet lambda deploy-serverless”命令?
- node.js - Express.js API 无法从前端接收 cookie
- arrays - main() 中的数组在函数中发生变化
- rust - 如何仅映射迭代器中的 Some() 值?
- java - 加载并编译外部 .java 文件
- python - 如何将 dict 转换为数据框,并将值作为标题和行?
- php - Mysql重复结果
- tfs - 从 TFS 2017 升级到 Azure DevOps - 构建/发布管道