Java 不使用精灵工作表的画布位图动画 Bitmap[]planeFrames=新位图[4]; 受保护的void onDraw(画布){ 对于(int i=0;i
我正试图通过交换图像来设置平面动画,但它不起作用我不知道我的方法是否简单易用你不能这样设置动画Java 不使用精灵工作表的画布位图动画 Bitmap[]planeFrames=新位图[4]; 受保护的void onDraw(画布){ 对于(int i=0;i,java,android,animation,Java,Android,Animation,我正试图通过交换图像来设置平面动画,但它不起作用我不知道我的方法是否简单易用你不能这样设置动画onDraw在每次绘制迭代中都被调用,这意味着在返回时在画布上绘制的内容就是将在屏幕上绘制的内容。基本上,你在这里做的是在画布上的同一个位置绘制所有位图,它们都会贴在彼此的上面 您需要做的是调用视图的方法。为了提高效率,可以使用Rect或定义位图周围的区域 Bitmap[] planeFrames = new Bitmap[4]; protected void onDraw(Can
onDraw
在每次绘制迭代中都被调用,这意味着在返回时在画布上绘制的内容就是将在屏幕上绘制的内容。基本上,你在这里做的是在画布上的同一个位置绘制所有位图,它们都会贴在彼此的上面
您需要做的是调用视图的方法。为了提高效率,可以使用Rect
或定义位图周围的区域
Bitmap[] planeFrames = new Bitmap[4];
protected void onDraw(Canvas canvas) {
for(int i = 0 ; i < planeFrames.length;i++)
canvas.drawBitmap(planeFrames[i], plane.getCenterX(), 0, null); // planeFrames is an array of Bitmaps
}
这将在反复绘制新位图的同时始终绘制位图。只要视图在屏幕上,这将永远持续
bmpRect
是一个包含位图坐标的Rect。您应该发布更多代码以帮助人们理解。
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(planeFrames[i], plane.getCenterX(), 0, null);
if(++i >= planeFrames.length) {
i = 0;
}
invalidate(bmpRect);
}