內容簡介
《Egret——HTML5遊戲開發指南》由淺入深,在講解遊戲開發基礎的同時提供眾多實戰案例供讀者學習。《Egret——HTML5遊戲開發指南》章節內容包含Egret基礎概念及基礎圖形圖像處理方法、網路相關操作、移動設備適配、性能最佳化、文本動畫相關知識、調試技巧、DragonBones骨骼動畫系統和P2物理引擎等。通過《Egret——HTML5遊戲開發指南》,讀者可以了解並掌握HTML5遊戲開發技能,並通過Egret開發複雜又好玩的HTML5遊戲。
內容提要
《Egret——HTML5遊戲開發指南》由淺入深,在講解遊戲開發基礎的同時提供眾多實戰案例供讀者學習。《Egret——HTML5遊戲開發指南》章節內容包含Egret基礎概念及基礎圖形圖像處理方法、網路相關操作、移動設備適配、性能最佳化、文本動畫相關知識、調試技巧、DragonBones骨骼動畫系統和P2物理引擎等。通過《Egret——HTML5遊戲開發指南》,讀者可以了解並掌握HTML5遊戲開發技能,並通過Egret開發複雜又好玩的HTML5遊戲。
《Egret——HTML5遊戲開發指南》適合喜歡遊戲且有志於成為HTML5遊戲開發者的人閱讀,也適合具備其他平台遊戲開發經驗的人以及前端開發工程師了解和掌握HTML5開發技巧,並進入HTML5遊戲開發領域。
目錄
第1章 歡迎來到HTML5的世界
1.1 什麼是HTML5
1.2 HTML5的前世今生
1.3 W3C與WHATWG工作組
1.4 令人稱讚的Canvas與WebGL
1.4.1 Canvas
1.4.2 WebGL
1.5 何為HTML5遊戲
1.5.1 從技術角度出發
1.5.2 從非技術角度出發
1.6 HTML5遊戲的特點與痛點
1.6.1 特點
1.6.2 痛點
1.7 HTML5遊戲的當下與未來
1.7.1 產品研發階段
1.7.2 測試上線運營階段
1.7.3 未來
1.8 小結
第2章 奇妙的前端之旅
2.1 JavaScript的苦與痛
2.2 偉大的ECMAScript標準
2.2.1 ECMAScript標準是什麼
2.2.2 歷史
2.2.3 版本
2.3 JavaScript的代替品:Dart、CoffeeScript、TypeScript
2.3.1 Dart
2.3.2 CoffeeScript
2.3.3 TypeScript
2.4 初出茅廬的WebAssembly
2.4.1 WebAssembly是什麼
2.4.2 asm.js
2.5 HTML5遊戲開發利器——遊戲引擎
2.6 一個神器:Egret Runtime
2.6.1 什麼是Egret Runtime
2.6.2 為什麼要用 Egret Runtime
2.7 小結
第3章 Hello Egret
3.1 Egret 引擎簡介
3.1.1 Egret引擎的特點
3.1.2 Egret引擎的主要功能
3.1.3 Egret引擎的套用案例
3.2 搭建開發環境
3.2.1 Egret引擎版本的選擇
3.2.2 Egret Wing:強大的IDE工具
3.2.3 ResDepot:資源管理工具
3.2.4 Texture Merger:資源打包工具
3.3 Hello World
3.3.1 創建第一個項目
3.3.2 運行項目
3.3.3 修改一下,成為自己的Hello World
3.4 Hello World分析
3.4.1 項目原始碼目錄
3.4.2 項目配置檔案
3.4.3 項目運行庫
3.4.4 項目編譯目錄
3.4.5 項目資源目錄
3.4.6 項目發布目錄
3.5 庫與代碼風格
3.5.1 Egret引擎的代碼風格
3.5.2 核心庫與擴展庫的使用方法
3.5.3 第三方庫的集成方法
3.6 命令行模式詳解
3.6.1 創建項目
3.6.2 編譯項目
3.6.3 運行項目
3.6.4 發布項目
3.6.5 了解更多
3.7 小結
第4章 遊戲的基礎知識
4.1 顯示對象
4.1.1 什麼是顯示對象
4.1.2 坐標系
4.1.3 顯示對象的種類
4.1.4 顯示列表
4.2 顯示對象的架構
4.2.1 容器與非容器
4.2.2 DisplayObject類 與 DisplayObjectContainer類
4.2.3 Sprite與Shape
4.3 Shape矢量圖
4.3.1 繪製矩形
4.3.2 清空繪圖
4.3.3 繪製圓形
4.3.4 繪製直線
4.3.5 繪製曲線
4.3.6 繪製圓弧
4.3.7 多個形狀的繪製
4.4 顯示列表與容器類
4.4.1 關於顯示容器
4.4.2 添加與刪除顯示對象
4.4.3 顯示對象操作的注意點
4.5 遮罩與碰撞檢測
4.5.1 遮罩的使用
4.5.2 非精確碰撞檢測
4.5.3 精確碰撞檢測
4.5.4 包圍盒碰撞
4.6 混合模式
4.6.1 NORMAL模式
4.6.2 ADD模式
4.6.3 ERASE模式
4.7 小結
第5章 事件與用戶互動
5.1 事件訊息機制
5.1.1 事件處理機制的原理
5.1.2 第一個事件處理的例子
5.1.3事件流機制
5.2 事件
5.2.1 事件類
5.2.2 自定義事件
5.3 偵聽器
5.3.1 創建偵聽器
5.3.2 註冊偵聽器與移除偵聽器
5.3.3 偵聽器中的this
5.4 事件的優先權
5.5 自定義事件傳送類
5.5.1 繼承EventDispatcher
5.5.2 複合EventDispatcher
5.5.3 實現IEventDispatcher接口
5.6 觸摸事件
5.6.1 觸摸事件類型
5.6.2 開啟touchEnable
5.7 實踐:同色點點看
5.8 小結
第6章 遊戲資源管理
6.1 RES資源載入模組
6.2 資源配置檔案
6.3 載入資源配置檔案
6.3.1 外部檔案
6.3.2 直接讀取
6.3.3 對比說明
6.4 預載入資源組
6.5 動態創建資源組
6.6 讀取資源檔案
6.7 資源的快取機制
6.8 釋放資源
6.9 內置檔案類型解析器
6.9.1 配置九宮格參數
6.9.2 配置聲音資源
6.9.3 讀取解析二進制檔案
6.10 擴展資源檔案類型解析器
6.11 小結
第7章 點陣圖操作
7.1 創建點陣圖
7.1.1 認識點陣圖
7.1.2 點陣圖格式
7.1.3 點陣圖來源
7.1.4 點陣圖載入
7.1.5 點陣圖顯示
7.2 操作紋理集
7.2.1 從RES中獲取紋理
7.2.2 SpriteSheet紋理集類
7.3 紋理填充方式
7.3.1 點陣圖填充拉伸以填充區域
7.3.2 重複點陣圖以填充區域
7.4 點陣圖的九宮格
7.4.1 緣起
7.4.2 九宮格原理
7.4.3 代碼中使用九宮格
7.4.4 通過ResDepot設定九宮格
7.5 濾鏡
7.5.1 濾鏡可用性及WebGL開關
7.5.2 發光濾鏡
7.5.3 投影濾鏡
7.5.4 顏色矩陣濾鏡
7.5.5 模糊濾鏡
7.5.6 設定濾鏡品質
7.5.7 濾鏡使用最佳化技巧
7.6 實踐:《抓間諜》
7.6.1 遊戲設計稿
7.6.2 準備素材
7.6.3 編寫代碼
7.7 小結
第8章 文本
8.1 普通文本
8.1.1 創建普通文本
8.1.2 設定文本樣式
8.1.3 字型的設定
8.1.4 多樣式混合文本
8.1.5 設定文本超連結
8.2 輸入文本
8.2.1 創建可輸入文本
8.2.2 設定輸入文本樣式
8.3 點陣圖文本
8.3.1 創建點陣圖文本字型
8.3.2 點陣圖文本的使用
8.4 實踐:遊戲登錄和活動公告板
8.5 小結
第9章 動畫與粒子特效
9.1 逐幀動畫
9.1.1 逐幀動畫簡介
9.1.2 動畫素材製作方法
9.1.3 創建一個逐幀動畫
9.1.4 播放和暫停動畫
9.1.5 跳轉動畫
9.1.6 動態切換動畫數據
9.1.7 動畫的快取機制
9.1.8 動畫數據詳解
9.2 緩動動畫
9.2.1 Tween緩動動畫
9.2.2 緩動的基本用法
9.2.3 緩動對象的基本控制參數
9.2.4 緩動對象的緩動變化事件
9.2.5 緩動過程參數設定
9.2.6 緩動對象的其他方法
9.3 粒子特效
9.3.1 粒子系統簡介
9.3.2 粒子系統使用
9.3.3 自定義粒子特效
9.4 小結
第10章 音樂與音效
10.1 聲音類
10.1.1 egret.Sound 類
10.1.2使用聲音類
10.2 音頻控制類
10.2.1 播放
10.2.2 音量
10.2.3 暫停
10.3 聲音事件
10.4 音樂與音效類型設定
10.5 小結
第11章 數據操作
11.1 JSON數據操作
11.1.1 JSON數據格式簡介
11.1.2 為什麼使用JSON數據格式
11.1.3 在Egret中載入JSON數據
11.1.4 在Egret中操作JSON數據
11.2 二進制數據操作
11.2.1 讀取二進制數據對象
11.2.2 寫入位元組流
11.2.3 定位位元組流指針
11.2.4 讀取位元組流
11.2.5 大端模式與小端模式
11.3 實踐:仿《找你妹》遊戲
11.3.1 遊戲策劃案
11.3.2 準備資源
11.3.3 編寫代碼
11.4 小結
第12章 網路通信
12.1 HTTP網路請求
12.1.1 構建簡單的網路請求
12.1.2 POST 與 GET 請求
12.1.3 傳送帶有數據的網路請求
12.1.4 檢測網路請求狀態
12.2 WebSocket通信
12.2.1 創建WebSocket連線
12.2.2 傳送數據
12.2.3 讀取數據
12.2.4 WebSocket的網路狀態
12.2.5 斷開與重連伺服器
12.3 實踐:遊戲中的聊天室
12.4 小結
第13章 計時器與心跳控制器
13.1 Timer
13.1.1 創建計時器
13.1.2 加入計時器事件偵聽
13.1.3 啟動計時器
13.1.4 修改計時器時間間隔
13.1.5 修改計時器
13.2 Ticker
13.2.1 Ticker與Timer的不同
13.2.2 開啟心跳偵聽
13.2.3 移除心跳偵聽
13.2.4 Ticker的最新用法
13.3 setTimeout與clearTimeout
13.4 getTimer
13.5 《抓間諜》和《找你妹》
13.5.1 《抓間諜》
13.5.2 《找你妹》
13.6 小結
第14章 反射機制與依賴注入
14.1 反射機制
14.1.1 什麼是反射機制
14.1.2 getDefinitionByName方法
14.1.3 獲取運行時對象類型
14.1.4 檢查域內定義
14.2 依賴注入
14.2.1 什麼是依賴注入
14.2.2 Injector注入器
14.2.3 注入器的套用場景
14.3 小結
第15章 螢幕適配與環境互動
15.1 4種螢幕適配策略
15.1.1 設定螢幕適配策略
15.1.2 exactFit 模式
15.1.3 noScale 模式
15.1.4 showAll 模式
15.1.5 fixedWidth模式和fixedHeight模式
15.1.6 noBorder模式
15.1.7 在程式內設定縮放模式
15.2 螢幕方向設定
15.2.1 豎屏模式
15.2.2 橫屏模式
15.2.3 反向橫屏模式
15.2.4 自動模式
15.3 環境互動
15.3.1 Egret與網頁JavaScript互動
15.3.2 讀取網頁GET參數
15.4 小結
第16章 調試與性能檢測
16.1 TypeScript斷點調試
16.2 日誌輸出面板
16.2.1 打開日誌顯示開關
16.2.2 輸出日誌
16.2.3 顯示髒矩形和幀頻信息
16.3 Egret Inspector瀏覽器調試工具
16.3.1 安裝Egret Inspector
16.3.2 運行Egret Inspector
16.4 小結
第17章 打包發布到原生平台
17.1 打包原生APP原理
17.1.1 編譯型語言和解釋型語言
17.1.2 瀏覽器核心與JavaScript解釋器
17.2 打包為iOS原生APP
17.2.1 下載Egret iOS Support
17.2.2 將HTML5遊戲打包為iOS原生APP
17.3 打包為Android原生APP
17.3.1 下載Egret Android Support
17.3.2 將HTML5遊戲打包為Android 原生APP
17.4 打包為Runtime版本
17.4.1 打包Egret Runtime版本
17.4.2 測試Runtime版本遊戲
17.4.3 Egret Runtime 中的白名單
17.5 小結
第18章 DragonBones骨骼動畫系統
18.1 DragonBones簡介
18.1.1 DragonBones的由來
18.1.2 DragonBones產品家族
18.1.3 DragonBones產品特點
18.2 2D骨骼動畫的基本概念
18.2.1 骨骼動畫的優勢和原理
18.2.2 DragonBones 2D骨骼動畫中的常用術語
18.3 DragonBones Pro介紹
18.3.1 DragonBones Pro的下載與安裝
18.3.2 編輯界面詳解
18.3.3 基本動畫項目
18.3.4 項目的導入與導出
18.4 DragonBones骨骼動畫開發入門
18.4.1 做好準備工作
18.4.2 學習一個示例
18.5 DragonBones骨骼動畫數據格式詳解
18.5.1 DragonBones 4.0 格式說明
18.5.2 Armature 數據格式
18.5.3 Bone 數據格式
18.5.4 Slot 數據格式
18.5.5 Skin 數據格式
18.5.6 Animation數據格式
18.6 DragonBones骨骼動畫事件系統詳解
18.7 DragonBones常用高級功能
18.7.1 動態換裝
18.7.2 程式控制骨骼運動
18.7.3 改變動畫速度
18.7.4 動畫復用
18.7.5 動畫遮罩與混合
18.8 DragonBones極速模式
18.8.1 極速模式簡介
18.8.2 快速使用極速模式
18.8.3 極速模式詳解
18.8.4 深入使用數據快取
18.9 小結
第19章 P2物理引擎
19.1 P2物理引擎簡介
19.1.1 什麼是P2物理引擎
19.1.2 創建一個P2物理項目
19.1.3 用p2DebugDraw實現模擬視圖
19.2 P2中的形狀
19.2.1 形狀
19.2.2 形狀屬性
19.2.3 形狀貼圖
19.3 剛體屬性
19.3.1 速度相關
19.3.2 角度相關
19.3.3 對象相關
19.3.4 其他屬性
19.4 剛體操作
19.4.1 addBody和removeBody
19.4.2 addShape和removeShape
19.4.3 adjustCenterOfMass
19.4.4 applyForce
19.4.5 applyImpulse
19.4.6 sleep和wakeup
19.4.7 emit、on、off、has
19.4.8 fromPolygon
19.4.9 hitTest
19.4.10 getAABB
19.4.11 getArea
19.4.12 setDensity
19.4.13 overlaps
19.4.14 toWorldFrame和toLocalFrame
19.4.15 rayCast
19.4.16 RayCastResult類
19.4.17 Raycast套用實例
19.5 碰撞處理
19.5.1 認識碰撞
19.5.2 碰撞事件
19.5.3 碰撞信息Equation
19.6 關節
19.6.1 DistanceConstraint
19.6.2 GearConstraint
19.6.3 LockConstraint
19.6.4 PrismaticConstraint
19.6.5 RevoluteConstraint
19.7 彈簧
19.7.1 LinearSpring
19.7.2 RotationalSpring
19.8 小結