2010-07-07 5 views
0

Ma méthode loadMap() génère une exception canvas.throwIfRecycled lorsque j'essaie de charger une nouvelle carte.
Quand je lance le jeu, le chargement du plan initial et fonctionnent très bien que,
son seul lorsque je tente de charger une nouvelle carte que je reçois l'exception ..comment puis-je "réinitialiser" le canevas (et le bitmap utilisé pour dessiner) afin que je puisse dessiner un nouveau bitmap dans le canevas?

comment i toile « reset » et le bitmap J'utilise pour dessiner dans, donc je peux commencer frais avec eux?
Voici ce que j'utiliser pour créer et dessiner mes cartes:

picDest = Bitmap.createBitmap(width*tileSize, height*tileSize, Bitmap.Config.RGB_565); 
canvas = new Canvas(picDest); 
for (int y = 0; y < height; y++) { 
    for (int x = 0; x < width; x++) { 
    // process tile stuffs here ... 
    /* 
    col = ....: 
    row = ....; 
    */ 
    pic[x][y]= Bitmap.createBitmap(sheet, col*tileSize, row*tileSize, tileSize, tileSize); 
    canvas.drawBitmap(pic[x][y],x*tileSize,y*tileSize,bitmPaint); 
    } 
} 

donc basiquement une fois que je créé et utilisé picDest et toile,
je ne peux pas comprendre comment réinitialiser tout quand je veux charger une nouvelle carte ..

tnx

Répondre

0

Si vous appelez invalidate(); il va redessiner (donc en le reprenant et en suivant de nouvelles instructions pour dessiner quoi que ce soit).

0

J'ai ce genre de problème avant et je l'ai résolu en ajoutant un vérificateur

if(this.backgroundImage!=null) 

L'erreur rised parce que le bitmap qui sera tiré est nulle.

source Live Wallpaper + bitmap + canvas

Questions connexes