2014-04-01 32 views
0

我在編寫遊戲,現在我正在爲屏幕上下移動的精靈製作動畫。在屏幕上繪製精靈之後,我正在嘗試繪製一個永久位圖來代替剛纔的動畫精靈的位置,就像一條線索。但是,我不確定如何永久繪製到Canvas或將位圖保存到畫布,以便在更新onDraw時保持在屏幕上。我希望沿着屏幕向下移動的角色在位圖後面留下一條路徑。有沒有辦法做到這一點?如何在畫布上畫出留下蹤跡? (Android)

Path mCharacterPath=new Path(); 


public void onDraw(Canvas canvas) { 

     canvas.drawBitmap (mCharacter, mPosX, mPosY, mCharacterPaint); 
     canvas.drawPath (mCharacterPath, mPathPaint); 

} 

public void add_point_to_path(int x, int y) { 
     mPath.lineTo(x,y); 
} 

所以每

基本解決方案:我使用的是Android的SDK(Eclipse中)與Java在Windows 7

+0

追蹤將會是另一個精靈 – rupps

+0

是的,追蹤將是另一個精靈。目前,我已經將該精靈轉換爲位圖並被繪製出來,但它並不像它應該的那樣運行。 – user3471603

+0

你應該像人物一樣畫它,有什麼問題? – rupps

回答

0

的想法是有性格和其蹤跡獨立計算編程有些時候,你只需撥打

add_point_to_path (mPosX, mPosY); 

它會將當前的精靈位置添加到路徑中。

更改mPathPaint,您可以自定義路徑種類,如您所知。此外,您還可以添加圓弧,曲線等..

更好的解決方案

另一種解決方案是創建一個位圖,透明的,下面的一切:

public void onDraw(Canvas canvas) { 


    // we draw our auxiliary bitmap that contains all the trails 
    canvas.drawBitmap (mTransparentBitmapForTrails, 0, 0, mTransparentBitmapPaint); 
    . 
    // then we draw the usual stuff, characters, etc... 
    canvas.drawBitmap (mCharacterBimap, mPosX, mPosY, mCharacterPaint); 
    . 
    . 
} 

// this creates a transparent background the size of the screen 
// you will render trails here and they all will be painted at once in onDraw below the craracters 

Bitmap mBitmapForTrails; 
Canvas mCanvasForTrails; 

public void initializeBitmapForTrails() { 
     mBitmapForTrails=new Bitmap(); // checkout how to create bitmaps with specific w&h, can't remember at the moment. 
     mCanvasForTrails=new Canvas(mBitmapForTrails); // we create a canvas to draw in that bitmap 
} 

// this will paint the trail in our secondary bitmap. This secondary bitmap doesn't get 
// erased, so the drawTrail()'s are accumulative 

public void drawTrail (int x, int y) { 
    mCanvasForTrails.drawBitmap(your_cool_trail_bitmap, x, y, mTrailPaint); 
    invalidate(); // this works, but for performance you'll later do invalidate(rect), so Android only repaints the changed portion of the bitmap. That rect will be the rectangle occupied by the trail bitmap. ie. (x,y,x+trailw,y+trialh) 
} 

所以你會畫畫所有該位圖的路徑。這具有的優點是路徑可能非常複雜而根本不影響性能。

+0

如果我想讓mCharacterPaint成爲圖像或位圖,該怎麼辦?那可能嗎? – user3471603

+0

mCharactedPaint是繪畫對象,它可以控制像alpha,筆畫寬度等等的實際位圖是mCharacterBitmap – rupps

+0

所以mCharacterBitmap是被繪製的那個?至於線索,這是一個任意的線,有一個寬度,中風和阿爾法?我想讓位圖成爲在屏幕上動畫的精靈的實際軌跡。這不是在精靈之後畫出一條路徑,而是作爲一個具有不同繪畫特徵的線條對象嗎? – user3471603