Cocos2dx游戏开发系列笔记2:一个刚创建的cocos2dx中的demo里都有什么

做~自己de王妃 提交于 2019-11-27 20:28:10

烦人的环境终于ok了,改了改文本,换了换图片资源,还是能在手机里运行。ok,关了Eclipse,去vs中看看吧。

虽然是根老骨头了,但还真没怎么用C++,以前接触过点Java的开发框架,估计大差不差。


在VS2012中打开用python命令新建的LazyGame项目。

--------------------

LazyGame

-Classes

-AppDelegate.cpp

-AppDelegate.h

-HelloWorldScene.cpp

-HelloWorldScene.h

-win32

-main.cpp

-main.h

外部依赖类

-------------------

main.cpp应该是入口类

里面定义了窗口的标题eglView->setViewName("LazyGame");

和窗口的大小eglView->setFrameSize(960, 540);

还有AppDelegate的句柄,这个类应该是Cocos2dx主要的控制类。


AppDelegate.cpp主要控制类

里面有三个方法:

applicationDidFinishLaunching();初始化方法,比如Scene的初始化

applicationDidEnterBackground();游戏临时中断的处理

applicationWillEnterForeground();由中断状态再次进入游戏的处理

相关方法:

CCDirector* pDirector = CCDirector::sharedDirector();初始化导演类

pDirector->setDisplayStats(true);显示FPS

pDirector->setAnimationInterval(1.0 / 60);设置刷新率

CCScene *pScene = HelloWorld::scene();初始化舞台

pDirector->runWithScene(pScene);显示当前舞台


再来看下HelloWorldScene.cpp

有scene添加方法、初始化方法、还有按钮回调事件

我感觉HelloWorld应该是一个层,而非舞台。

scene->addChild(layer);加入到舞台中

初始化init()中:

首先调用父类的init

CCDirector::sharedDirector()->getVisibleSize();可视区域大小

CCDirector::sharedDirector()->getVisibleOrigin();可视区域原点坐标

创建一个图片按钮:参数(常态图,按下图,句柄,回调方法)

CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "CloseNormal.png",
                                        "CloseSelected.png",
                                        this,
                                        menu_selector(HelloWorld::menuCloseCallback));

//然后应该是设置位置了

pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
                                origin.y + pCloseItem->getContentSize().height/2));

看来cocos2dx设置控件时的坐标,是以左下角为原点,并且设置的是item中心点的位置。所以要减去item的宽高。

然后把创建的item加到一个Menu里,

CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);

pMenu->setPosition(CCPointZero);然后设置(0,0)点。
this->addChild(pMenu, 1);最后添加到舞台中。

同样的方法加入一个label,同样是创建,设位置,添加

CCLabelTTF* pLabel = CCLabelTTF::create("LazyGame", "Arial", 24);

同样的,再加入一个精灵CCSprie

CCSprite* pSprite = CCSprite::create("HelloWorld.png");

最后是创建按钮MenuItem时,加入的回调方法

void HelloWorld::menuCloseCallback(CCObject* pSender)
CCDirector::sharedDirector()->end();


一个最最原始的Demo就这些东西。骨头还有很多问题没弄明白,和C++还有框架相关的,没关系,一点点来。



常用的快捷键:

Tab 快速完成

Shift + Alt + Enter 全屏

Ctrl + K,Ctrl+D 格式化代码


 ------------------- 飞船起飞--------------------   

Cocos2dx游戏开发系列笔记10:解刨《战神传说》

Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应

Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的

Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)

Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上

Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》

Cocos2dx游戏开发系列笔记4:怎样新加一个Scene类?

Cocos2dx游戏开发系列笔记3:牛刀小试->忍者飞镖射幽灵的Demo

Cocos2dx游戏开发系列笔记2:一个刚创建的cocos2dx中的demo里都有什么

Cocos2dx游戏开发系列笔记1:一个崭新的开始,cocos2dx2.2+ndkr9+Cygwin

-------------------- 飞船降落-------------------- 


最后,骨头介绍一下陪在身边的哲哲(右边就是低调的哲哲)

哲哲,小名 YIYI ,手工爱好者,文艺范,手艺人,《YiYiの妙舍》创始人,很有自己想法。

 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!