Cocos2dx学习笔记(三)背景、文字

前端之家收集整理的这篇文章主要介绍了Cocos2dx学习笔记(三)背景、文字前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、前一篇文章最后,运行程序后窗口内一片黑,没有任何内容。是因为场景内没有添加任何东西,现在就来逐一添加相应的内容


2、首先,来添加背景图片文字,使用两个类:CCSprite和CCLabelTTF

(1)代码如下:

#include"MyHelloWorldScene.h"
USING_NS_CC;
bool MyHelloWorldScene::init()
{
bRct= false ;
do
{
CC_BREAK_IF(!CCScene::init());
//获取窗口尺寸
CCSizevisibleSize=CCDirector::sharedDirector()->getVisibleSize();
CCPointorigin=CCDirector::sharedDirector()->getVisibleOrigin();
//背景
CCSprite*pSprite=CCSprite::create( "HelloWorld.png" );
pSprite->setPosition(ccp(visibleSize.width/2+origin.x,visibleSize.height/2+origin.y));
this ->addChild(pSprite,0);
CCLabelTTF*pLabel=CCLabelTTF::create( "HelloWorld" , "Arial" pLabel->setPosition(ccp(origin.x+visibleSize.width/2,
origin.y+visibleSize.height-pLabel->getContentSize().height));
->addChild(pLabel,1);
true ;
} while (0);
return bRct;
}

(2)坐标系:上述代码中涉及到坐标的问题,主要是setPosition这个函数的参数如何确定的问题。

(3)一般来说,坐标原点在左上角,往右是x轴,往下是y轴;但是在Cocos2d中,坐标原点在左下角,同样是x轴向右,y轴向下。



(4)实际上,坐标系除了x、y两个方向,还有一个z方向,这样构成一个立体的空间:


笛卡尔坐标系


(4)setPosition函数,设置的是精灵的位置,这个位置是二维的,也就是一个由x、y构成的平面内的位置,那么z方向体现在哪儿呢?体现在另一个函数addChild中,这个函数有一个int型的参数zOrder,就是我们通常说的z序,也就是精灵(或是别的内容)在z轴方向上的位置。可是尝试将文字的z序设置的比背景的小,这时文字就在背景后面了,当然显示的时候就看不见了。


(5)关于CCDirector::sharedDirector()这句将会反复的使用,它是导演,一切场景由它来控制。当然此处,是通过它获得显示尺寸;


(6)我们设置背景的时候,是刚好充满整个屏幕的,那么如何确定setPosition的参数呢?许多人的第一反应也许是(0,0),当然此处显然不是如此;这里的坐标实际上应该是精灵中心(对角线交点)的坐标(240,160)。



(7)关于这句CCDirector::sharedDirector()->getVisibleOrigin();貌似获取到的就是坐标原点(0,0),好像没有什么意义,实际上涉及到另外一些更复杂的坐标知识,你可以想象一个游戏的地图不可能只是窗口显示的那么点大,此时的坐标该如何描述位置呢?在此先略过不提。


(8)根据以上内容,尝试将文字“HelloWorld”移动到下侧:





3、本文总结

(1)继上文详细介绍init中的背景和文字,即往空的场景中添加内容

(2)添加内容,用到一个函数addChild,通过该函数将创建好的对象添加到场景中,这样场景中就有内容了;

(3)但是,此时场景中的内容是静态的,程序与用户是无交互的。

原文链接:https://www.f2er.com/cocos2dx/346032.html

猜你在找的Cocos2d-x相关文章