微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cocos2dx HelloWorld代码分析

刚接触cocos2dx,看了一些教程之后,先稍微总结一下,有点粗浅,多多指教

1.用python脚步创建一个新项目,名为Hello:


2.可见,在projects目录下多了一个Hello的文件夹:


3.打开Hello,再打开里面的proj.win32,就可以看到有一个Hello.sln,这个是VS的工程文件,双击打开
4.如图:


5.先运行一下项目看看,按Ctrl+F5,编译成功之后会显示下图:


6.首先,当我们新建一个Cocos2d-x项目时,就会认创建一个HelloWorldScene场景类,可以理解为上图显示在窗口的画面。那么这个画面是如何显示到窗口的呢?
我们来打开Hello项目里的AppDelegate.cpp文件,我们只看applicationDidFinishLaunching函数:


(1)pDirector->setdisplayStats(true);设置是否显示游戏的帧数等调试信息

(2)pDirector->setAnimationInterval(1.0/60);设置游戏的帧率,在这里是60帧每秒

(3)CCScene* pScene = HelloWorld::scene();创建一个场景,也就是前面提到的场景类

(4)pDirector->runWithScene(pScene);最重要的地方,只有执行了这一步,才能让场景类显示出来


7.然后我们再来看看HelloWorldScene.h的代码


  • menuCloseCallback函数一个回调函数
  • scene函数是不可缺的,等会会在HelloWorldScene.cpp中定义,之前在

    AppDelegate.cpp中创建一个场景时用到:

  • 再来看看CREATE_FUNC(HelloWorld),这是一个函数,它的具体实现代码(替换参数之后)如下:

8.在HelloWorldScene,cpp中scene()的实现:


(1)CCScene* scene=CCScene::create(); 创建一个场景类。大家注意到了吗?这个场景类并不是HelloWorld本身。

(2)HelloWorld* layer = HelloWorld::create(); 创建一个HelloWorld对象,create函数正是用宏CREATE_FUNC(HelloWorld)定义的。如果仔细看HelloWorldScene.h的代码可以发现,HelloWorld继承了cclayer类,要具体了解cclayer和CCScene的关系,可以看下面的基础概念介绍:


可见,一个场景类里面有多个layer,上面的HelloWorld对象就是一个Layer,CCScene就是一个Scene,

(3)scene->addChild(layer); 将layer对象添加到scene对象

(4)return scene; 返回scene对象

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐