`

CEGUI 事件机制

 
阅读更多

 

subscribeEvent :这个方法有几个重载,这里只说这个

virtual Event::Connection subscribeEvent(const String& name, Event::Subscriber subscriber);  // 声明

mRenderer->getDefaultRenderingRoot().subscribeEvent(CEGUI::RenderingSurface::EventRenderQueueStarted,
		CEGUI::Event::Subscriber(&UIManager::overlayHandler, this)); // 使用

 subscribeEvent的作用是为某种类型的事件添加相应的处理方法,相对于那种listener机制,这种方式灵活到方法了。其中第一个参数是事件类型,第二个参数是为处理封装的一个对象。

fireEvent(EventRenderQueueStarted, args, EventNamespace);

 凡是通过fireEvent方法触发过事件的EventRenderQueueStarted,都是事件类型。都可以作为subscribeEvent的第一个参数,所以它的类型为string。

template<typename T>
    SubscriberSlot(bool (T::*function)(const EventArgs&), T* obj) :
       d_functor_impl(new MemberFunctionSlot<T>(function, obj))
    {}

 第二个参数是个模板,这个模板的第一个参数是处理的方法,第二个参数是模板的类型。至此,整个事件触发和处理的过程都有了。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics