2012-02-29 35 views
0

我有這個代碼應該移動一個對象,但它仍然可以有人說什麼是錯?位圖不起作用

第一代碼

視圖類是我顯示該對象代碼。

import android.app.Activity; 
import android.os.Bundle; 

public class Game extends Activity { 
    Play View; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     View = new Play(this); 
     setContentView(View); 
    } 
} 

謝勝利代碼

這是代碼是該對象應當移動。

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.view.View; 


public class Play extends View { 

    int Y=0; 
    Bitmap object; 

    public Play(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub   object = BitmapFactory.decodeResource(getResources(), R.drawable.brid); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     canvas.drawColor(Color.GRAY); 
     canvas.drawBitmap(object, (canvas.getWidth()/2), Y, null); 
     if (Y < canvas.getHeight()){ 
      Y +=10; 
     }else { 
      Y = 0; 
     } 
    }  

} 

回答

1

首先不要叫你的Play對象「視圖」,因爲它指的是一個Android類。將其命名爲「playView」...

要回答你的問題,當onDraw()完成時,View不會自行重繪。要做到這一點,你應該在onDraw()的末尾撥打invalidate()

爲了使圖畫更加流暢,我建議將它放入Thread並製作遊戲循環以運行繪圖。查看SurfaceView,因爲這比從View直接打到Canvas快。

+0

好的thx真正有用的:) – user1241123 2012-02-29 20:18:16

0

我不知道你期待發生什麼,但View.onDraw()不會自動被調用多次爲你,一旦你的觀點呈現它不會被再次調用,直到一些請求重繪,通常使用View.invalidate()

您應該改用Animation來代替您想要的。

+0

對象將在屏幕上上下移動。 – user1241123 2012-02-29 20:15:02