0
我正在Android上用SurfaceView和Canvas進行遊戲。對於玩家,我根據他走路的方向使用4張圖片。 好了,爲了不花費大量的時間,在構造函數中,我定義4位圖的每個方向:在畫布上渲染位圖[Java-Android]
public void initImages(){
right = BitmapFactory.decodeResource(con.getResources(), R.drawable.player_right);
right = Bitmap.createScaledBitmap(self, size, size, true);
left= BitmapFactory.decodeResource(con.getResources(), R.drawable.player_left);
left = Bitmap.createScaledBitmap(self, size, size, true);
up = BitmapFactory.decodeResource(con.getResources(), R.drawable.player_up);
up = Bitmap.createScaledBitmap(self, size, size, true);
down = BitmapFactory.decodeResource(con.getResources(), R.drawable.player_down);
down = Bitmap.createScaledBitmap(self, size, size, true);
}
當我移動玩家我把這種類型的方法:
public void right(){
x++;
self = right;
}
其中self
是我正在使用的當前位圖。 問題是,當我運行遊戲時,位圖沒有改變,並且我總是有相同的位圖。
我已經嘗試過這樣的:
public void right(){
x++;
self = BitmapFactory.decodeResource(con.getResources(), R.drawable.player_right);
self = Bitmap.createScaledBitmap(self, size, size, true);
}
,但它會導致一些問題,它實際上是很慢的。
我做錯了什麼?任何建議?
編輯:這是整個類代碼
public Player(Activity con, int x, int y){
this.con = con;
Player.x = x;
Player.y = y;
body = new Paint();
life = 3;
self = BitmapFactory.decodeResource(con.getResources(), R.drawable.normal);
self = Bitmap.createScaledBitmap(self, size, size, true);
initImages();
}
public void draw(Canvas canvas){
canvas.drawBitmap(self, x*size, y*size, body);
//called in the game loop
}
public void right(){
x++;
self = right;
}
public void initImages(){
right = BitmapFactory.decodeResource(con.getResources(), R.drawable.player_right);
right = Bitmap.createScaledBitmap(self, size, size, true);
left= BitmapFactory.decodeResource(con.getResources(), R.drawable.player_left);
left = Bitmap.createScaledBitmap(self, size, size, true);
up = BitmapFactory.decodeResource(con.getResources(), R.drawable.player_up);
up = Bitmap.createScaledBitmap(self, size, size, true);
down = BitmapFactory.decodeResource(con.getResources(), R.drawable.player_down);
down = Bitmap.createScaledBitmap(self, size, size, true);
}
爲什麼初始化initImages()和right()中的所有變量兩次? – Arlind
我正在尋找解決方案,真正的問題是爲什麼「self = right」不起作用 –
self是正在呈現的位圖。告訴我更多關於invalidate()的信息 –