2012-02-29 28 views
0

私はこのオブジェクトを動かすべきですが、誰かが間違っていると言うことができますか?ビットマップが機能しません

まずコード

ビュークラスIは、オブジェクトコードを表示しました。

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

Secoundコード

これはコードでは、オブジェクトが移動する必要がありました。

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"のような名前をつけてください... が完了すると、Viewはそれ自身を再描画しません。それを行うにはonDraw()の末尾にinvalidate()と呼ぶべきです。

図面をスムーズにするには、これをThreadに入れて、図面を実行するためのゲームループを作成することをおすすめします。 SurfaceViewを参照すると、ViewからCanvasにまっすぐに描画するよりも高速です。

+0

本当に有益です:) – user1241123

0

私はあなたが起こることを期待しているかわからないんだけど、View.onDraw()は自動的にビューがレンダリングされた後に何かが再描画を要求するまで、それが再び呼び出されることはありません、あなたのために複数回呼び出されることはありません通常はView.invalidate()

Animationを使用して実装してください。

+0

オブジェクトが画面の上下に移動します。 – user1241123

関連する問題