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