Как я могу "сбросить" холст (и растровое изображение, используемое для рисования), чтобы я мог нарисовать новый растровое изображение на холсте? - PullRequest
0 голосов
/ 07 июля 2010

Мой метод loadMap () генерирует исключение canvas.throwIfRecycled при попытке загрузить новую карту.
Когда я запускаю игру, начальная карта загружается и работает нормально, хотя
только когда я пытаюсь загрузить новую карту, я получаю исключение ..

как я могу "сбросить" холст и растровое изображение, которое я использую для рисования, чтобы я мог начать с него заново? вот что я использую для создания и рисования своих карт:

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

так просто, когда я создал и использовал picDest и canvas,
я не могу понять, как сбросить все это, когда я хочу загрузить новую карту ..

Тпй

Ответы [ 2 ]

0 голосов
/ 21 апреля 2011

У меня раньше была такая проблема, и я решил ее, добавив проверку

 if(this.backgroundImage!=null)

Ошибка возникла из-за того, что растровое изображение, которое будет отображено, равно нулю.

источник Живые обои + растровое изображение + холст

0 голосов
/ 07 июля 2010

Если вы вызываете invalidate ();он будет перерисован (поэтому перезагружаем его и следуем любым новым инструкциям для рисования чего угодно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...