GameBoard
を拡張するクラスがありますSurfaceView
。内部にはOnDraw
メソッドがあります:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int size = getWidth()/8;
canvasSize = size;
pawnBitmap[0] = bigPawn;
pawnBitmap[1] = smallPawn;
float left_distance;
float top_distance;
for(int j = 0; j < 10; j++){
for (int i =0; i < 4; i++){
left_distance = i*size+(float)50;
top_distance = j*size+(float)10;
canvas.drawBitmap(pawnBitmap[0], left_distance, top_distance, paint);
canvas.drawBitmap(pawnBitmap[1], 6*size+i*30+(float)10, top_distance+30, paint);
}
}
}
pawnBoard
、bigPawn
およびsmallPawn
このクラスで公開されており、次のようなものです。
public BitmapFactory myBitmapFactory = new BitmapFactory();
public Bitmap[] pawnBitmap = new Bitmap[2];
public Bitmap bigPawn = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.game_button_2), 90, 90, false);
public Bitmap smallPawn = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.game_button_2), 30, 30, false);
bigPawn と smallPawn のイメージを変更する 2 つ目の方法もあります。
public void setBitmaps(Bitmap one, Bitmap two){
this.paint = new Paint();
this.bigPawn = one;
this.smallPawn = two;
this.tmp=4;
invalidate();
}
しかし、別の内部 (別のクラス内) でこのメソッドを呼び出した後、画像は変更されません。tmp
メソッドが実際に画像を変更するかどうか変数を使用して確認しましたsetBitmaps()
が、これは正しいです。ただし、無効化機能は機能しません。なんで?メソッドを呼び出すsetBitmaps
方法は次のとおりです。
public void savePermutation(View view){
Bitmap tmpBitmap1 = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.blue), 230, 230, false);
Bitmap tmpBitmap2 = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.blue), 100, 100, false);
myGameBoard.setBitmaps(tmpBitmap1, tmpBitmap2);
}
私は解決策を探していましたが、私が見つけたものはどれも役に立ちませんでした。