【发布时间】:2014-04-28 11:20:01
【问题描述】:
我可以在移动时使用路径修改器以正确的角度旋转我的精灵。为了实现这一点,我在 IPathModifierListener 的 onPathWaypointStarted() 方法中使用了 setRotation()。
PathModifier aModifier = new PathModifier(finishTime, aPath,
new IPathModifierListener() {
@Override
public void onPathWaypointStarted(
PathModifier pPathModifier, IEntity pEntity,
int pWaypointIndex) {
switch (pWaypointIndex) {
case 0:
setRotation(270 + getAngle(xCur1, xCur2, x1, x2));
break;
case 1:
setRotation(270 + getAngle(x1, x2, x3, x4));
break;
case 2:
setRotation(270 + getAngle(x3, x4, x5, x6));
break;
case 3:
setRotation(270 + getAngle(x5, x6, x7, x8));
break;
case 4:
setRotation(270 + getAngle(x7, x8, x9, x10));
break;
case 5:
setRotation(270 + getAngle(x9, x10, x11, x12));
break;
case 6:
setRotation(270 + getAngle(x11, x12, x13, x14));
break;
default:
break;
}
}
@Override
public void onPathWaypointFinished(
PathModifier pPathModifier, IEntity pEntity,
int pWaypointIndex) {
}
@Override
public void onPathStarted(PathModifier pPathModifier,
IEntity pEntity) {
}
@Override
public void onPathFinished(
final PathModifier pPathModifier,
final IEntity pEntity) {
ResourcesManager.getActivity().runOnUpdateThread(
new Runnable() {
@Override
public void run() {
unregisterEntityModifier(pPathModifier);
}
});
}
});
我的 getAngle 在下面
private synchronized float getAngle(float startx, float starty,
float targetx, float targety) {
double angle1 = Math.atan2(targety - starty, targetx - startx);
float angle = (float) Math.toDegrees(angle1);
// Log.e("getAngle", "getAngle" + angle);
return angle;
}
但是当我想使用 CubicBezierCurveMoveModifier 平滑移动 wuite 时,我找不到任何像 IPathModifierListener 这样的监听器。所以我不能以正确的角度旋转精灵。
任何想法。
我的对象:
【问题讨论】:
-
无法解决问题。有人来帮忙吗?