cocos2dx 數字以圖片形式來展示的方法_Cocos2d-x

來源:互聯網
上載者:User
感謝點評與關注,歡迎轉載與分享。
勤奮努力,持之以恒。
下面封裝方法效能不是最優僅供參考 更好方法請參考:http://blog.csdn.net/song_hui_xiang/article/details/42921537
//圖片命名規則:number_0.png  fileName則為 number_  numSpace:圖片間距 leftOrRight:1靠左對齊 2靠右對齊 3置中對齊CCSprite* Utilities::numberChangeToImage(int number,float numSpace,const char* fileName,int leftOrRightOrCenter){    CCSprite* base_sp;    string num_str = Convert2String(number);    int num_str_count = num_str.length();        if (leftOrRightOrCenter == 1) {        for (int i=0; i<num_str_count; i++) {            string num_single = num_str.substr(i,1);            string each_num_str = fileName+num_single+".png";            CCSprite* sp_number = CCSprite::createWithSpriteFrameName(each_num_str.c_str());            sp_number->setAnchorPoint(ccp(0, 0.5));            if (i==0) {                base_sp = sp_number;            }else{                sp_number->setPosition(ccp((base_sp->getContentSize().width+numSpace)*i, base_sp->getContentSize().height*0.5));                base_sp->addChild(sp_number);            }        }    }else if(leftOrRightOrCenter == 2){        for (int i=num_str_count-1; i>-1; i--) {            string num_single = num_str.substr(i,1);            string each_num_str = fileName+num_single+".png";            CCSprite* sp_number = CCSprite::createWithSpriteFrameName(each_num_str.c_str());            sp_number->setAnchorPoint(ccp(1, 0.5));            if (i==num_str_count-1) {                base_sp = sp_number;            }else{                sp_number->setPosition(ccp(-(base_sp->getContentSize().width+numSpace)*(num_str_count-2-i), base_sp->getContentSize().height*0.5));                base_sp->addChild(sp_number);            }        }    }else if(leftOrRightOrCenter == 3){        int centerIndex;        if (num_str_count%2 == 0) {            centerIndex = num_str_count/2;        }else{            centerIndex = (num_str_count+1)/2;        }        string centerFileName = fileName+num_str.substr(centerIndex-1,1)+".png";        base_sp = CCSprite::createWithSpriteFrameName(centerFileName.c_str());        if (num_str_count%2 == 0) {            base_sp->setAnchorPoint(ccp(1, 0.5));        }                int endIndex = 1;        for (int i=centerIndex; i<num_str_count; i++) {            string num_single = num_str.substr(i,1);            string each_num_str = fileName+num_single+".png";            CCSprite* sp_number = CCSprite::createWithSpriteFrameName(each_num_str.c_str());            sp_number->setAnchorPoint(ccp(0, 0.5));            sp_number->setPosition(ccp((base_sp->getContentSize().width+numSpace)*endIndex, base_sp->getContentSize().height*0.5));            base_sp->addChild(sp_number);            endIndex++;        }                int startIndex = 1;        for (int i=centerIndex-2; i>-1; i--) {            string num_single = num_str.substr(i,1);            string each_num_str = fileName+num_single+".png";            CCSprite* sp_number = CCSprite::createWithSpriteFrameName(each_num_str.c_str());            sp_number->setAnchorPoint(ccp(0, 0.5));            sp_number->setPosition(ccp(-(base_sp->getContentSize().width+numSpace)*startIndex, base_sp->getContentSize().height*0.5));            base_sp->addChild(sp_number);            startIndex++;        }    }    return base_sp;}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.