Để tạo một trò chơi đơn giản, tôi đã sử dụng một mẫu vẽ canvas với bitmap như sau:
private void doDraw(Canvas canvas) {
for (int i=0;i<8;i++)
for (int j=0;j<9;j++)
for (int k=0;k<7;k++) {
canvas.drawBitmap(mBits[allBits[i][j][k]], i*50 -k*7, j*50 -k*7, null); } }
(Khung được định nghĩa trong "run ()" / SurfaceView nằm trong GameThread.)
Câu hỏi đầu tiên của tôi là làm cách nào để xóa (hoặc vẽ lại) toàn bộ canvas cho một bố cục mới?
Thứ hai, làm cách nào tôi có thể cập nhật chỉ một phần của màn hình?
// This is the routine that calls "doDraw":
public void run() {
while (mRun) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
if (mMode == STATE_RUNNING)
updateGame();
doDraw(c); }
} finally {
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c); } } } }