• Cocos2Dx 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开发团队创建
  • 相关阅读:
    2018 北京区域赛H
    LeetCode 第 207 场周赛
    LeetCode 第 209 场周赛
    LeetCode 第 211 场周赛
    PAT 甲级真题题解(121-155)
    PAT 甲级真题题解(63-120)
    PAT 甲级真题题解(1-62)
    Codeforces 1108E2 Array and Segments (Hard version)(差分+思维)
    Codeforces 1108F MST Unification(最小生成树性质)
    Codeforces 1092C Prefixes and Suffixes(思维)
  • 原文地址:https://www.cnblogs.com/hielvis/p/2534672.html
Copyright © 2020-2023  润新知