// on "init" you need to initialize your instance bool HelloWorld::init() { if (!CCLayer::init()) { return false; } CCSize s = CCDirector::sharedDirector()->getWinSize(); render_texture_ = CCRenderTexture::create(s.width, s.height, kCCTexture2DPixelFormat_RGBA8888); render_texture_->retain(); render_texture_->setPosition(ccp(s.width / 2, s.height / 2)); render_texture_->clear(1.0, 1.0, 1.0, 1.0); this->addChild(render_texture_); std::string text = "0123456789"; for (int i = 0; i < 8; i++) { text += text; } CCLabelTTF* label = new CCLabelTTF; label->initWithString(text.c_str(), "Arial", 18, CCSizeMake(1000, 0), kCCTextAlignmentLeft); label->setPosition(ccp(10, 760)); label->setAnchorPoint(ccp(0, 1)); label->setColor(ccc3(0, 0, 0)); render_texture_->begin(); label->visit(); render_texture_->end(); label->release(); return true; }
int Bitmap::handler_method_drawtext( int ptr1,void* ptr2 ) { Bitmap* bitmap = (Bitmap*)ptr1; if (NULL==bitmap->p->m_emuBitmap) return -1; bool firstdraw = false; CCRenderTexture* fontRender = (CCRenderTexture*)bitmap->p->m_fontRender; if (NULL==fontRender) { fontRender = CCRenderTexture::create(bitmap->p->m_width,bitmap->p->m_height); bitmap->getEmuBitmap()->addChild(fontRender); fontRender->setPosition(ccp(bitmap->p->m_width/2,bitmap->p->m_height/2)); bitmap->p->m_fontRender = fontRender; fontRender->retain(); firstdraw = true; //fontRender->getSprite()->getTexture()->setAliasTexParameters(); } DrawtextStruct* ptr2struct = (DrawtextStruct*)ptr2; string tmpdrawchar = ptr2struct->str; // int checknum = atoi(tmpdrawchar.c_str()); // if (checknum!=0) // { // char tmp[20]={0}; // sprintf(tmp,"%d",checknum); // tmpdrawchar = tmp; // } CCLabelTTF* label = CCLabelTTF::create(tmpdrawchar.c_str(),ptr2struct->font->getName(),ptr2struct->font->getSize()); //label->getTexture()->setAliasTexParameters(); if (ptr2struct->font) { Font* f = ptr2struct->font; label->setFontName(f->getName()); label->setFontSize(f->getSize()); label->setColor(ccc3(f->getColor()->red*f->getColor()->alpha/255, f->getColor()->green*f->getColor()->alpha/255, f->getColor()->blue*f->getColor()->alpha/255)); //label->setOpacity(f->getColor()->alpha); } label->setAnchorPoint(ccp(0,1)); label->setDimensions(CCSizeMake(ptr2struct->rect.w,ptr2struct->rect.h)); label->setPosition(ccp(ptr2struct->rect.x,rgss_y_to_cocos_y(ptr2struct->rect.y,bitmap->p->m_height))); label->setVerticalAlignment(kCCVerticalTextAlignmentCenter); if (ptr2struct->align == Bitmap::Center) label->setHorizontalAlignment(kCCTextAlignmentCenter); else if(ptr2struct->align == Bitmap::Right) label->setHorizontalAlignment(kCCTextAlignmentRight); else if (ptr2struct->align == Bitmap::Left) label->setHorizontalAlignment(kCCTextAlignmentLeft); // CCLayerColor* masklayer = CCLayerColor::create(ccc4(255,255,255,255)); // masklayer->setContentSize(label->getContentSize()); // masklayer->setPosition(ccp(ptr2struct->rect.x,rgss_y_to_cocos_y(ptr2struct->rect.y,bitmap->m_height)-masklayer->getContentSize().height)); // ccBlendFunc fun = {GL_ZERO,GL_ZERO}; // masklayer->setBlendFunc(fun); fontRender->begin(); //masklayer->visit(); label->visit(); fontRender->end(); label->release(); delete ptr2struct; return 0; }