地图编辑器中最重要的性能问题出现在编辑区域显示上。编辑的地图可能超过 AS3 BitmapData 支持的30000X30000,并且需要支持多层、选取、复制、粘贴等功能。所以在显示上肯定需要采取某种手段节约性能。
先介绍一下地图的基本信息:地图是由许多个 Tile 组成的,地图编辑器就是将资源的 Tile 粘贴到地图中,并由编辑器将相应资源显示在相应位置。
以下是我惨痛的试错经历:
- 采用最原始的方式,每个单元格一个 Sprite。 Sprite 的数目与map 数目相同。 Sprite 内部分成多层,包括画边框、显示选取区域、显示单元格类型等,使用Shape实现。
优点:可以超过 BitmapData 的大小限制
缺点:性能非常差,但层100 X 100 就已经很卡了。随着数目的增大,很可能造成程序崩溃。
- 参考之前一个js项目的方式,格子仍然使用 Sprite, 但只生成屏幕能显示的部分。当某个各自移动到屏幕外的时候,则立即移动到屏幕的另一侧,并渲染成新的内容,等待进入屏幕。这种方式我称为 Flow,有点类似传送带的运作方式。
优点:比上一种方式性能有所提高,就算格子数目很大也不会崩溃。每次只需要渲染一行或者一列单元格的内容,进一步节省资源。
缺点:虽然不至于崩溃,性能依然很差。
- 使用 BitmapData 实现,是目前性能最好的实现方式。在一个比屏幕略大的 BitmapData 上操作像素,当滚动条滚动的时候会自动拷贝新的像素到 BitmapData 并移动这块 BitmapData,使得相对位置适中保持在与屏幕同步。
优点:性能无与伦比
缺点:如此一来只能以像素级别操作,而不能使用单元格级别渲染
- 目前使用的方式,将第二步的 Sprite 变成非现实对象,将要显示的内容拷贝到整块地 BitmapData之上。以此来提高性能并支持以格为单位的渲染。
优点:支持格级别渲染,如此渲染的次数实际上比方法3还要少得多
缺点:不能兼顾方法2的值渲染移行或者一列单元格的方式,需要将显示部分全部重新渲染。
目前就先“错”到这里,经过这个小程序的开发,深刻理解到现实对象实际上是稀缺资源,不可以滥用。
分享到:
相关推荐
### Delta3D地图编辑器GUI技术说明 #### 概览 Delta3D编辑器是一款功能强大但易于使用的工具,旨在帮助用户快速高效地为Delta3D游戏引擎构建三维环境。因此,图形用户界面(GUI)的设计必须简洁、灵活且强大。编辑...
地图编辑器允许玩家自行设计地形,包括障碍物的分布、通道的设置以及奖励物品的位置等。这一创新不仅增加了游戏的可玩性,也鼓励了玩家的创新精神。地图编辑通常涉及到以下几个关键技术: 1. **图形界面(GUI)设计...
4. **eDB.fne**、**dp1.fne**、**spec.fne**、**shellEx.fne**:这些文件可能包含了地图编辑器的数据库、预设参数、特殊功能或扩展功能,为用户提供丰富的定制选项。 5. **krnln.fnr**和**iext.fnr**:可能包含了...
在游戏编程中,地图编辑器是一个重要的辅助工具,RMXP内置的地图编辑器就支持了自动元件绘制功能。开发者可以方便地通过编辑器创建和编辑地图,而自动绘制功能会自动完成大部分工作,极大地提高了工作效率。 总结来...
3. **代码编辑器**:准备一个支持C#的开发环境,例如Visual Studio。 #### 代码解读与实现 ##### 建立连接 首先,需要建立`axSuperWorkspace`与SuperMap之间的联系,以便于后续的操作。 ```csharp axSuperMap....
总结来说,"ueditor+php.zip"这个压缩包提供了一个预配置的ueditor富文本编辑器,结合了PHP后端服务,便于快速部署到PHP环境中使用。通过阅读read文档并按照指示操作,用户可以轻松地在自己的Web项目中集成这一强大...
根据描述中的信息,“书名应该是opengl map editor design, 可能比较准确”,这意味着这本书的重点可能是OpenGL地图编辑器的设计和实现。地图编辑器通常是指用于创建游戏世界或关卡的工具。它可能涵盖了以下几个方面...
首先,Tiled 0.7.2是Tiled地图编辑器的一个重要版本,它提供了丰富的地图设计功能。用户可以通过它创建多层的2D地图,包括不同类型的图块、对象层、图像层和注释层,支持自定义的图块集和对象组。此外,Tiled 0.7.2...
本次实习选择了VSCode作为开发环境,它是一款免费开源的现代化代码编辑器,支持多种编程语言和插件扩展,非常适合前端项目的开发。Echarts则被用于数据可视化的实现,它提供了丰富的API和文档,方便开发者快速上手并...
总结来说,"迷宫重力球3D"的开发涵盖了方向重力传感器的集成、地图设计器的实现、3D环境的构建以及OpenGL ES渲染引擎的运用。这些技术相互交织,共同构成了游戏的基石,为玩家提供了丰富且深度的互动体验。对于有志...
在ArcGIS中,空间校正可以通过以下几种方式实现: 1. **几何校正**:通过对特征的几何形状进行微调,使它们更准确地匹配参考地图或其他已知正确位置的数据。 2. **投影变换**:当数据集之间的坐标系统不匹配时,...
“梦幻西游.sublime-project”和“梦幻西游.sublime-workspace”是Sublime Text编辑器的工作区配置文件,可以帮助开发者更好地组织和管理源代码。“说明.txt”可能包含项目的基本介绍、使用说明或注意事项,对于理解...
- **使用MapXtreme for Java 创建的应用概貌**:通过MapXtreme for Java 可以构建复杂的GIS应用,如地图查看器、地图编辑器、空间数据分析工具等。 #### 第2章:入门指南 - **安装**:详细介绍如何在不同操作系统...
在优化方面,游戏开发者可能采用了以下几种策略。首先,为了保证游戏流畅度,可能会采用帧同步技术,限制每秒渲染的游戏帧数,避免过度消耗CPU资源。其次,通过合理的内存管理,减少对象的创建和销毁,降低垃圾回收...
4. **地图编辑**:可能包含地图编辑功能,玩家可以自定义游戏地图,创建独特的战场环境。 5. **剧本编辑**:可能支持对游戏剧本的修改,允许玩家改变游戏剧情走向,或者创建全新的战役模式。 6. **作弊功能**:如...
为了简化复杂的业务逻辑,我们可以引入以下几种设计模式: - **控制器模式**:用于管理游戏页面的逻辑,类似于前端控制器,负责处理用户的输入并调用相应的业务逻辑。 - **事件工厂模式**:用于创建和管理游戏中的...
- **系统设计**:实现几种常见的内部排序算法,如冒泡排序、插入排序、快速排序等。 - **编码实现**:实现上述排序算法。 - **调试分析**:测试不同大小的数据集,比较不同排序算法的性能。 12. **哈希表的设计...
- **样式调整**:通过CSS或主题编辑器改变界面外观。 - **部署**:将所有文件上传到服务器,使应用可供用户访问。 6. **学习资源** 为了掌握FlexViewer,你可以: - 阅读官方文档:Esri提供了详细的开发者指南...
通过 `<Region>` 标签定义显示范围和像素级别,实现了地图的智能加载,确保了资源的有效利用和用户体验的优化。 ##### 3.2 动态数据更新技术 利用 `<NetworkLink>` 和 `<refreshMode>` 标签,KML 可实现实时数据...