BlitzMax/模組/事件/鉤子函式
此模組提供了一種通用的方式來掛鉤到各種 BlitzMax 命令,併為您的程式碼新增對鉤子的支援。
以下鉤子 ID 目前由 BlitzMax 模組使用
| 鉤子 ID | 描述 | 資料 |
| FlipHook | 一個 Max2D Flip 即將發生 | 空 |
| EmitEventHook | 一個事件已透過呼叫 EmitEvent 發出 | 一個 TEvent 物件 |
要掛鉤到任何這些函式,請使用 AddHook,並指定鉤子 ID 和您的鉤子函式。
要為自己的程式碼提供鉤子支援,請使用 AllocHookId 在程式啟動程式碼中的某個位置生成一個有效的整數鉤子 ID。然後,當您要使程式碼部分“可鉤子化”時,只需呼叫 RunHooks,並使用之前生成的鉤子 ID 和您自己的自定義“資料”物件。
函式 AllocHookId()
描述:分配一個鉤子 ID
返回值:一個整數鉤子 ID
資訊:返回的鉤子 ID 可與 AddHook、RunHooks 和 RemoveHook 一起使用。
函式 AddHook( id,func:Object( id,data:Object,context:Object )
描述:新增一個鉤子函式
返回值:一個鉤子物件,可與 RemoveHook 命令一起使用。
資訊:新增一個鉤子函式,當使用指定的鉤子 id 呼叫 RunHooks 時執行。
示例:
'This function will be automagically called every Flip Function MyHook:Object( id,data:Object,context:Object ) Global count count:+1 If count Mod 10=0 Print "Flips="+count End Function 'Add our hook to the system AddHook FlipHook,MyHook 'Some simple graphics Graphics 640,480,0 While Not KeyHit( KEY_ESCAPE ) Cls DrawText MouseX()+","+MouseY(),0,0 Flip Wend
函式 RunHooks:Object( id,data:Object )
描述:執行鉤子函式
返回值:最後一個鉤子函式生成的資料
資訊:RunHooks 執行為指定的鉤子 id 新增的所有鉤子函式。
第一個鉤子函式使用提供的 data 物件呼叫。此函式返回的物件將作為 data 引數傳遞給下一個鉤子函式,依此類推。因此,鉤子函式通常應在完成後返回 data 引數。
函式 RemoveHook( id,func:Object( id,data:Object,context:Object )
描述:刪除一個鉤子函式
資訊:刪除由 id、func 和 context 指定的鉤子函式。