Cocos2d x 文字渲染

2021-09-08 17:36:07 字數 3741 閱讀 3678

文字渲染:

cclabelatlas、cclabelbmfont、cclabelttf類都是繼承 cclabelprotocol類,即能夠使用系統字,也能夠自己定義渲染字型。

cclabelatlas類使用作為文字的一種方式, 通過直接定義

cclabelatlas *label0 = cclabelatlas::create("asde test ", "tuffy_bold_italic-charmap.png", 46, 64, ' ');//引數順序:要顯示字元,路徑, 字元寬度,字元高度, 起始字元

label0->setposition(ccp(100, 200));

label0->setopacity(200);

this->addchild(label0);

cclabelatlas *label2 = cclabelatlas::create("456789123", "tuffy_bold_italic-charmap.png", 46, 64, ' ');

label2->setposition(ccp(visiblesize.width/2, visiblesize.height/2));

label2->setopacity(200);

this->addchild(label2);

//文字閃爍動畫

ccactioninterval *ac = ccfadeout::create(1.2f);

ccactioninterval *ac2 = ac->reverse();

label2->runaction(ccrepeatforever::create(ccsequence::create(ac, ac2, null)));

//使用plist配置檔案的描寫敘述來定義,能夠依據須要改動配置檔案資訊,包含路徑、字元寬度高度、起始字元

cclabelatlas* label1 = cclabelatlas::create("wer vbn", "./tuffy_bold_italic-charmap.plist");//引數順序:要顯示字元,plist檔案路徑

label1->setposition( ccp(10,100) );

label1->setopacity( 200 );

this->addchild(label1);

cclabelttf 類是通過系統字實現字型標籤

cclabelttf *ttf = cclabelttf::create("hello world ", "helvetica", 30, ccp(320, 30), kcctextalignmentleft);//引數順序:要顯示字元。字型檔名稱,字型大小。範圍大小。對齊方式[kcctextalignmentleft(左對齊) kcctextalignmentright(右對齊) kcctextalignmentcenter(中心對齊)]

ttf->setposition(ccp(300, 400));

this->addchild(ttf);

cctextfieldttf類輸入框使用文字標籤,繼承cclabelttf類

cctextfieldttf *ptest = cctextfieldttf::textfieldwithplaceholder("", "stheititc-light",40 );

ptest->setposition(ccp(300, 500));

this->addchild(ptest);

cclabelbmfont類中每乙個字都是乙個精靈,每乙個字都能夠定義動作,並支援fnt型別檔案

cclabelbmfont *label = cclabelbmfont::create("bitmap font atlas xub", "fonts/bitmapfonttest.fnt");

addchild(label);

ccsize s = ccdirector::shareddirector()->getwinsize();

label->setposition( ccp(s.width/2-200, s.height/2) );

label->setanchorpoint( ccp(0.5f, 0.5f) );

ccsprite* bchar = (ccsprite*) label->getchildbytag(0);//獲取第1字元'b'

ccsprite* fchar = (ccsprite*) label->getchildbytag(7);//獲取第7字元'f'

ccsprite* achar = (ccsprite*) label->getchildbytag(12);//獲取第12字元'a'

ccsprite* xchar = (ccsprite*) label->getchildbytag(18);//獲取第12字元'a'

//為字元建立動作

ccactioninterval* rotate = ccrotateby::create(2, 360);

ccaction* rot_4ever = ccrepeatforever::create(rotate);

ccactioninterval* scale = ccscaleby::create(2, 1.5f);

ccactioninterval* scale_back = scale->reverse();

ccsequence* scale_seq = ccsequence::create(scale, scale_back,null);

ccaction* scale_4ever = ccrepeatforever::create(scale_seq);

ccactioninterval* jump = ccjumpby::create(0.5f, ccpointzero, 60, 1);

ccaction* jump_4ever = ccrepeatforever::create(jump);

ccactioninterval* fade_out = ccfadeout::create(1);

ccactioninterval* fade_in = ccfadein::create(1);

ccsequence* seq = ccsequence::create(fade_out, fade_in, null);

ccaction* fade_4ever = ccrepeatforever::create(seq);

ccactioninterval *by = ccmoveby::create(1.0f, ccp(300, 300));

ccactioninterval *by2 = by->reverse();

ccsequence* seq_by = ccsequence::create(by, by2, null);

ccaction *ac_by = ccrepeatforever::create(seq_by);

bchar->runaction(rot_4ever);

bchar->runaction(scale_4ever);

fchar->runaction(jump_4ever);

achar->runaction(fade_4ever);

xchar->runaction(ac_by);

cocos2dX 文字的渲染

1 建立一段文字 create函式的三個引數分別為 文字內容 字型和字型大小 cclabelttf font cclabelttf create hello world 微軟雅黑 48 2 獲取文字的尺寸 font getcontentsize 返回的是乙個ccsize型別的值 該值有兩個屬性wid...

cocos2dx渲染流程

二 mainloop drawscene當中統計deltatime,再呼叫排程管理器update,opengl clearbuffer,設定渲染檢視矩陣,投影矩陣和紋理,呼叫當前場景visit 遞迴呼叫子節點 呼叫opengl渲染 前後臺緩衝區交換 呼叫統計函式,呼叫自動釋放池的pop。三 ccme...

cocos2dx 離屏渲染

今天才發現 cocos2dx 有乙個類叫做 ccrendertexture,封裝了 opengl render to texture 的 細節。這個類的是採用 fbo 把影象渲染到 自己新建的 frame buffer 來實現的。如果寫乙個 shader 比如讓影象變成灰色,如果只給乙個 ccspr...