2014-06-27 28 views
0
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 
} 

我试着通过只交换图像,但动画一个平面它不工作,我不知道如果我的方法是简单与帆布位图的动画,而无需使用精灵表

+0

你应该发布更多的代码来帮助人们理解。 – VinceStyling

回答

0

工作,你不能动画这条路。 onDraw被称为每绘制迭代,这意味着无论你在画布上在返回时绘制什么都将在屏幕上绘制。基本上你在这里做的是在画布上的所有位图上画相同的点,并且它们都将被贴在彼此之上。

你需要做的是调用视图的invalidate()方法。为了使效率更高,您可以使用Rect或定义位图周围的区域。

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.drawBitmap(planeFrames[i], plane.getCenterX(), 0, null); 
    if(++i >= planeFrames.length) { 
     i = 0; 
    } 
    invalidate(bmpRect); 
} 

这将持续绘制位图,同时反复绘制新的位图。只要视图在屏幕上,这将永远持续下去。 bmpRect是一个具有位图坐标的Rect。