Learning Cocos2d-x for XNA(2)——深入剖析Hello World

如何部署cocos2d-x for xna的VS模板,可以参考一下Cocos2d-x for WindowsPhone:万丈高楼亦可不需平地起

当我们新建一个Project后,Visual Studio会创建两个工程,一个用做程序,另一个用做程序的内容Content(称内容管道)。

很显然,这就是XNA的基本框架。

第一个工程文件主要是游戏的代码逻辑部分,另一个主要是存放游戏的资源(文字、图像、音频等媒体文件)。

Cocos2d-x创建的初始模版,运行一下,会出现经典的Hello World。

如果初始模版编译不成功,可以参考上面提及的相关文章。

既然cocos2d-x for xna是在xna框架的基础上开发的,那么XNA中窗口程序文件Game.cs在引擎中同样存在。下图很清晰地描述了XNA的框架流程。

即使你不是很了解,对你后面学习引擎的使用,影响也不是很大,当然熟悉更好。注意的是XNA框架可以看作是一个无限循环程序,就是一个图帧动画地不断呈现的过程。

XNA由窗口程序和主程序组成,XNA的窗口程序在Game1.cs文件中,类名为Game1,主程序在Program.cs文件中Program类中。

Program.cs文件中,主要建立Game1类对象并运行方法Run。Run方法将反复调用Update和Draw方法。

using System;

namespace LearningCocos2d_xForXNA
{
#if WINDOWS || XBOX
    static class Program
    {
        ///< summary>
        /// The main entry point for the application.
        ///< /summary>
        static void Main(string[] args)
        {
            using (Game1 game = new Game1())
            {
                game.Run();
            }
        }
    }
#endif
}

实例化Game1,当前类中只有主要的三个方法:构造函数Game1()、

内容管道加载LoadContent()和修改渲染参数Update()。Draw方法让游戏组件Component实现,在构造函数Game1()中实现了。

其中要注意的是其中的AppDelegate类,在文件夹Classes中,引擎希望我们将代码写到这个文件中。AppDelegate类继承CCApplication,而且CCApplication继承DrawableGameComponent,继而继承GameComponent类。GameComponent类为所有XNA Framework游戏组件的基类。

AppDelegate类还是挺重要的,默认下有五个方法。

applicationDidFinishLaunching方法终于看到了Cocos2d-x熟悉的两个角色(CCDirector和CCScene)。

applicationDidFinishLaunching方法中可实现游戏的起始页面。

不难解释,根据上节中成员关系图中,CCDirector和CCScene实现了。

其中LearningCocos2d_xForXNAScene为新建项目的名称,该类默认下在文件HelloWorldScene.cs中。在LearningCocos2d_xForXNAScene类中,该类继承CCLayer类。

其中scene()方法在AppDelegate类中实现了调用,实现CCScene对象,将LearningCocos2d_xForXNAScene(CCLayer)对象addChild到CCScene对象场景中。

在LearningCocos2d_xForXNAScene中init()方法中实现CCLayer层的内容。

HelloWorld最终在CCLayer层中实现。

HelloWorld实现基本流程最后用一张图总结

著作权声明:本文由http://www.cnblogs.com/suguoqiang 原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

posted @ 2013-01-19 10:45 Ghost Soar 阅读(...) 评论(...) 编辑 收藏