SurfaceView 以外のクラスから画像を表示させる
ゲーム製作では Character のクラスで画像の生成を行いたい。
しかし、Character クラスを SurfaceView や Activity クラスから extends すると、エラーになる。
そこで、Activity から SurfaceView を通して、Character へ Context を渡してやり、画像を取得する。
import android.app.Activity;
import android.os.Bundle;
public class GameActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Contextを渡してる
setContentView(new SampleSurfaceView(this));
}
}
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;
public class SampleSurfaceView extends SurfaceView implements Callback, Runnable {
private SurfaceHolder mholder;
private Thread mLooper;
Resources res = this.getContext().getResources();
Bitmap image = BitmapFactory.decodeResource(res, R.drawable.chra_stand_00);
Context myContext;
Character C;
public SampleSurfaceView(Context context) {
super(context);
mholder = getHolder();
//callbackメソッドを登録
mholder.addCallback(this);
//フォーカスを当てる(必要かよく分からない)
setFocusable(true);
myContext=context;
}
@Override
public void run() {
Canvas canvas = null;
//ここで Character 初期化。contextとcanvasを渡す
C=new Character(myContext,canvas);
//画面に描画
canvas = mholder.lockCanvas();
doDraw(canvas);
mholder.unlockCanvasAndPost(canvas);
}
}
private void doDraw(Canvas canvas){
Paint paint = new Paint();
//描画処理(Lock中なのでなるべく早く)
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(C.getImage(), 0, 0, paint);
}
}
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
public class Character{
Bitmap img0;
public Character(Context context,Canvas canvas) {
Resources res = context.getResources();
img0 = BitmapFactory.decodeResource(res, R.drawable.ファイル名);
}
public Bitmap getImage() { // 画像を返す
return img0;
}
}
最終更新:2012年05月01日 19:15