Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android可缩放和滚动的棋盘游戏_Android_Zooming_Scrollable - Fatal编程技术网

android可缩放和滚动的棋盘游戏

android可缩放和滚动的棋盘游戏,android,zooming,scrollable,Android,Zooming,Scrollable,我正在开发一款Android棋盘游戏,我有一个关于创建一个可缩放和可滚动的棋盘的问题。棋盘包含一个静态背景、角色(玩家)和使用平铺绘制的实际“级别” 我的解决方案是有一个元素集合(瓷砖、人物、所有游戏元素-都有x、y坐标和宽度+高度)、一个相机和一个渲染器,根据cameraX、cameraY、cameraWidth和cameraHeight绘制集合。因此,如果用户向右滚动,相机只需适当地设置cameraX,曲面就可以滚动。如果用户放大/缩小,渲染器只需适当缩放每个元素图像 具有可滚动曲面和放大/

我正在开发一款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);
        }
    }
受保护函数绘图(画布c){
Collection elements=Collection.getElements(cameraX、cameraY、cameraWidth、cameraHeight);
if(elements.size()>0){
对于(int i=0;i
  • 这是最好的解决方案吗
  • 它能以其他方式实现吗
  • 使用滚动视图可以实现滚动吗

我不想使用任何引擎,因为这是一个学校项目。

事实上,你可以简化这种情况。如果你确实在寻找一个简单地被透视扭曲的平面纹理,Android
Camera
类可以帮助你。不要将其与用于拍照的硬件照相机混淆。此摄影机是一个围绕矩阵的辅助类,用于对二维对象执行变换。通过谷歌搜索“快速傅立叶变换”,您可以了解更多关于这个非常复杂的渲染主题的信息。基本上,你会想创建一个画布,并在一个完全二维的方式做你的绘图。然后,在绘制到屏幕之前,应该使用Camera类变换此画布。如果你需要澄清,请告诉我。有很多很酷的数学在幕后进行

看看这个来自Android API演示的示例

安卓
图形.摄像头
文档


实际上,您可以稍微简化这种情况。如果你确实在寻找一个简单地被透视扭曲的平面纹理,Android
Camera
类可以帮助你。不要将其与用于拍照的硬件照相机混淆。此摄影机是一个围绕矩阵的辅助类,用于对二维对象执行变换。通过谷歌搜索“快速傅立叶变换”,您可以了解更多关于这个非常复杂的渲染主题的信息。基本上,你会想创建一个画布,并在一个完全二维的方式做你的绘图。然后,在绘制到屏幕之前,应该使用Camera类变换此画布。如果你需要澄清,请告诉我。有很多很酷的数学在幕后进行

看看这个来自Android API演示的示例

安卓
图形.摄像头
文档


如果我理解正确,你建议我绘制画布,然后使用canvas.scale()和canvas.save()实现缩放功能?滚动怎么样(我应该按照上面描述的那样做)?你可以发布一个关于这个类的链接(我得到的只是硬件摄像头)。谢谢你!看来你明白了。使用
Camera.translate(x,y,z)
方法代替上述滚动。您需要围绕X轴和Y轴平移以滚动,并上下平移Z轴以缩放。为丢失的链接道歉,很难找到!文件很好,谢谢你,你帮了我很大的忙。。如果我了解correclty u的方法,还有一件事是将整个级别(大约2000x480 px)绘制到画布(480x800px),然后使用camera类实现滚动和缩放。但是,不是每一帧都要绘制整个级别(2000x500)吗?因此,如果我理解正确,你建议我绘制画布,然后使用canvas.scale()和canvas.save()实现缩放功能?滚动怎么样(我应该按照上面描述的那样做)?你可以发布一个关于这个类的链接(我得到的只是硬件摄像头)。谢谢你!看来你明白了。使用
Camera.translate(x,y,z)
方法代替上述滚动。您需要围绕X轴和Y轴平移以滚动,并上下平移Z轴以缩放。为丢失的链接道歉,很难找到!文件很好,谢谢你,你帮了我很大的忙。。如果我了解correclty u的方法,还有一件事是将整个级别(大约2000x480 px)绘制到画布(480x800px),然后使用camera类实现滚动和缩放。但是,不是每一帧都绘制了整个水平(2000x500)吗?