CEGUI事件机制

来源:互联网 发布:http测试工具 windows 编辑:程序博客网 时间:2024/04/30 11:05

Cegui中的事件机制用的是观察者模式。需要订阅事件的类必须从EventSet继承:

订阅的一个感兴趣的事件调用EventSetsubscribeEvent,比如RenderDisplaySize改变感兴趣,它可以通过以下代码来订阅:

    // subscribe to hear about display mode changes

    d_rendererCon =d_renderer->subscribeEvent(Renderer::EventDisplaySizeChanged,Event::Subscriber(&CEGUI::System::handleDisplaySizeChange,this));

         subscribeEvent的第一个参数为字符串,在Cegui中是通过字符串匹配来来触发相应事件;第二个参数是对触发的回调函数的一个封装。

 

 

一旦订阅好自己感兴趣的事件后,接着就是等着它触发了。

voidDirectX9Renderer::setDisplaySize(constSize& sz)

{

    if (d_display_area.getSize() !=sz)

     {

        d_display_area.setSize(sz);

 

        EventArgs args;

        fireEvent(EventDisplaySizeChanged,args, EventNamespace);

     }

 

}

从上面代码可以看到当DisplaySize改变的时候会生成一个EventArgs对象,然后调用fireEvent函数,EventArgs 是回调参数,用过C#的朋友一定很熟悉它.

最后fireEvent则根据传入的字符串EventDisplaySizeChanged来触发之前注册的回调函数。

完整的类图:


原创粉丝点击