事件觸發(fā)類型
event._trigger的值與對(duì)應(yīng)觸發(fā)類型和其運(yùn)行環(huán)境
| 觸發(fā)類型 | 值 | 運(yùn)行環(huán)境 |
|---|---|---|
| 確定鍵 | 0 | $gameMap._interpreter |
| 玩家接觸 | 1 | $gameMap._interpreter |
| 事件接觸 | 2 | $gameMap._interpreter |
| 自動(dòng)執(zhí)行 | 3 | $gameMap._interpreter |
| 并行處理 | 4 | Event._interpreter |
翻譯器內(nèi)腳本上下文
腳本中的this指向翻譯器
通過this._eventId可以獲取所屬事件 ID
公共事件會(huì)作為子事件隊(duì)列繼承父事件的_eventId
通過$gameMap.event(eventId)可以獲取到觸發(fā)的事件
自動(dòng)執(zhí)行和并行處理
并行事件是由Game_Event對(duì)象自身的_interpreter中執(zhí)行的
而其他事件是由于當(dāng)前的地圖對(duì)象Game_Map中的_interpreter執(zhí)行
在同一update()生命周期中, 只有一個(gè)需要等待的事件會(huì)在Game_Map中執(zhí)行, 包括公共事件
在這個(gè)事件其后的所有事件會(huì)因?yàn)榻贿€控制權(quán)給update而被跳過
而同一update()生命周期中, 多個(gè)需要等待的事件會(huì)在Game_Event中分別執(zhí)行
翻譯器等待
翻譯器在執(zhí)行需要等待的事件后會(huì)進(jìn)入等待模式
在等待模式下, 會(huì)跳過翻譯器在本次update()中的執(zhí)行, 直到滿足某種條件才會(huì)繼續(xù)進(jìn)行
-
_waitCount計(jì)時(shí)器不為空 -
_waitMode等待模式不為''
當(dāng)執(zhí)行定時(shí)-等待事件時(shí), 會(huì)設(shè)置一個(gè)等待倒計(jì)時(shí)_waitCount
當(dāng)執(zhí)行一些需要等待的事件, 比如移動(dòng)-設(shè)置移動(dòng)路線...時(shí), 會(huì)設(shè)置_waitMode
每次 update 會(huì)執(zhí)行_waitMode對(duì)應(yīng)的檢查來判斷事件是否需要繼續(xù)等待
事件數(shù)據(jù)加載
數(shù)據(jù)初始化: Game_Map.prototype.setupEvents
從$dataMap.events獲取地圖事件信息, 創(chuàng)建對(duì)應(yīng)的Game_Event對(duì)象記錄到_events中
輸出: Game_Map.prototype.events
暴露_events給外部調(diào)用
事件圖像加載
加載到容器: Spriteset_Map.prototype.createCharacters
由Scene_Map.prototype.onMapLoaded回調(diào)函數(shù)喚起
會(huì)對(duì)Game_Map.prototype.events()中每一個(gè)Game_Event創(chuàng)建一個(gè)Sprite_Character
新的Sprite_Character會(huì)放入_tilemap容器中在周期中被渲染