cocos2d-x3.x学习之旅(一)

cocos2d-x3.x学习之旅(一),第1张

概述    cocos2d-x3.x学习之旅(一)    今天下定决心开始研究cocos2d-x游戏引擎,特此决定写博客记录本人学习cocos2d-x过程中的一点一滴,如果一下内容有误,请大家帮忙矫正,请多多关照! 谢谢!      cocos2d-x简介:      Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Coco cocos2d-x3.x学习之旅(一)
今天下定决心开始研究cocos2d-x游戏引擎,特此决定写博客记录本人学习cocos2d-x过程中的一点一滴,如果一下内容有误,请大家帮忙矫正,请多多关照! 谢谢!
cocos2d-x简介:
Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架。手机游戏,可以写在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x项目可以很容易地建立和运行在iOS,AndroID,黑莓BlackBerry等 *** 作系统中。Cocos2d-x还支持windows、Mac和linux等桌面 *** 作系统,因此,开发者编写的源代码很容易在桌面 *** 作系统中编辑和调试。(摘自百度)
cocos2d-x项目中的目录结构:
@R_301_6822@://write.blog.csdn.net/postedit@R_301_6822@://write.blog.csdn.net/postedit
其中Classes文件是存放代码的。
proj.androID、proj.ios_mac、proj.linux、proj.win32、proj.wp8-xaml是各各平台的工程文件。
Resources是存放音频文件,字体,字库,图片等资源。
(实际上每个项目里的文件都是在项目创建时把cocos2d-x-3.2\templates\cpp-template-default里的文件夹拷贝到项目文件夹里)
今天我们就以proj.win32为例, 点击
proj.win32里的解决方案文件。不用怀疑,因为youxi是我创建项目命名的。
好了已经打开vs2013了,先来看解决方案‘游戏’:


libAudio是音效引擎,libchipmunk是物理引擎,libcocos2d是存放cocos2d的源代码的(在编译项目过程中是先编译这三个文件的),youxi就不用多说喽,哈哈!

这是项目中的源代码文件,这些文件都和项目文件夹里的文件相对应的,在开发中我们只关心Classes里面的代码就行。
目录结构介绍完了!下面是AppDelegate.cpp和HelloWorldScene.cpp的中文注释
AppDelegate.cpp:

#include "AppDelegate.h"
#include "HelloWorldScene.h"

USING_NS_CC;//命名空间
//应用程序委托对象"/"采用委托设计模式(游戏启动会调用它)
AppDelegate::AppDelegate() {

}

AppDelegate::~AppDelegate()
{
}
//应用程序启动时调用它
bool AppDelegate::applicationDIDFinishLaunching() {
// 初始化导演
auto director = Director::getInstance();
//视图
auto glvIEw = director->getopenGLVIEw();
if(!glvIEw) {
//初始化视图
glvIEw = GLVIEw::create("My Game");
director->setopenGLVIEw(glvIEw);
}

// 是否显示帧率
director->setdisplayStats(true);

// 设置帧率
director->setAnimationInterval(1.0 / 60);

// 初始化(创建)层(场景),把层添加到场景里
auto scene = HelloWorld::createScene();

// 场景跳转
director->runWithScene(scene);

return true;
}

// 游戏移到后台运行
voID AppDelegate::applicationDIDEnterBackground() {
Director::getInstance()->stopAnimation();

// if you use SimpleAudioEngine,it must be pause
// SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}

// 把游戏从后台移到前台运行
voID AppDelegate::applicationWillEnterForeground() {
Director::getInstance()->startAnimation();

// if you use SimpleAudioEngine,it must resume here
// SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}
HelloWorldScene.cpp:
#include "HelloWorldScene.h"

USING_NS_CC;

Scene* HelloWorld::createScene()
{
// 创建场景对象
auto scene = Scene::create();

// 创建层对象
auto layer = HelloWorld::create();

//把层添加到场景里
scene->addChild(layer);

// return the scene
return scene;
}

// 初始化当前层
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
{
return false;
}
//得到屏幕的大小
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//得到屏幕原点的大小

/////////////////////////////
// 2. add a menu item with "X" image,which is clicked to quit the program
// you may modify it.

// 得到图片菜单
auto closeItem = MenuItemImage::create(
"Closenormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));
//指定菜单位置
closeItem->setposition(Vec2(origin.x + visibleSize.wIDth - closeItem->getContentSize().wIDth/2,
origin.y + closeItem->getContentSize().height/2));

// 菜单项
auto menu = Menu::create(closeItem,NulL);
menu->setposition(Vec2::ZERO);
this->addChild(menu,1);

/////////////////////////////
// 3. add your codes below...

// add a label shows "Hello World"
//标签

auto label = LabelTTF::create("Hello World","Arial",24);

// 指定标签的位置
label->setposition(Vec2(origin.x + visibleSize.wIDth/2,
origin.y + visibleSize.height - label->getContentSize().height));

// add the label as a child to this layer
this->addChild(label,1);

// 创建图片精灵
auto sprite = Sprite::create("HelloWorld.png");

// 设置图片精灵的位置
sprite->setposition(Vec2(visibleSize.wIDth/2 + origin.x,visibleSize.height/2 + origin.y));

//把图片精灵放到层里
this->addChild(sprite,0);

return true;
}

//点击close按钮时调用的回调函数
voID HelloWorld::menuCloseCallback(Ref* pSender)
{
//如果是win8或rt平台就是true
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
MessageBox("You pressed the close button. windows Store Apps do not implement a close button.","Alert");
return;
#endif

Director::getInstance()->end();
//如果是ios平台就是true
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}
哎呀!其实每个源文件里的每一行代码都有英文注释,大家不懂的可以有道一下! 嘻嘻!
(完)谢谢大家捧场! 献丑了! 总结

以上是内存溢出为你收集整理的cocos2d-x3.x学习之旅(一)全部内容,希望文章能够帮你解决cocos2d-x3.x学习之旅(一)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005788.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存