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

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


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

(1)代码如下:

#include "MyHelloWorldScene.h"
USING_NS_CC;
 
bool  MyHelloWorldScene::init()
{
     bool  bRct =  false ;
     do 
     {
         CC_BREAK_IF( !CCScene::init() );
 
         // 获取窗口尺寸
         CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
         CCPoint origin = 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( "Hello World" "Arial" , 24);
         pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
             origin.y + visibleSize.height - pLabel->getContentSize().height));
         this ->addChild(pLabel, 1);
 
         bRct =  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)但是,此时场景中的内容是静态的,程序与用户是无交互的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值