摘要:異步函數(shù)對象接口,包含和兩個成員方法。哈希計數(shù)在整個的源碼中都沒有找到和方法的調(diào)用,這兩個方法的具體作用是在原生中實現(xiàn)類式繼承和私有屬性一類的功能。
文件結(jié)構(gòu)
utils/HashObject.ts文件:
首先解釋一下文件結(jié)構(gòu)圖
__extends方法 通過原型對象模擬類式繼承,用在一些javascript文件中使用(typescript編譯后也生成一個這樣的方法實現(xiàn)類式繼承)。
_define方法 定義精確地添加和修改對象的屬性值,其實質(zhì)是對
Object.defineProperty的一個簡單的封裝,具體參考Object.defineProperty()-MDN
IHashObject 全局哈希類接口
HashObject 全局哈希類,所有的類繼承這個類。
AsyncCallback 異步函數(shù)對象接口,包含onSuccess()和onFail()兩個成員方法。
$hashCount 哈希計數(shù)
在整個erget的源碼中都沒有找到__extends()和_define()方法的調(diào)用,這兩個方法的具體作用是在原生javascript中實現(xiàn)類式繼承和私有屬性一類的功能。博主撰寫本文時erget源碼幾乎都是使用了typescript來編寫,所以這兩個方法在源碼的分析中暫時沒有作用。
IHashObject接口export interface IHashObject { hashCode:number; } export let $hashCount:number = 1; export class HashObject implements IHashObject{ public constructor() { this.$hashCode = $hashCount++; } $hashCode:number; public get hashCode():number { return this.$hashCode; } }
這里哈希類的功能分離成了IHashObject這個抽象接口和HashObject這個具體的類,它的作用是為了支持原生的javascript也支持哈希功能。這樣做的好處是,我們可以在typescript的聲明文件中聲明某個javascript變量實現(xiàn)了IHashObject接口,方便javascript和typescript混合編寫程序,具體參考聲明文件-Typescript中文網(wǎng)。
HashObject類export let $hashCount:number = 1; //...... export class HashObject implements IHashObject{ public constructor() { this.$hashCode = $hashCount++; } public get hashCode():number { return this.$hashCode; } }
這里的作用機理非常的簡單,首先是一個$hashCount這個初始值為1的變量儲存哈希類的數(shù)量,HashObject的構(gòu)造函數(shù)(constructor())將當前對象的$hashCode屬性賦值為$hashCount,并使$hashCount自增.因為程序中所有的類都繼承HashObject這個基類并且調(diào)用它的構(gòu)造函數(shù),所有程序中任何一個對象都有唯一的成員屬性$hashCode。這個$hashCode的作用類似于身份證號碼一樣的唯一標識,在程序的各個模塊中都有很大的作用。比如在全局事件系統(tǒng)中,我們不停地創(chuàng)建和銷毀事件對象(這些對象有很多是相同的),這時候就需要一個唯一的id標識來區(qū)分這些事件對象。
AsyncCallback接口export interface AsyncCallback { onSuccess: (data:any) => any; onFail: (error:number,data:any) => any; }
異步事件回調(diào)對象,包含成功回調(diào)和失敗回調(diào)兩個成員方法,javascript程序的特點就是大量地使用異步任務,一般異步任務需要一個包含執(zhí)行成功和執(zhí)行失敗這兩個回調(diào)函數(shù)的對象,在任務執(zhí)行完畢后去調(diào)用對應的函數(shù)(onSuccess()或者onFail()),AsyncCallback接口為全局的這一類對象定義一個標準,使得整個程序的架構(gòu)更清晰和統(tǒng)一。
上一篇:erget源碼分析(1):入口文件分析
下一篇:erget源碼分析(3):生命周期
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/92764.html
摘要:是一個靜態(tài)類,調(diào)用方法來初始化各項支持信息。小結(jié)通過和這兩個靜態(tài)類初始化了項目運行的環(huán)境參數(shù),然后創(chuàng)建了屏幕適配器根據(jù)不同的適配策略調(diào)整。下一篇源碼分析全局哈希基類和全局異步函數(shù)對象接口 egret的github地址是https://github.com/egret-labs...,大家自己git clone到本地。 一.路口html文件 用ergetWing新建一個工程,打開根目錄下...
摘要:概述下面我們來分析一下中的生命周期。定義了監(jiān)聽生命周期的類,這個三個成員方法分別執(zhí)行暫停繼續(xù)和刷新。方法作為橋梁,接收到具體的類型的函數(shù),創(chuàng)建的一個實例作為參數(shù)調(diào)用它。函數(shù)做了兩件事情暫停應用程序,暫停背景音樂和音效的播放。 概述 下面我們來分析一下erget中的生命周期。 src/egret/player/SystemTicker.ts: export namespace li...
閱讀 1302·2023-04-25 17:28
閱讀 4114·2021-10-14 09:43
閱讀 4295·2021-10-09 10:02
閱讀 2080·2019-08-30 14:04
閱讀 3267·2019-08-30 13:09
閱讀 3395·2019-08-30 12:53
閱讀 3051·2019-08-29 17:11
閱讀 1942·2019-08-29 16:58