Jer*_*nej 1 android zoom scrollable
我正在开发一款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);
}
}
Run Code Online (Sandbox Code Playgroud)
我不想使用任何引擎,因为这是一个学校项目.
实际上你可以稍微简化这种情况.如果您确实在寻找一个简单的透视变形的平面纹理平面,Android Camera类可以帮助您.不要将其与用于拍照的硬件相机混淆.此相机是一个包围矩阵的辅助类,用于对2D对象执行转换.您可以通过Google搜索"快速傅里叶变换"来阅读有关这个非常复杂的渲染主题的更多信息.基本上你会想要创建一个画布并以完全2D的方式绘制你的绘图.然后在绘制到屏幕之前,您应该使用Camera类转换此画布.如果您需要澄清,请告诉我.幕后有很多很酷的数学!
从Android API演示中查看此示例
Android graphics.Camera文档
http://developer.android.com/reference/android/graphics/Camera.html
| 归档时间: |
|
| 查看次数: |
2167 次 |
| 最近记录: |