资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

cocos2dx自学记录(4)--写一个自己的界面-创新互联

1.像我这种初学者,都很难发现到底cocos2dx的代码要写去哪里,我也找了很久才发现是在你项目的Classes文件夹中。

10年积累的成都做网站、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有西乡免费网站建设让你可以放心的选择与我们合作。

我的: D:\cocos2d-x-2.2.3\projects\game1\Classes

2.里面有AppDelegate和HelloWorldScene

前者是整个游戏的入口,里面有3个函数,都有注释说明的

applicationDidFinishLaunching() 加载完成后执行的

applicationDidEnterBackground() 程序被搁置时执行的,最小化之类的

applicationWillEnterForeground() 程序被恢复时执行的

后者是一个场景的实现,相当于地图,

我们就是修改这个来写自己的界面

3.在编写代码时候,多多查看API是必不可少的。

官网online的API文档:http://www.cocos2d-x.org/reference/native-cpp/V2.2.3/index.html

4.打开HelloWorldScene.cpp来看看

原有一个label,一个中央图片,一个退出按钮

5.仿照原来的替换出自己的背景

cocos2dx 自学记录(4)-- 写一个自己的界面

我用的是这张,图片的资源放在 D:\cocos2d-x-2.2.3\projects\game1\Resources

随便改个名字,我的是 mainbg.png,记得权限

然后修改代码

CCSprite* pSprite = CCSprite::create("mainbg.png");
CCSize bgsize = pSprite->getContentSize();
pSprite->setScale(visibleSize.height / bgsize.height);
pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

中间那句是我查出来的,可以得到精灵的大小(据说很多东西都要用到sprite精灵这东西)

原来我试了一张自己觉得比较大的图片,发现好像cocos2dx会自己压缩它,但大的它不会平铺下来

所以我取了下它的大小和屏幕的大小,让图片拉伸一下(setScale),适应屏幕

然后ccp是什么呢,专业名词叫 锚点 ,我也是查的,不过感觉就是它的中点,

而origin.x,origin.y目前也没搞懂是什么,但涉及坐标的我都会把它加上。。这里就会把图片居中,然后拉伸开来

另外,图片的名字打错会导致程序不能运行

6.有关坐标系,cocos2dx采用OpenGL,所以左下角是(0,0)

7.编写 开始 - 退出 菜单

我把原来退出部分删除了,然后加入了自己这部分

CCMenuItemFont::setFontSize(30);
CCMenuItemFont *start = CCMenuItemFont::create("Start",this,menu_selector(HelloWorld::menuCallBackStart));
start->setPosition(ccp(50,200));
CCMenuItemFont *exit = CCMenuItemFont::create("Exit",this,menu_selector(HelloWorld::menuCallBackClose));
exit->setPosition(ccp(50,100));
CCMenu *menu = CCMenu::create(start,exit,NULL);
menu->setPosition(CCPointZero);
this->addChild(menu,1);

具体API自己查看,大概就是先创建两个菜单选项,然后每一个显示的是什么(原来的是图片),点击后调用的是哪个函数;然后用一个菜单包含两个选项,最后把菜单加入到layer里面。

ccp里面的坐标,是相对于其父节点的 锚点 的。

而看到addChild的第二个参数,查看API文档发现时 zorder,zorder越大,它所在位置就越上面,也就是有覆盖效果(我猜测),然后我一开始是写 2 的,按下去之后没有反应,改成 1 才行

8.添加对应的函数

void HelloWorld::menuCallBackStart(CCObject* pSender)
{
    //wait for next time
}
void HelloWorld::menuCallBackClose(CCObject* pSender)
{
    exit(0);
}

我之后还把中央的label改成了自己作者了,这个就不贴代码了

9.最后编译运行,效果图

cocos2dx 自学记录(4)-- 写一个自己的界面

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻名称:cocos2dx自学记录(4)--写一个自己的界面-创新互联
链接URL:http://www.cdkjz.cn/article/edosj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220