【android】 イライラ棒の自機を画像で表示したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nanashi1

【android】 イライラ棒の自機を画像で表示したい

#1

投稿記事 by nanashi1 » 9年前

件名の通りです。androidプログラミングの館で公開されているイライラ棒アプリの自機をプレイヤークラスで読み込み、描画を行いたいです。

TaskクラスにContextを持たせて、Playerクラスで使おうと思って

コード:

public abstract class Task {

	protected Context _context;

	public void Task(Context c) { _context = c; }

}
を追加して、Playerクラスで

コード:

public class Player extends Task {

	final static float SIZE = 20;
	private Paint _paint = new Paint();
	public Task _task;
	public SurfaceHolder holder;

	public Player(){
		Resources res = _task._context.getResources();
		Bitmap katsuo = BitmapFactory.decodeResource(res, R.drawable.katsuo);
	}

	@Override
	public boolean onUpdate(){

		return true;
	}

	@Override
	public void Draw( Canvas c ){
		//c = holder.lockCanvas();
		c.drawBitmap(katsuo, 0, 0, _paint);
		//holder.unlockCanvasAndPost(c);
	}

}
としました。

コーディング中のエラーは消えたのですが、エミュレーターで実行した際に、読み込み部分(Resources res ・・・)にエラーが出ます。 試行錯誤したのですが解決策が全く判りません。ヒントを教えて頂けないでしょうか?よろしくお願いいたします。

nanashi1

Re: 【android】 イライラ棒の自機を画像で表示したい

#2

投稿記事 by nanashi1 » 9年前

すいません、正確には、

コード:

public class Player extends Task {

	final static float SIZE = 20;
	private Paint _paint = new Paint();
	public Task _task;
	public SurfaceHolder holder;

	Resources res = _task._context.getResources();
	Bitmap katsuo = BitmapFactory.decodeResource(res, R.drawable.katsuo);
	
	public Player(){

	}

	@Override
	public boolean onUpdate(){

		return true;
	}

	@Override
	public void Draw( Canvas c ){
		//c = holder.lockCanvas();
		c.drawBitmap(katsuo, 0, 0, _paint);
		//holder.unlockCanvasAndPost(c);
	}

}
でした。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 【android】 イライラ棒の自機を画像で表示したい

#3

投稿記事 by みけCAT » 9年前

_taskを初期化せずに使用するのはまずいのではないでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

nanashi1

Re: 【android】 イライラ棒の自機を画像で表示したい

#4

投稿記事 by nanashi1 » 9年前

Task _task の部分は参照型変数で、初期値を設定していない(初期化を省略している)から、現時点ではnullが代入されている。つまり、うまくContextの情報をPlayerクラスに渡せていないという事でしょうか?

nanashi1

Re: 【android】 イライラ棒の自機を画像で表示したい

#5

投稿記事 by nanashi1 » 9年前

GameMgrクラスに仮引数としてContextを持たせて
Playerクラスを

コード:

public class Player extends Task {

   protected Context _context;
 
    public Player(Context _context){
        _context = context;
        Resources res = context.getResources();
        Bitmap katsuo = BitmapFactory.decodeResource(res, R.drawable.katsuo);
    }
 
    @Override
    public boolean onUpdate(){
 
        return true;
    }
 
    @Override
    public void Draw( Canvas c ){
        c.drawBitmap(katsuo, 0, 0, _paint);
    }
 
}
本来予定していたTaskクラスにContext情報を持たせて全クラスにContext情報を受け渡す手法とは変わってしまいましたが、無事描画する事が出来ました。

閉鎖

“C言語何でも質問掲示板” へ戻る