cocos2d-x C++ 工程初探
经过较为繁琐的环境搭建后,我们终于运行出了一个helloworld窗口,可以正式上手cocos了
现在我们就从改代码开始玩起
窗口
我们之前讲到AppDelegate类是程序的入口,所以和窗口有关的设置也在这个类里,打开我们的AppDelegate.cpp,从
AppDelegate::applicationDidFinishLaunching这个成员函数看起
函数中有几行代码涉及到游戏的一些设置
这里面有几个基础的可选项:
glview = GLViewImpl::createWithRect( "Test", cocos2d::Rect( 0, 0, designResolutionSize.width, designResolutionSize.height ) );//设置窗口的尺寸 director->setDisplayStats(true);//显示FPS director->setAnimationInterval(1.0f / 60);//设置每帧的间隔 glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);//设置游戏的分辨率
如果把
setDisplayStats的参数改成false,可以发现helloworld中左下角的FPS和Drawcall信息消失了,你也可以自己动手试试其他的参数
窗口大小
往上翻应该不难找到这几行代码
cocos有一个叫做Size的类,这个尺寸的width和height两个成员是我们经常需要使用的,在设置精灵的尺寸,坐标的时候会经常使用到
Copystatic cocos2d::Size designResolutionSize = cocos2d::Size(480, 320); static cocos2d::Size smallResolutionSize = cocos2d::Size(480, 320); static cocos2d::Size mediumResolutionSize = cocos2d::Size(1024, 768); static cocos2d::Size largeResolutionSize = cocos2d::Size(2048, 1536);
这是cocos给我们提供的常用的窗口尺寸,我们可以发现,现在使用的是
designResolutionSize这个尺寸,
480,320是比较小的,可以把窗口的尺寸设置成
mediumResolutionSize,它的size是
(1024, 768)
将下面这个
designResolutionSize参数改成
mediumResolutionSize即可:
运行:
画面分辨率
现在虽然我们窗口的尺寸设置成了
1024*768,但是实际上游戏窗口里的分辨率还是
480*320个像素
打开项目目录的Resources文件夹我们可以看到
HelloWorld.png这个图片的分辨率是
195*270
你可以试试把我们换上去的
mediumResolutionSize再换成
largeResolutionSize,这个图标在窗口里还是
480*320那么大的
精灵
精灵(Sprite)是 cocos里的一个概念,我们helloworld界面的cocos的logo就是一个精灵,现在我们尝试把他换成别的图片,选一张图片放到项目目录的Resources文件夹内
控制这个精灵的代码在
HelloWorldScene.cpp内,打开找到这段代码:
把
HelloWorld.png修改成你放入Resources内的图片名即可
运行:
坐标系统
要了解cocos的坐标系统,首先要介绍一下Vec2类,有接触过图形库或者游戏引擎的同学对这种命名应该都不陌生,这个类代表的是二维向量,有x和y这两个成员,我们在设置游戏物体的坐标的时候会使用到
同样在HelloWorldScene.cpp中,在创建sprite精灵的地方有这么几行代码,就是我们刚才换图片的那里
// position the sprite on the center of the screen sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
这行代码就是使用setPosition设置初始化好的精灵(你的图片)的坐标,有意思的来了,坐标中出现了两个对象,一个是visibleSize和origin,visibleSize这个对象储存了游戏世界的尺寸,也就是我们能够看到的窗口的尺寸,设置游戏的分辨率可以影响这个值,origin指的是窗口左下角的点在游戏世界中的位置
在设置坐标的代码下加入这样一行代码输出一些信息(log函数可以当作c/c++的printf使用)
log("visibleSize.width=%f, visibleSize.height=%f, origin.x=%f, origin.y=%f", visibleSize.width, visibleSize.height, origin.x, origin.y);
运行,查看输出窗口
可以看到visibleSize和origin的值
再回看设置坐标的代码
// position the sprite on the center of the screen sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
实际上意思很简单,就是set到了窗口正中间的位置,我们把坐标改成
Vec2(visibleSize.width/4 + origin.x, visibleSize.height/2 + origin.y)
向左移动了1/4窗口宽度的距离
最后一句
this->addChile(sprite, 0);
是将这个精灵加入到当前图层中,参数0代表最底层,如果不加这行代码,sprite不会成为游戏世界中的一员,编译出来之后就不会显示
- 编译cocos2d c++工程报错 build-binary.mk:589: obj/local/armeabi/libcocos2dcpp.so] Error 1 cpp自动导入Android.
- cocos2d-x C++ 原始工程引擎运行机制解析
- cocos2d-x C++ 原始工程引擎运行机制解析
- cocos2d-x 的Eclipse工程中如何加入到c++源码文件夹
- Cocos2d-x项目移植到WP8系列之六:C#工程使用C++的DLL
- cocos2d-x3.0 为c++工程添加lua脚本支持
- [cocos2d-x 学习] 初探 HelloWorld 工程代码
- eclipse + cocos2d-x 创建android工程(c++开发环境)
- cocos2d-x 2.2 用python脚本创建工程 的bat处理
- Win32下搭建Cocos2d-x开发环境(1):新建工程
- quick-cocos2d-x 2.2.3 rc版本中 crypto.md5file() 的C++实现在ANDROID上有BUG
- ubuntu18 eclipse for c/c++ 安装及工程创建
- cocos2d小型工程的代码组织结构
- cocos2d-x项目调用当前函数中c++方法替代objc selector
- cocos2d-x 从C++调Java
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- visual studio 12/13基础c++工程建立使用
- linux eclipse c++ 导入一个含有makefile的工程
- 【木头Cocos2d-x 026】Lua篇(第01章):让Lua和C++牵手
- C++初探--准备编译工具