coco2d-x 2.1.0 开发小技巧(1)
开发技巧小全集
全部经过自己的验证,绝无胡乱粘贴之举。
当前的环境!!mac+xcode7.1+ios模拟器
技巧是需要在模仿之中不断提升的。
直觉告诉我,学习这个没有错!!
1.添加闪烁的文字
可以实现那种一闪一闪的欢迎欢迎字体效果
关键代码如下:
1 //将该代码放入相应的布景当中 2 3 //.......... 4 // 创建一个标题 5 CCLabelTTF* pLabel = CCLabelTTF::create("HelloWorld", "Thonburi", 34); 6 // 得到尺寸 7 CCSize size = CCDirector::sharedDirector()->getWinSize(); 8 // 安排位置 9 pLabel->setPosition( ccp(size.width / 2, size.height - 20) ); 10 //闪烁的文字 11 CCActionInterval *fade = CCFadeOut::create(1.0f); 12 CCActionInterval *fadein=fade->reverse(); 13 CCFiniteTimeAction *seq=CCSequence::create(fade,fadein,NULL); 14 CCAction * repeat=CCRepeatForever::create((CCActionInterval*)seq); 15 pLabel->runAction(repeat); 16 //..........
效果如下:



一闪一闪亮晶晶 ^_^
2.显示各种文字
cocos2dx中有三个类可以添加文本信息:CCLabelTTF,CCLabelBMFont,CCLabelAtlas
2.1、CCLabelTTF
CCLabelTTF适合于一次性创建文本后基本上不再改变其显示信息的情况。
因为CCLabelTTF可以使用setString()函数改变文字内容,而这个时候会创建一个新的opengl纹理,需要重新渲染,这就跟重新创建一个新的CCLabelTTF差不多。
去看例子
1 CCLabelTTF* pLabel = CCLabelTTF::create("一行简单的文字", "Arial", 30);//要显示的内容,字体,字号 2 //这里也可以使用下面方法改变要显示的内容 3 pLabel->setString("新的文字"); 4 pLabel->setPosition(ccp(100, 100)); 5 this->addChild(pLabel, 1);
2.2、CCLabelBMFont
CCLabelBMFont适合于需要频繁更新的文本内容或者显示好看华丽的文字内容。
CCLabelBMFont是使用图片文件显示文本内容,相当于每次只是改变了图片的坐标,CCLabelBMFont中每个字符都是一个精灵,可以单独获取运行动作。使用这个类的时候,一定要有一个图片文字文件(格式是png)和一个文字坐标文件(格式是fnt),例如:

相应的代码:
1 //要显示的内容,字符坐标文件 .fnt 2 CCLabelBMFont* labelFont = CCLabelBMFont::create("我的文字", "bitmapFontTest.fnt"); 3 labelFont->setPosition(ccp(winSize.width/2, winSize.height/2)); 4 addChild(labelFont); 5 //CCLabelBMFont中每个字符都是一个精灵,可以用getChildByTag方法获取其中的一个字符作为精灵操作 6 CCSprite* sprite = (CCSprite*)labelFont->getChildByTag(3); 7 sprite->runAction(CCJumpBy::create(2.0f, ccp(0,0), 40, 5));
2.3、CCLabelAtlas
适合于显示数字信息,例如计分板,排行榜之类。
要使用这个类,必须要有一个数字图片(格式:png),并且知道每个字符的宽度和高度(在一张图片里进行选区显示),例如:

代码如下
1 //CCLabelAtlas通过png文件作为资源创建文本,参数:显示内容,图片、单个数字宽度、 2 //高度、图片中第一个字符的ASCII码,如字符为".",可以传入46或者'.'都可以。 3 CCLabelAtlas* labelatlas = CCLabelAtlas::create("2013", "a.png", 12, 32, 46); 4 labelatlas->setPosition(ccp(300, 100)); 5 addChild(labelatlas); 6 labelatlas->setScale(2.0f);
注意,一定要十分注意每个文字的大小(十分精确),否者会出现意想不到的错误的

浙公网安备 33010602011771号