本系列主要是我的工作學習歷程,包括日常採坑,遊戲相關的編程、語法、擴展庫等。所以文章會有點流水賬的形式。
最近找了份新的工作,主要是微信小遊戲開發的,由於我擁有 Java、JavaScript、微信小程序開發等基礎,所以目前主要補充的知識點有 typescript、egret、包括 egret 的擴展類庫:egret-eui。
工作第一天:
我選擇從 Egret Engline 2D 文檔入手,瞭解以後要接觸的工作的大概內容。首先是下載並安裝 Egret Launcher 包括 Egret Wing 3,這些按照官網提示就能完成。通過閱讀與下載Hello World的Demo,可以簡單入門 Egret 項目的編寫包括瞭解項目構造等。
簡單過了一遍項目內容後,我從顯式對象和顯式容器這邊開始瞭解項目的基礎知識。
首先我覺得這塊比較類似 Android 開發的形式,首先是搭建容器,再往容器裏面添加對象。基礎層面上組件化思想可以說是非常強烈了。與 JavaScript 不同,這邊對象包括佈局相互間都有一定的關聯性,少了哪個對象可能在編譯階段就會報錯。
核心顯示類
不同的內容對應不同的顯示對象,Egret 中一共封裝了8個顯示相關的核心類,如下表。
類 | 描述 |
---|---|
DisplayObject | 顯示對象基類,所有顯示對象均繼承自此類 |
Bitmap | 位圖,用來顯示圖片 |
Shape | 用來顯示矢量圖,可以使用其中的方法繪製矢量圖形 |
TextField | 文本類 |
BitmapText | 位圖文本類 |
DisplayObjectContainer | 顯示對象容器接口,所有顯示對象容器均實現此接口 |
Sprite | 帶有矢量繪製功能的顯示容器 |
Stage | 舞臺類 |
類的思想與 Java 相似,在自定義類中可以選擇繼承以上8個核心類,在類中編寫自定義方法創建相關佈局、組件包括一些邏輯處理。
值得一提的是在方法內添加對象的方法是 addChild(對象名),大概是新手最常接觸的一個方法了。
常用的繼承容器有 Sprite , Sprite 繼承自 DisplayObjectContainer,同時實現了 Graphics 繪圖功能,可以在上面進行矢量繪圖、遮罩計算、濾鏡與渲染等。
而在基礎的繪圖等之外,官網還介紹了文本、事件機制、網絡包括定時器等機制,這些機制與 JavaScript 用法區別不大,主要是語法上有差異,通過閱讀並在項目中加以多次使用可以快速上手並掌握的。
第二天:
第二天我從官網的Demo開始入門,官網的Demo可以提供免費下載,選擇一些重複性低的,跟着代碼過一遍,基本就能對每個功能都跟熟悉點。這天我主要在觀察代碼,發現代碼形式和 Android 相似度更高,並且閱讀了部分 api 的繼承關係,瞭解一下組成關係。
第三天:
第三天我從 Typescript 文檔, egret-EUI,包括教學示例入手。着重瞭解 typescript 的命名空間,這一塊比較抽象,需要多花點時間仔細閱讀。命名空間比較好玩的點是可以將一個單一文件拆分成多個文件。通過繼承、exports 等將數據處理在不同等級的封閉層內。
往下看了 EUI 庫內的 EXML,這個我覺得類似於把 HTML 和 Android 給糅合起來,同時支持 JSP 模式的一個模式語言。
而 EUI 庫內的皮膚意思是將皮膚的邏輯與樣式分離開來,可以在 json 文件中設定相關主題(包括自定義主題),再在皮膚中使用語句啓用主題。
EUI 庫內的數據集合,主要設置項有數據源、數據模板、數據樣式、列表組件、選項卡和自定義項呈示器。列表作爲繼承數據項的一個新類,列表中多出了選中項的概念,可以設置列表默認選中項,同時列表可以做出多選的操作。
容器有多種形式的展現,從簡單的 Group 到層疊。面板、滾動控制容器等。從 Group 開始,他們都比原生容器 Sprite 多了兩個方法【getElementAt() 和 numElements() 】;層疊容器是多個子項在同個頁面展示,通常配合導航欄選項卡一起使用;面板容器是擁有標題欄和內容,標題欄的位置是可以自由設置的;滾動控制容器就是頁面過長就進行滾動控制展開的一個容器頁面,滾動條開始與停止決定權在滾動控制容器的開發者。