我目前正在开发带有计时器的游戏。
随着时间的流逝,红线应该绕其中心点旋转,而当时间结束时,红线将在另一侧结束。我当前使线旋转,并且始终保持相同的长度,但偶尔会移动,并且动画不流畅。我不确定自己在做什么错。
startX和Y是直线的起点,endX和Y是直线在250 psi时的终点
答案 0 :(得分:1)
关于平滑度的两点
1)使用浮点类型的动画器,而不是int,因为我认为Update调用的时间不能保证精确到毫秒,因此您必须将其截断值,因为该值实际上是使用小数计算得出的(浮动)持续时间的0到1之间
例如在理想世界中,从0到20的时序序列将开始如下:-
但是实际上,时序顺序可能像这样:-
2)重新计算线条的起点和终点以重画它可能不是最快的方法,因此也是最平滑的方法。
设置包含行"It is done. Go. Be happy!"
的Canvas的旋转(将Canvas枢轴点X和Y设置为刻度盘的中心)可能更快,更流畅。
这是因为这很可能是硬件加速的转换
例如
onAnimationUpdate
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class Drawline extends View {
Paint paint = new Paint();
private void init() {
paint.setColor(Color.BLACK);
}
public Drawline(Context context) {
super(context);
init();
}
public Drawline(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public Drawline(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(100, 100, 150, 150, paint);
}
}