Java 安卓画棋子
我目前正在开发一个android版的国际象棋,但我对draw有一个问题。我已经建立了一个ChessboardView类,该类扩展了view并使用另一个名为Tile的助手类。问题是,我的所有片段都被绘制在正确的位置(我的调试器在单击平铺时显示我正在命中的片段),但所有图像都显示为黑色皇后(我认为这是我的switch语句中命中的最后一个案例,因为当我去掉它时,所有片段都会变成黑色的车)。以下是相关代码: ChessboardView.java:Java 安卓画棋子,java,android,bitmap,draw,Java,Android,Bitmap,Draw,我目前正在开发一个android版的国际象棋,但我对draw有一个问题。我已经建立了一个ChessboardView类,该类扩展了view并使用另一个名为Tile的助手类。问题是,我的所有片段都被绘制在正确的位置(我的调试器在单击平铺时显示我正在命中的片段),但所有图像都显示为黑色皇后(我认为这是我的switch语句中命中的最后一个案例,因为当我去掉它时,所有片段都会变成黑色的车)。以下是相关代码: ChessboardView.java: protected void onDraw(final
protected void onDraw(final Canvas canvas){
final int width = getWidth();
final int height = getHeight();
this.squareSize = Math.min(
getSquareSizeWidth(width),
getSquareSizeHeight(height)
);
getOrigins(width,height);
for(int col = 0; col < NUM_RC; col++){
for(int row = 0; row < NUM_RC; row++){
final int xCoord = getXCoord(col);
final int yCoord = getYCoord(row);
final Rect tileRect = new Rect(xCoord,yCoord,xCoord+squareSize,yCoord+squareSize);
String loc = getRowString(row) + getColumnString(col);
String piece = Chessboard.getPieceAtLocation(loc);
tiles[col][row].setTileRect(tileRect);
tiles[col][row].draw(canvas,piece,getContext());
}
}
}
您需要设置一个
中断代码>在每个案例的结尾处。否则,它将崩溃并执行下一个case。@atg963和大括号({}
)是冗余的;在开关/案例块中,每个案例的语句由案例x:
和break
分隔,除了开关()之后的外部大括号
开关/案例块不需要大括号。示例和更多信息:@gabeschen:我知道你写答案已经有一段时间了,但我觉得未来的访问者可以在你的答案中加入这一点。
public void draw(Canvas canvas,String piece, Context c){
canvas.drawRect(tileRect, tileColor);
if(!piece.equals(" ") && !piece.equals("##")){
Bitmap pieceBM = null;
switch(piece) {
case "wp": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_pawn);
}
case "wK": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_king);
}
case "wB": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_bishop);
}
case "wN": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_knight);
}
case "wR": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_rook);
}
case "wQ": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_queen);
}
case "bp": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_pawn);
}
case "bK": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_king);
}
case "bB": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_bishop);
}
case "bN": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_knight);
}
case "bR": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_rook);
}
case "bQ": {
pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_queen);
}
}
canvas.drawBitmap(pieceBM,null,tileRect,null);
}
}