zoukankan      html  css  js  c++  java
  • CEGUI单例对象概览

      CEGUI的核心控制类是System,它负责CEGUI系统与外部的通讯及内CEGUI系统内部各个模块之间的联系。System类派生自CEGUI的单例模板类Singleton,所以在整个系统运行中只有一个系统控制类System,在CEGUI中,所有的管理类都是派生自单例模板类Singleton,他们和System类一样,在整个系统运行期间只有一个实例,并且这些单例对象是通过System类的createSingletons 函数创建的。以下分别说明:

      1.图像集管理类ImagesetManager

        用于创建、访问、销毁图像集对象。在该类里使用了一个map对象d_imagesets,用于以键-值形式String, Imageset*, String::FastLessCompare,即<图像集名字,图像集对像指针>来保存加载入系统的图像集。

          2.字体管理类FontManager

        用于创建、访问、销毁字体对象。在该类里使用了一个map对象d_fonts,用于以键-值形式String, Font*, String::FastLessCompare,即<字体名字,字体对象指针>来保存加载入系统的字体。

      3.窗口工厂管理类WindowFactoryManager

        CEGUI中每一种窗口类型(包括按钮,编辑杠,文本框等等)都有对应类型的窗口创建工厂用于创建对应的窗口实例。而且窗口工厂管理类,就是用于对所有这些窗口工厂进行统一的管理。

      4.窗口管理类WindowManager

        用于管理CEGUI系统运行中所有的窗口实例,包括创建和销毁。看个小代码片段,说明如果创建一个窗口实例:

        new WindowManager();

        CEGUI::WindowManager* d_wm = WindowManager::getSingletonPtr();

        CEGUI::Window* d_root = NULL;

        d_root = d_wm->createWindow("WindowsLook/Static");

        createWindow就是窗口管理类中用于创建窗口的函数,参数“WindowsLook/Static”代表了要创建的窗口类型,在WindowsLook.scheme模式文件里面有一个配置窗口类型的映射:

        <FalagardMapping WindowType="WindowsLook/Static"      TargetType="DefaultWindow" Renderer="Falagard/Static"      LookNFeel="WindowsLook/Static" />。

            传入createWindow的参数就是这个映射定义的WindowType, TargetType是有CEGUI源码里定义的由内部识别的窗口类型为“DefaultWindow”,然后createWindow会获得DefaultWindow的工厂来创建一个DefaultWindow窗口实例,

        WindowManager类型的createWindow有如下代码完成这个动作:

        WindowFactoryManager& wfMgr = WindowFactoryManager::getSingleton();
           WindowFactory* factory = wfMgr.getFactory(type);//type为上面说的“DefaultWindow”

           Window* newWindow = factory->createWindow(finalName);

      5.资源管理模式类SchemeManager

        用于创建、访问、销毁GUI模式对象,GUI模式Scheme类负责加载系统中需要的各种资源。

      6.MouseCursor类

      大概就是管理系统运行定义鼠标显示的外观。

      7.GlobalEventSet类型

       一个全局事件集的类,全局事件集允许你订阅一个事件到所有的类实例。

          8.WidgetLookManager类

      9.WindowRendererManager类

        由于时间仓促,先写到这里,最后两个后续再研究。

  • 相关阅读:
    织梦dedecms模板中调用wordpress文章
    dede标签云(TAG)随机颜色及大小的实现方法
    将dedecms数据转换到wordpress博客程序中的方法分享
    织梦dedecms模板中友情链接标签底层模板样式调整
    织梦dede增加自定义属性四步实现
    dedecms专题分节点自由单独调用的实现方法
    DedeCMS 批量取消审核文档的实现方法
    织梦dedecms 5.1 utf-8版本英文修改方法
    织梦dedecms后台自定义字段里添加style全部都变成st<x>yle的解决教程
    Android 获取第三方软件的包名、入口Activity的类名
  • 原文地址:https://www.cnblogs.com/kundij/p/2427051.html
Copyright © 2011-2022 走看看