我被分配制作一个简单的Android应用程序游戏,用户通过倾斜手机控制屏幕上的球。该应用程序利用自定义视图绘制所有对象,并使用Runnable对象为球设置动画。请注意,x和y表示球的位置,vx和vy表示球的速度,fx和fy表示施加到球的力。 ix和iy代表手机的倾斜;我将这两个设置为虚拟值以测试应用程序,而不必担心暂时设置传感器管理器:
private Runnable animator = new Runnable() {
@Override
public void run() {
boolean needNewFrame = false;
long now = AnimationUtils.currentAnimationTimeMillis();
float dt = Math.min(now - lastTime, 50) / 1000f;
fx = - alpha * vx + beta * ix;
fy = - alpha * vy + beta * iy;
vx = fx * dt;
vy = fx * dt;
if(x<xMin||x>xMax-ball_radius||y<yMin||y>yMax-ball_radius)
bounce();
x = x + vx * dt;
y = y + vy * dt;
lastTime = now;
needNewFrame = true;
postDelayed(this, 20);
invalidate();
}
};
我已经设置了动画师,但它不会运行。我尝试在视图初始化上调用post(animator),但这不起作用。我该如何解决?
另外,如何设置手机倾斜的ix和iy变量?根据我的理解,传感器管理器应该从活动类设置。
答案 0 :(得分:0)
实际上,动画确实可以成功播放。这只是动画播放速度非常慢。