卡卡游戏引擎之MVC模式下的事件处理
- 前言
在前一篇文章 卡卡游戏引擎快速入门中提到了卡卡游戏引擎采用mvc的开发模式,这里相信介绍一下引擎在mvc模式下是如何做到低耦合的事件处理的。
- 在卡卡编辑器中选择一个节点,然后在左侧工具栏中切换到“事件”导航界面
- 在此可以看到引擎自带的事件列表(onclick,ondown,onup,onmove,onshow,onhide,onenter,onexit等)
- 选择你想要监听的事件(如onclick),在onclick一行后面点击鼠标,然后出现一个事件处理的对话框,切换到对象操作页,输入你要调用的脚本名称,如showMessage
- 使用集成开发工具(vs2010或者xcode)打开项目,新建一个继承自KKController的类,如MyController
class MyController : public KKControler{ protected: virtual void onInitEventHandlers(); virtual void onLoadScene(KKScene* scene); public: void showMessage(KKNode* pSender,KKEventArgs* args); };
- 添加事件处理函数
void MyController::showMessage(KKNode* pSender,KKEventArgs* args){ KKLOG("your touch %s at %f,%f\n",pSender->getName().c_str(),args->getTouch()->getPoint().x,args->getTouch()->getPoint().y); }
- 注册函数到事件
void MyController::onInitEventHandlers(){ KKREGISTER_EVENTHANDLER(showMessage); }
- 注册控制器到场景
void AppDelegate::onInitControllers(){ KKREGISTER_CONTROLLER(MyController,"myscenename"); };
- 编译项目后运行,点击精灵查看控制台输出