2014-06-27 31 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。