Cocos2d3.0RC2 Label 学习笔记一

Cocos2d3.0RC2 官方给我们提供了很多例子,这里我们学习Label,字体包官方的工程中是有的,我这里也传了一份:http://download.csdn.net/detail/qqmcy/7245621


LabelAtlasTest

bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Point origin = Director::getInstance()->getVisibleOrigin();


    auto label1 = LabelAtlas::create("LabelAtLas  Test", "tuffy_bold_italic-charmap.plist");
    addChild(label1, 0, 0);
    label1->setPosition(Point(10, 100));
    label1->setOpacity(200);
    
    auto label2 = LabelAtlas::create("678904327423567", "tuffy_bold_italic-charmap.plist");
    addChild(label2,0,1);
    label2->setPosition(Point(10, 200));
    label2->setOpacity(132);
    _time = 0;
    
    schedule(schedule_selector(HelloWorld::step));
    
    
    return true;
}

void HelloWorld::step(float dt)
{
    _time += dt;
    char string[12] = {0};
    sprintf(string, "%2.2f Test",_time);
    
    auto label1 = (LabelAtlas*)getChildByTag(0);
    label1->setString(string);
    
    auto label2 = (LabelAtlas*)getChildByTag(1);
    sprintf(string, "%d",(int)_time);
    label2->setString(string);
    
    
}


LabelAtlasColorTest


bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Point origin = Director::getInstance()->getVisibleOrigin();


    auto label1 = LabelAtlas::create("LabelAtLas  Test", "tuffy_bold_italic-charmap.png",48,64,' ');
    
    addChild(label1, 0, 0);
    label1->setPosition(Point(10, 100));
    label1->setOpacity(200);
    
    auto label2 = LabelAtlas::create("678904327423567", "tuffy_bold_italic-charmap.png",48,64,' ');
    addChild(label2,0,1);
    label2->setPosition(Point(10, 200));
    label2->setOpacity(132);
    label2->setColor(Color3B::GREEN);
    
    
    auto fade = FadeOut::create(1.0f);
    auto fade_in = fade->reverse();
    auto cb = CallFunc::create(CC_CALLBACK_0(HelloWorld::actionFinishCallback, this));
    auto seq = Sequence::create(fade,fade_in,cb, NULL);
    auto repeat = RepeatForever::create(seq);
    label2->runAction(repeat);
    schedule(schedule_selector(HelloWorld::step));
    
    
    
    _time = 0;
    
    
    
    return true;
}


void HelloWorld::actionFinishCallback()
{
    CCLOG("Action finished");
}

void HelloWorld::step(float dt)
{
    _time += dt;
    char string[12] = {0};
    sprintf(string, "%2.2f Test",_time);
    auto label1 = (LabelAtlas*)getChildByTag(0);
    label1->setString(string);
    
    auto label2 = (LabelAtlas*)getChildByTag(1);
    sprintf(string, "%d", (int)_time);
    label2->setString( string );
    
}

LabelTTFAlignment


bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    auto s = Director::getInstance()->getWinSize();
   
    auto ttf0 = LabelTTF:: create("Alignment 0\nnew line", "Helvetica", 32,Size(256, 32),TextHAlignment::LEFT);
    ttf0->setPosition(Point(s.width / 2, s.height / 6 * 2));
    ttf0->setAnchorPoint(Point::ANCHOR_MIDDLE);
    this->addChild(ttf0);
    
    
    auto ttf1 = LabelTTF:: create("Alignment 0\nnew line", "Helvetica", 32,Size(256, 32),TextHAlignment::CENTER);
    ttf1->setPosition(Point(s.width / 2, s.height / 6 * 3));
    ttf1->setAnchorPoint(Point::ANCHOR_MIDDLE);
    this->addChild(ttf1);
    
    
    auto ttf2 = LabelTTF:: create("Alignment 0\nnew line", "Helvetica", 32,Size(256, 32),TextHAlignment::RIGHT);
    ttf2->setPosition(Point(s.width / 2, s.height / 6 * 4));
    ttf2->setAnchorPoint(Point::ANCHOR_MIDDLE);
    this->addChild(ttf2);
    _time = 0;
    
    return true;
}

效果:



LabelBMFont


bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
   
    auto col = LayerColor::create(Color4B(128, 128, 128, 255));
    addChild(col, -10);
    
    auto label1 = LabelBMFont::create("Test", "bitmapFontTest2.fnt");
    label1->setAnchorPoint(Point::ANCHOR_BOTTOM_LEFT);
    addChild(label1, 0, 10);
    
    auto fade = FadeOut::create(1.0f);
    auto fade_in = fade->reverse();
    auto seq = Sequence::create(fade,fade_in, NULL);
    auto repeat =  RepeatForever::create(seq);
    label1->runAction(repeat);
    
    auto label2 = LabelBMFont::create("Testedddddd", "bitmapFontTest2.fnt");
    label2->setPosition(Point(100, 200));
    label2->setAnchorPoint(Point::ANCHOR_MIDDLE);
    label2->setColor(Color3B::RED);
    addChild(label2, 0, 11);
    
    auto tint = Sequence::create(TintTo::create(1, 255, 0, 0),TintTo::create(1, 0, 255, 0),TintTo::create(1, 0, 0, 255), NULL);
    label2->runAction(RepeatForever::create(tint));
    
    
    
    auto label3 = LabelBMFont::create("ghjkl", "bitmapFontTest2.fnt");
    label3->setAnchorPoint(Point::ANCHOR_TOP_RIGHT);
    addChild(label3, 0, 12);
    label3->setPosition(Point(720, 100));
    
   
    schedule(schedule_selector(HelloWorld::step));
    
    
    return true;
}
void HelloWorld::step(float dt)
{
    _time += dt;
    //std::string string;
    char string[15] = {0};
    sprintf(string, "%2.2f Test j", _time);
    //string.format("%2.2f Test j", _time);
    
    auto label1 = (LabelBMFont*) getChildByTag(10);
    label1->setString(string);
    
    auto label2 = (LabelBMFont*) getChildByTag(11);
    label2->setString(string);
    
    auto label3 = (LabelBMFont*) getChildByTag(12);
    label3->setString(string);
}

效果:





bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
   
    auto label = LabelBMFont::create("Bitmap Font Atlas", "bitmapFontTest.fnt");
    addChild(label);
    
    auto s = Director::getInstance()->getWinSize();
    label->setPosition(Point(s.width / 2, s.height / 2));
    label->setAnchorPoint(Point::ANCHOR_MIDDLE);
    
    auto rotate = RotateBy::create(2, 360);
    auto rot_4ever = RepeatForever::create(rotate);
    
    auto scale = ScaleBy::create(2, 1.5f);
    auto scale_back = scale->reverse();
    auto scale_seq = Sequence::create(scale,scale_back, NULL);
    auto scale_4ever = RepeatForever::create(scale_seq);
    
    auto jump = JumpBy::create(0.5f, Point::ZERO, 60, 1);
    auto jump_4ever = RepeatForever::create(jump);
    
    auto fade_out = FadeOut::create(1);
    auto fade_in = FadeIn::create(1);
    auto seq = Sequence::create(fade_out,fade_in, NULL);
    auto fade_4ever = RepeatForever::create(seq);
    
    label->runAction(fade_4ever);
    auto label2 = LabelBMFont::create("00.0", "bitmapFontTest.fnt");
    addChild(label2, 0, 13);
    label2->setPosition(Point(s.width / 2, 80));
    
    label2->runAction(rot_4ever->clone());
    
    schedule(schedule_selector(HelloWorld::step),0.1f);
    
    
    return true;
}
void HelloWorld::step(float dt)
{
    _time += dt;
    //std::string string;
    char string[15] = {0};
    sprintf(string, "%2.2f Test j", _time);
    //string.format("%2.2f Test j", _time);
    
    auto label1 = (LabelBMFont*) getChildByTag(13);
    label1->setString(string);
    
    
}

效果:




bitmapFontTest4.fnt


 
    auto label = LabelBMFont::create("dfghjk", "bitmapFontTest4.fnt");
    addChild(label);
    
    auto s = Director::getInstance()->getWinSize();
    
    label->setPosition( Point(s.width/2, s.height/2) );
    label->setAnchorPoint( Point::ANCHOR_MIDDLE );



bitmapFontTest5.fnt

 auto s = Director::getInstance()->getWinSize();
    
    LabelBMFont* label = NULL;
    label = LabelBMFont::create("FaFeFiFoFu", "bitmapFontTest5.fnt");
    addChild(label);
    label->setPosition( Point(s.width/2, s.height/2+50) );
    label->setAnchorPoint( Point::ANCHOR_MIDDLE ) ;
    
    label = LabelBMFont::create("fafefifofu", "bitmapFontTest5.fnt");
    addChild(label);
    label->setPosition( Point(s.width/2, s.height/2) );
    label->setAnchorPoint( Point::ANCHOR_MIDDLE );
    
    label = LabelBMFont::create("aeiou", "bitmapFontTest5.fnt");
    addChild(label);
    label->setPosition( Point(s.width/2, s.height/2-50) );
    label->setAnchorPoint( Point::ANCHOR_MIDDLE );






 auto s = Director::getInstance()->getWinSize();
    
    LabelBMFont* label = nullptr;
    label = LabelBMFont::create("Blue", "bitmapFontTest5.fnt");
    label->setColor( Color3B::BLUE );
    addChild(label);
    label->setPosition( Point(s.width/2, s.height/4) );
    label->setAnchorPoint( Point::ANCHOR_MIDDLE );
    
    label = LabelBMFont::create("Red", "bitmapFontTest5.fnt");
    addChild(label);
    label->setPosition( Point(s.width/2, 2*s.height/4) );
    label->setAnchorPoint( Point::ANCHOR_MIDDLE );
    label->setColor( Color3B::RED );
    
    label = LabelBMFont::create("G", "bitmapFontTest5.fnt");
    addChild(label);
    label->setPosition( Point(s.width/2, 3*s.height/4) );
    label->setAnchorPoint( Point::ANCHOR_MIDDLE );
    label->setColor( Color3B::GREEN );
    label->setString("Green");



for( int i=0 ; i < 100;i ++ )
    {
        char str[6] = {0};
        sprintf(str, "-%d-", i);
        auto label = LabelBMFont::create(str, "bitmapFontTest.fnt");
        addChild(label);
        
        auto s = Director::getInstance()->getWinSize();
        
        auto p = Point( CCRANDOM_0_1() * s.width, CCRANDOM_0_1() * s.height);
        label->setPosition( p );
        label->setAnchorPoint(Point::ANCHOR_MIDDLE);
    }







 Size s;
    
    // Left
    auto label1 = Label::createWithBMFont("bitmapFontTest3.fnt", " Multi line\nLeft");
    label1->setAnchorPoint(Point(0,0));
    addChild(label1, 0, 12);
    
    s = label1->getContentSize();
    CCLOG("content size: %.2fx%.2f", s.width, s.height);
    
    
    // Center
    auto label2 = Label::createWithBMFont( "bitmapFontTest3.fnt", "Multi line\nCenter");
    addChild(label2, 0, 13);
    
    s= label2->getContentSize();
    CCLOG("content size: %.2fx%.2f", s.width, s.height);
    
    // right
    auto label3 = Label::createWithBMFont("bitmapFontTest3.fnt", "Multi line\nRight\nThree lines Three");
    label3->setAnchorPoint(Point(1, 1));
    addChild(label3, 0, 14);
    
    s = label3->getContentSize();
    CCLOG("content size: %.2fx%.2f", s.width, s.height);
    
    label1->setPosition(Point(50, 50));
    label2->setPosition(Point(100, 400));
    label3->setPosition(Point(300, 300));





 auto s = Director::getInstance()->getWinSize();
    
    // LabelBMFont
    auto label1 = Label::createWithBMFont("konqa32.fnt", "TESTING RETINA DISPLAY");
    addChild(label1);
    label1->setPosition(Point(s.width/2, s.height/2));





 auto s = Director::getInstance()->getWinSize();
    
    
    auto layer = LayerColor::create(Color4B(128, 128, 128, 255));
    addChild(layer, -10);
    
    // LabelBMFont
    auto label1 = Label::createWithBMFont("futura-48.fnt", "TESTING RETINA DISPLAY");
    addChild(label1);
    label1->setPosition(Point(s.width/2, s.height/2));





bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
   
    auto listener = EventListenerTouchAllAtOnce::create();
    listener->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
    listener->onTouchesMoved = CC_CALLBACK_2(HelloWorld::onTouchesMoved, this);
    listener->onTouchesEnded = CC_CALLBACK_2(HelloWorld::onTouchesEnded, this);
    
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
    
    auto size = Director::getInstance()->getWinSize();
    
    this->_labelShouldRetain = Label::createWithBMFont("markerFelt.fnt", LongSentencesExample,TextHAlignment::CENTER,size.width / 1.5);
    this->_labelShouldRetain->retain();
    
    this->_arrowsBarShouldRetain = Sprite::create("arrowsBar.png");
    this->_arrowsBarShouldRetain->retain();
    this->_arrowsShouldRetain = Sprite::create("arrows.png");
    this->_arrowsShouldRetain->retain();
    
    MenuItemFont::setFontSize(20);
    auto longSentences = MenuItemFont::create("Long Flowing Sentences", CC_CALLBACK_1(HelloWorld::stringChanged, this));
    auto lineBreaks = MenuItemFont::create("Short Sentences With Intentional Line Breaks", CC_CALLBACK_1(HelloWorld::stringChanged, this));
    auto mixed = MenuItemFont::create("Long Sentences Mixed With Intentional Line Breaks", CC_CALLBACK_1(HelloWorld::stringChanged, this));
    
    auto stringMenu = Menu::create(longSentences,lineBreaks,mixed, NULL);
    stringMenu->alignItemsVertically();
    
    longSentences->setColor(Color3B::RED);
    _lastSentenceItem = longSentences;
    longSentences->setTag(LongSentences);
    lineBreaks->setTag(LineBreaks);
    mixed->setTag(Mixed);
    
    
    MenuItemFont::setFontSize(30);
    
    auto left = MenuItemFont::create("Left", CC_CALLBACK_1(HelloWorld::alignmentChanged, this));
    auto center = MenuItemFont::create("Center", CC_CALLBACK_1(HelloWorld::alignmentChanged, this));
    auto right = MenuItemFont::create("Right", CC_CALLBACK_1(HelloWorld::alignmentChanged, this));
    
    auto alignmentMenu = Menu::create(left,center,right, NULL);
    center->setColor(Color3B::RED);
    _lastAlignmentItem = center;
    left->setTag(LeftAlign);
    center->setTag(CenterAlign);
    right->setTag(RightAlign);
    
    this->_labelShouldRetain->setPosition(Point(size.width / 2, size.height / 2));
    this->_arrowsBarShouldRetain->setVisible(false);
    float arrowsWidth = (ArrowsMax - ArrowsMin) * size.width;
    this->_arrowsBarShouldRetain->setScaleX(arrowsWidth / this->_arrowsBarShouldRetain->getContentSize().width);
    
    this->snapArrowsToEdge();
    
    stringMenu->setPosition(Point(size.width/2, size.height - menuItemPaddingCenter));
    alignmentMenu->setPosition(Point(size.width/2, menuItemPaddingCenter+15));
    
    this->addChild(this->_labelShouldRetain);
    this->addChild(this->_arrowsBarShouldRetain);
    this->addChild(this->_arrowsShouldRetain);
    this->addChild(stringMenu);
    this->addChild(alignmentMenu);
    
    
    
    return true;
}


void HelloWorld::stringChanged(cocos2d::Ref *sender)
{
    auto item = (MenuItemFont*)sender;
    item->setColor(Color3B::RED);
    this->_lastAlignmentItem->setColor(Color3B::WHITE);
    this->_lastAlignmentItem = item;
    
    switch(item->getTag())
    {
        case LongSentences:
            this->_labelShouldRetain->setString(LongSentencesExample);
            break;
        case LineBreaks:
            this->_labelShouldRetain->setString(LineBreaksExample);
            break;
        case Mixed:
            this->_labelShouldRetain->setString(MixedExample);
            break;
            
        default:
            break;
    }
    
    this->snapArrowsToEdge();
}
void HelloWorld::snapArrowsToEdge()
{
    this->_arrowsShouldRetain->setPosition(Point(this->_labelShouldRetain->getPosition().x + this->_labelShouldRetain->getContentSize().width/2,
                                                 this->_labelShouldRetain->getPosition().y));
}

void HelloWorld::onTouchesBegan(const std::vector<Touch*>& touches, cocos2d::Event  *event)
{
    auto touch = touches[0];
    auto location = touch->getLocationInView();
    
    if (this->_arrowsShouldRetain->getBoundingBox().containsPoint(location))
    {
        _drag = true;
        this->_arrowsBarShouldRetain->setVisible(true);
    }
}

void HelloWorld::onTouchesEnded(const std::vector<Touch*>& touches, cocos2d::Event  *event)
{
    _drag = false;
    this->snapArrowsToEdge();
    
    this->_arrowsBarShouldRetain->setVisible(false);
}

void HelloWorld::onTouchesMoved(const std::vector<Touch*>& touches, cocos2d::Event  *event)
{
    if (! _drag)
    {
        return;
    }
    
    auto touch = touches[0];
    auto location = touch->getLocationInView();
    
    auto winSize = Director::getInstance()->getWinSize();
    
    this->_arrowsShouldRetain->setPosition(Point(MAX(MIN(location.x, ArrowsMax*winSize.width), ArrowsMin*winSize.width),
                                                 this->_arrowsShouldRetain->getPosition().y));
    
    float labelWidth = fabs(this->_arrowsShouldRetain->getPosition().x - this->_labelShouldRetain->getPosition().x) * 2;
    
    this->_labelShouldRetain->setMaxLineWidth(labelWidth);
}



void HelloWorld::alignmentChanged(cocos2d::Ref *sender)
{
    auto item = static_cast<MenuItemFont*>(sender);
    item->setColor(Color3B::RED);
    this->_lastAlignmentItem->setColor(Color3B::WHITE);
    this->_lastAlignmentItem = item;
    
    switch(item->getTag())
    {
        case LeftAlign:
            this->_labelShouldRetain->setAlignment(TextHAlignment::LEFT);
            break;
        case CenterAlign:
            this->_labelShouldRetain->setAlignment(TextHAlignment::CENTER);
            break;
        case RightAlign:
            this->_labelShouldRetain->setAlignment(TextHAlignment::RIGHT);
            break;
            
        default:
            break;
    }
    
    this->snapArrowsToEdge();
}




LabelTTFLongLineWrapping

 auto size = Director::getInstance()->getWinSize();
    
    TTFConfig ttfConfig("arial.ttf",14);
    auto label1 = Label::createWithTTF(ttfConfig, LongSentencesExample, TextHAlignment::CENTER,size.width);
    label1->setPosition( Point(size.width/2, size.height/2) );
    label1->setAnchorPoint(Point(0.5, 1.0));
    addChild(label1);



 auto size = Director::getInstance()->getWinSize();
    
    // Long sentence
    TTFConfig ttfConfig("wt021.ttf",18,GlyphCollection::DYNAMIC);
    std::string text = FileUtils::getInstance()->getStringFromFile("commonly_used_words.txt");
    auto label = Label::createWithTTF(ttfConfig,text, TextHAlignment::CENTER, size.width);
    label->setPosition( Point(size.width/2, size.height/2) );
    addChild(label);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜甲同学

感谢打赏,我会继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值