我正在开发一款 Android 棋盘游戏,并且对创建可缩放和可滚动的棋盘有疑问。棋盘包含静态背景、角色(玩家)和使用图块绘制的实际“关卡”。
我的解决方案是拥有一组元素(图块、图形、所有游戏元素 - 都具有 x、y 坐标和宽度 + 高度)、一个摄像头和一个根据 cameraX、cameraY、cameraWidth 和 cameraHeight 绘制集合的渲染器。因此,如果用户向右滚动,相机只会适当地设置 cameraX - 并且表面是可滚动的。如果用户放大/缩小,渲染器只会适当地缩放每个元素图像。
具有可滚动表面和放大/缩小的渲染器示例代码
protected function draw(Canvas c){
Collection elements = collection.getElements(cameraX,cameraY,cameraWidth,cameraHeight);
if(elements.size() > 0) {
for(int i = 0; i < elements.size(); i++) {
elements.get(i).drawElement(c);
}
}
}
.
.
.
// element class drawElement function
protected drawElement function(Canvas c) {
if(this.image != null) {
int w = this.width;
int h = this.height;
if(this.zoomFactor < 1) {
w*=this.zoomFactor;
h*=this.zoomFactor;
}
c.drawBitmap(this.image,this.x,this.y,w,h);
}
}
- 这是最好的解决方案吗?
- 可以通过其他方式实现吗?
- 可以使用 ScrollView 实现滚动吗?
我不想使用任何引擎,因为这是一个学校项目。