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:用来绘制元素的着色器。
   这些属性主要用于绘制,它们会被CCSpriteCCSpriteBatchNode以及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开发团队创建

posted on 2012-06-04 14:37  秦春林  阅读(3605)  评论(4编辑  收藏  举报

导航