跳至内容

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 指定的钩子函数。

华夏公益教科书