跳至內容

BlitzMax/模組/事件/鉤子函式

來自華夏公益教科書

此模組提供了一種通用的方式來掛鉤到各種 BlitzMax 命令,併為您的程式碼新增對鉤子的支援。

以下鉤子 ID 目前由 BlitzMax 模組使用

鉤子 ID 描述 資料
FlipHook 一個 Max2D Flip 即將發生
EmitEventHook 一個事件已透過呼叫 EmitEvent 發出 一個 TEvent 物件

要掛鉤到任何這些函式,請使用 AddHook,並指定鉤子 ID 和您的鉤子函式。

要為自己的程式碼提供鉤子支援,請使用 AllocHookId 在程式啟動程式碼中的某個位置生成一個有效的整數鉤子 ID。然後,當您要使程式碼部分“可鉤子化”時,只需呼叫 RunHooks,並使用之前生成的鉤子 ID 和您自己的自定義“資料”物件。

AllocHookId

[編輯 | 編輯原始碼]

函式 AllocHookId()

描述:分配一個鉤子 ID

返回值:一個整數鉤子 ID

資訊:返回的鉤子 ID 可與 AddHookRunHooksRemoveHook 一起使用。

函式 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

[編輯 | 編輯原始碼]

函式 RemoveHook( id,func:Object( id,data:Object,context:Object )

描述:刪除一個鉤子函式

資訊:刪除由 idfunccontext 指定的鉤子函式。

華夏公益教科書