Cocos2D-x for XNA类解析(1): CCApplication

   Windows phone上最好的游戏引擎cocos2d-x for XNA发布也有几个月了,作为移植团队我们一直没有时间献上一些教程,现在我们要开始了,打开你的Visual Studio,我们开始学习吧!
   这系列教程我会讲解分析大部分开发者会用到的cocos2d-x for XNA的常用类的功能及用法,带些示例代码,更多的交流请加我们的QQ群,在文章末尾:
 
   大部分框架,基本上都可以分为两部分:
      1.  一个入口主类,它定义了整个应用程序的生命周期,并提供一些全局的资源
      2.  一些绘制到屏幕上的“页面”控件。
   如果大家熟悉 Silverlight for Windows phone ,知道这个入口主类就是 Application ,它订阅并处理 WP 应用程序的生命周期事件,并定义系统资源。
   而这些页面控件就是 Silverlight for Windows phone 应用程序中的 PhoneApplicationPage 。它定义了一个一个的页面外观。
   有了这个基础,我们来看 Cocos2D ,我们发现它们的情形惊人的一致: CCApplication 作为应用程序的入口,负责调控引擎的整个生命周期。而 PhoneApplicationPage 则对应 cocos2d 中的 CCScene ,是的,正如 Wp 应用程序每时每刻会显示一个页面一样, cocos2d 每时每刻会显示一个 CCScene  
 
   其实这也不奇怪,图形应用程序大多是这样的思路,只不过游戏轮询的模式更适应于游戏频繁的逻辑和状态更新,而事件的模式适应于开发用户输入驱动的应用程序。
   所以,在 cocos2d 中, CCApplication 主要做三件事情:
            1.     控制应用程序的生命周期
            2.     提供和管理 一些全局的资源
     3. 处理Touch
     4. 循环绘制界面
 
   应用程序的生命周期有一下几个虚方法:
      ///   <summary>
       ///  可以做一些简单全局变量的初始化工作,在DrawableGameComponent的Initialize方法中调用
       ///   </summary>
      public  override  bool initInstance();
 
        ///   <summary>
       ///   资源加载完成之后发生,在DrawableGameComponent的LoadContent方法末尾中调用
       ///   </summary>
      public  override  bool applicationDidFinishLaunching()
  
      ///   <summary>
      ///  程序进入后台被挂起
     ///   </summary>
      public  override  void applicationDidEnterBackground()
     ///   <summary>
      ///  程序从后台被唤醒 
      ///   </summary>
      public  override  void applicationWillEnterForeground()
 
      这和Silverlight for Windows phone总的应用程序生命周期是类似的,不过注意的是目前的cocos2d-x for XNA中并没有加入挂起和唤醒的方法调用,不过很简单,你可以在Game1类的OnActivated和OnDeactivated中调用它们,下个版本修正这个问题。
 
另一个比较重要的变化是, CCApplication 增加了一些 XNA 绘制相关的全局属性,包括:
     1.    ContentManager :用于管理资源的加载。
    2.     SpriteBatch :用于绘制 2D 的纹理。
    3.     WorldMatrix :当前着色器的世界矩阵。
    4.     ViewMatrix :当前着色器的视图矩阵。
    5.    ProjectionMatrix :当前着色器的投影矩阵。
    6.    basicEffect :用来绘制元素的着色器。
   这些属性主要用于绘制,它们会被 CCSprite CCSpriteBatchNode 以及 CCTextureAtlas 等与绘制相关的类使用。如果你的游戏中需要自己绘制 2D 或者 3D 的元素,也可以直接调用这些属性进行绘制。

     第三个就是处理Touch事件,我们可以看到Update方法中就只有一个处理Touch的方法。实际上处理的是上一帧的Touch事件。
     第四个就是绘制界面,Draw做两件有意义的事情:
        1. 重置摄像机位置和坐标。(其实这里也不是必须每帧都这么做,因为后面我们看到CCNode的时候就会知道,每帧绘制完毕实际上会将这些矩阵变换还原,后续可以做一些优化)。
        2. 进入CCDirector的mainLoop循环。
 
        CCDirector的mainLoop就是整个游戏的绘制过程了,我们以后会慢慢分析。
        现在,你明白CCApplication了吗?欢迎讨论。
 
         转载自: www.0x003f.com
      
     欢迎加入QQ群:190784175(cocos2d-x for XNA开源社区), 由cocos2d-x for XNA开发团队创建

你可能感兴趣的:(Cocos2D-x for XNA类解析(1): CCApplication)