地圖編輯器幾種實現的總結
地圖編輯器中最重要的效能問題出現在編輯區域顯示上。編輯的地圖可能超過 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的值渲染移行或者一列單元格的方式,需要將顯示部分全部重新渲染。
目前就先“錯”到這裡,經過這個小程式的開發,深刻理解到現實物件實際上是稀缺資源,不可以濫用。
相關文章
- Unity3D實現地圖編輯器的外掛Unity3D地圖
- 遊戲地圖編輯器 (轉)遊戲地圖
- 室內三維地圖編輯器,什麼軟體可以編輯地圖地圖
- 地圖編輯器開發中的心得地圖
- CSDN編輯器的使用總結
- Unix vi編輯器命令總結
- UML類圖幾種關係的總結
- 幾種開源富文字編輯器對比
- 實現固定寬高比盒子的幾種方案的總結
- Linux平臺 Luola 地圖編輯器(轉)Linux地圖
- 一個室內地圖編輯器,製作停車場地圖的平臺地圖
- java實現編輯器(一)Java
- 關於ECharts外掛實現中國地圖效果的總結Echarts地圖
- Tiled地圖編輯器 Tiled Map Editor 的使用(二)動畫效果地圖動畫
- 編輯器之神VIM 總結 基礎部分
- 幾種文字編輯器IDE學習難度曲線IDE
- Vidmore影片轉換器的幾種編輯功能分享給大家
- Android 截圖實現的幾種方式Android
- Quill編輯器實現原理初探UI
- 可以製作地圖的平臺,最好的可以編輯的地圖工具地圖
- Android原生簡易圖文編輯器和展示實現Android
- 帶你認識幾種最流行的Python編輯器/IDEsPythonIDE
- 基於ArcGIS API for Javascript的地圖編輯工具APIJavaScript地圖
- 利用 javascript 實現富文字編輯器JavaScript
- xheditor編輯器上傳功能實現
- monaco-editor 實現SQL編輯器SQL
- 一個專業的視覺化停車場地圖編輯器視覺化地圖
- 遊戲策劃設計中地圖編輯器的使用介紹(轉)遊戲地圖
- iOS使用UITableView實現的富文字編輯器iOSUIView
- php 非同步上傳圖片幾種方法總結PHP非同步
- canvas圖形編輯器Canvas
- SQL總結(四)編輯類SQL
- 帶你認識幾種最流行的Python編輯器/IDEs(附連結)PythonIDE
- 什麼軟體可以編輯地圖?線上做地圖的平臺推薦地圖
- 《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程遊戲地圖
- 自定義室內地圖-商場室內地圖線上編輯工具地圖
- 10分鐘實現Typora(markdown)編輯器
- 手把手實現富文字編輯器