我正在开发一款Android棋盘游戏,并且有关于创建可缩放和滚动棋盘的问题。该板包含一个静态背景,角色(玩家)和用瓦片绘制的实际“水平”。android可缩放和滚动棋盘游戏
我的解决方案是拥有一组元素(瓷砖,人物,所有游戏元素 - 全部具有x,y坐标和宽度+高度),相机和渲染器,根据cameraX,cameraY,cameraWidth和cameraHeight。因此,如果用户滚动到右侧,摄像头就会恰当地设置摄像头X,并且表面可以滚动。如果用户放大/缩小渲染器,则会适当缩放每个元素图像。与输入/输出
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可以滚动滚动吗?
我不想使用任何引擎,因为这是一个学校项目。
所以,如果我理解正确,U建议我画在画布上,然后使用Canvas.scale()和Canvas.save()实现缩放功能?如何滚动(我应该这样做,如上所述)?你可以发布一个关于这个类的链接(我得到的是硬件相机)。谢谢 – Jernej 2011-06-03 16:53:40
正确!看起来像你得到它。如上所述,使用'Camera.translate(x,y,z)'方法代替滚动。您需要翻译X轴和Y轴以进行滚动,然后上下翻转Z轴进行缩放。对于缺失的链接抱歉,很难找到!该文档是http://developer.android.com/reference/android/graphics/Camera.html – Sam 2011-06-03 17:09:07
谢谢你,你一直很有帮助..如果我明白correclty你的方法绘制整个级别(这大约是2000x480像素)到画布(480x800像素),并使用相机类来实现滚动和缩放。但不是画出整个级别(2000x500)的每一帧高频? – Jernej 2011-06-03 18:25:20