Cocos2d-x 菜鸟进阶篇(四)Label 试用浅析

好久没发表博客了,今天深刻的意识到,再不写点什么,我就老了~~

今后打算博客持续性更新,多写点东西,一方面多和大家沟通分享,领一方面可以加深自己对该知识点的应用和理解。

这次从CCLabel** 说起吧。


1 CCLabelProtocol是文本标签的父类,CCLabelProtocol有三个直接子类,都是cocos2d-x中用来创建文本标签的,下面是类结构图

 

CCLabelTTF不仅是CCLabelProtocol的子类,其实也是CCSprite的子类,CCLabelTTF是用来渲染文本标签的,可以指定字体,每次设置字符串内容时,都需要重新创建纹理和渲染,性能不好,所以通常情况下使用CCLabelAtlas或者CCLabelBMFont代替。

 

CCLabelAtlas不仅是CCLabelProtocol的子类,其实也是CCAtlasNode的子类,CCAtlasNode封装了一个CCTextureAtlas的变量,CCTextureAtlas初始化图片文件的时候会把图片加载到缓存(CCTextureCache)中。CCLabelAtlas的绘制效率高,但是限制性太多,没有CCLabelBMFont灵活。

 

CCLabelBMFont不仅是CCLabelProtocol的子类,其实也是CCSpriteBatchNode的子类,创建CCLabelBMFont对象需要一个字符串和一个fnt格式的文件(字库)


下面是对对三种CCLabel的试用代码示例:

bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {
        //
        // super init first
        //

        CC_BREAK_IF(! CCLayer::init());

		m_time = 0;

		CCLabelTTF* Label1 = CCLabelTTF::create("Chinese human","Marker Felt",30);//第一个参数是要显示的文字,第二个是字体,											//第三个是文字大小
		Label1->setPosition(ccp(200,300));
		this->addChild(Label1);
                //第一个参数是显示的文字,第二个是文字图片,第三个是图片里每个文字的宽度,四是高度,五是图片里第一个字符
		CCLabelAtlas* label2 = CCLabelAtlas::create("5121314","tuffy_bold_italic-charmap.png",48,64,' ');
		label2->setPosition(ccp(70,200));
		this->addChild(label2,1,1);//设置tag为1,方便在 step 里引用
		label2->setColor(ccRED);//设置字体颜色为红色

		CCActionInterval* act1 = CCFadeOut::create(0.2f);
		CCActionInterval* act2 = act1->reverse();
		CCSequence* seq = CCSequence::create(act1,act2,NULL);
		CCAction* repeat = CCRepeatForever::create(seq);
		label2->runAction( repeat );

		//第一个参数是显示的文字,第二个参数是字体文件
		CCLabelBMFont* label3 = CCLabelBMFont::create("itisgood","bitmapFontTest.fnt");
		label3->setPosition(ccp(70,100));
		this->addChild(label3,1,2);

		CCSprite* BChar = (CCSprite*) label3->getChildByTag(0);//取出"itisgood"中的‘i’字符,可对它进行操作
		CCSprite* FChar = (CCSprite*) label3->getChildByTag(2);
void HelloWorld::step(float dt)
{
	m_time += dt;//定时器实时更新计数
	char time_str[12] = {0};
	sprintf(time_str,"%2.2f",m_time);
	CCLabelAtlas* label2 = (CCLabelAtlas*)this->getChildByTag(1);
	label2->setString(time_str);

}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答你关于 cocos2d-x 中 scrollView 的问题。 scrollView 是 cocos2d-x 中常用的 UI 控件之一,可以用来显示大量的内容,并支持滑动、缩放等功能。在 scrollView 中,可以添加多个子控件,比如 label、sprite 等,也可以添加自定义的控件。 在使用 scrollView 时,需要先创建一个 ScrollView 对象,然后设置它的属性,比如大小、位置、滑动方向等。接着,再往 scrollView 中添加子控件,最后将 scrollView 添加到场景中即可。 下面是一个简单的示例代码,演示如何创建一个垂直方向的 scrollView: ``` // 创建 scrollView 对象 auto scrollView = ScrollView::create(); scrollView->setContentSize(Size(200, 300)); scrollView->setDirection(ScrollView::Direction::VERTICAL); scrollView->setInnerContainerSize(Size(200, 800)); scrollView->setPosition(Vec2(100, 100)); // 往 scrollView 中添加子控件 for (int i = 0; i < 10; i++) { auto label = Label::createWithSystemFont("Label " + std::to_string(i), "Arial", 24); label->setPosition(Vec2(100, 700 - i * 70)); scrollView->addChild(label); } // 将 scrollView 添加到场景中 this->addChild(scrollView); ``` 在上面的代码中,我们首先创建了一个 scrollView 对象,设置了它的大小、位置和滑动方向等属性。然后,使用循环往 scrollView 中添加了 10 个 label,最后将 scrollView 添加到场景中。 通过以上代码,你可以学会如何使用 cocos2d-x 中的 scrollView 控件。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值