class method as Event Handler
I want to register AS class method as an event handler like OnClick ,here is an example in AS: class Dialog { Dialog() { //register OnClick as event handler } void OnClick() {...} UI@ ui; }; Dialog dlg1=Dialog(); in C++ class UI { void* pOnClick_Caller; int OnClick_FuncId; void Click() { ctx->Prepare(OnClick_FuncId); ctx->SetObject(pOnClick_Caller); ctx->Execute(); } }; So in Dialog() { } can I write some code like ui.RegisterCallback(this,Dialog::OnClick)? or write something like i.Register("modulename","Dialog",this,"void Onlick()")? Can anybody please give me an sample code?
Until I implement function pointers in AngelScript you will have to do it by naming the function, e.g.
By using an interface like this, your function gets a little easier to implement. But if you don't like to use the interface, then you can also implement the RegisterEventHandler using the variable parameter type.
Regards,
Andreas
// C++ function, registered as // "void RegisterEventHandler(IEventHandler @, const string ∈)"void RegisterEventHandler(asIScriptObject *obj, const string &name){ // Find the method on the object asIObjectType *type = obj->GetObjectType(); int funcId = type->GetMethodIdByName(name.c_str()); // Store the obj and funcId for later callback ...}
// AngelScript classclass Dialog : IEventHandler{ Dialog() { RegisterEventHandler(this, "OnClick"); } void OnClick() {}}
By using an interface like this, your function gets a little easier to implement. But if you don't like to use the interface, then you can also implement the RegisterEventHandler using the variable parameter type.
Regards,
Andreas
AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement