Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不使用精灵工作表的画布位图动画 Bitmap[]planeFrames=新位图[4]; 受保护的void onDraw(画布){ 对于(int i=0;i_Java_Android_Animation - Fatal编程技术网

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);
}