发布于 2013-07-16 17:28:39
您需要的是:
循环应该更新当前图像的位置和旋转。然后在屏幕上绘制更新后的动画。您可以只覆盖dispatchDraw方法,并在它的最后调用invalidate。您可以在绘图前立即更新位置。您的案例类似于游戏编程,因此您可以查找有关游戏循环的文章。
路径定义应允许您根据时间计算位置。例如,您可以使用Bezier曲线。Bezier曲线方程是参数化的,参数是'time‘。使用动画时间可以沿路径平滑移动。
通用游戏循环示例:http://www.gameprogblog.com/generic-game-loop/
贝塞尔曲线:http://en.wikipedia.org/wiki/B%C3%A9zier_curve
long time = System.currentTimeMillis();
protected void dispatchDraw(Canvas canvas) {
PointF pos = getBezierPos(System.currentTimeMillis() - time);
drawImage(pos);
invalidate();
}https://stackoverflow.com/questions/17672534
复制相似问题