從iOS開發(fā)到cocos2D學(xué)習(xí)心得

第一篇:如何在mac上搭建cocos2d開發(fā)環(huán)境。

創(chuàng)建工程

  • 首先進(jìn)入指定的文件夾:
    cd /Users/apple/Desktop/Colin/Cocos2d-x/cocos2d-x-3.3/tools/cocos2d-console/bin/

  • 創(chuàng)建項目
    ./cocos new HelloWorld -p com.history.HelloWorld -l cpp -d /Users/apple/Desktop/Colin/Cocos2d-x/WorkSpace

cocos new 工程名 -p 包名 -l 語言 -d 目標(biāo)文件夾

這里面的com.history.HelloWorld就是該項目的bundleID
至此,mac下的cocos2D開發(fā)工作就已經(jīng)搭建好了。

第二篇:Sprite精靈類

  • Sprite類的子類有PhysicsSprite和Skin。PhysiceSprite是物理引擎精靈類,而Skin是皮膚精靈類,用于骨骼動畫(暫時不知道什么是骨骼動畫)。

  • 創(chuàng)建精靈類有多個函數(shù):
    *1)static Sprite *create(). 創(chuàng)建一個精靈對象,其屬性要在創(chuàng)建后設(shè)置
    *2)static Sprite *create(const std::string & filename).指定圖片創(chuàng)建精靈。
    *3)static Sprite *create(const std::string & filename,const Rect *rect).指定圖片和裁剪的矩形區(qū)域來創(chuàng)建精靈

  • 4)static Sprite *createWithTexture(Texture 2D *texture).指定紋理創(chuàng)建精靈。

  • 5)static Sprite *createWithTexture(Texture2D *texture,const Rect &rect,bool rotated=false).指定紋理和裁剪的矩形區(qū)域來創(chuàng)建精靈,第三個參數(shù)是指定是否旋轉(zhuǎn)紋理,默認(rèn)不旋轉(zhuǎn)。

  • 6)static Sprite *createWithSpriteFrame(SpriteFrame *pSpriteFrame).通過一個精靈幀對象創(chuàng)建另一個精靈對象。

    1. static Sprite *createWithSpriteFrameName(const std::string &spriteFrameName).通過指定幀緩存中精靈幀名創(chuàng)建精靈對象。

下面通過使用紋理對象來創(chuàng)建Sprite對象:

    //創(chuàng)建背景
    auto background = Sprite::create("HelloWorld.png");
    background -> setAnchorPoint(Vec2::ZERO);
    background ->setPosition(Vec2(0, 0));
    this -> addChild(background,0);
    
    //創(chuàng)建一個精靈(通過截取圖片的一部分創(chuàng)建一個精靈)
    auto sprite = Sprite::create("HelloWorld.png", Rect(10,10,60,60));
    sprite ->setPosition(Vec2(200,200));
    this ->addChild(sprite);
    
    //使用紋理創(chuàng)建一個精靈
    Texture2D *cache = Director::getInstance()->getTextureCache()->addImage("HelloWorld.png");
    auto anoterSprite = Sprite::create();
    anoterSprite->setTexture(cache);
    anoterSprite-> setTextureRect(Rect(20, 20, 40, 40));
    anoterSprite->setPosition(Vec2(400, 200));
    this -> addChild(anoterSprite);

精靈的性能優(yōu)化

游戲是一種很耗費資源的應(yīng)用,特別是在移動設(shè)備中的游戲,性能優(yōu)化是非常重要的。性能優(yōu)化的方面有很多,這里只先介紹精靈相關(guān)的性能優(yōu)化,關(guān)于其他方面的優(yōu)化,會在后面的第20章介紹。精靈的性能優(yōu)化可以使用精靈表和緩存。

使用紋理圖集對精靈進(jìn)行優(yōu)化

紋理圖集也稱為精靈表,它是把許多小的精靈圖片組合到一張大圖里面。使用紋理圖集有如下主要優(yōu)點:

  • 1)減少文件讀取次數(shù),讀取一張圖片比讀取一堆小文件要快
  • 2)減少OpenGLES 繪制調(diào)用并且加速渲染
  • 3)減少內(nèi)存消耗,OpenGL ES 1.1僅僅能夠使用2的n次冪大小的圖片,如果采用小圖片OpenGL ES1.1會分配給每個圖片2的n次冪大小的內(nèi)存空間,即使這張圖片達(dá)不到這樣的寬度和高度也會分配大于此圖片的2的n次冪大小的空間,那么運用這種圖片集的方式將減少內(nèi)存碎片。雖然在Cocos2d-x2.0后使用了OpenGLES2.0,它不會再分配2的幾次冪的內(nèi)存塊了,但是減少讀取次數(shù)和繪制的優(yōu)勢依然存在。(感覺這個和前端的圖片加載有點類似)。
使用精靈幀緩存

精靈幀緩存是緩存的一種,緩存有如下幾種:
1)紋理緩存。使用紋理緩存可以創(chuàng)建紋理對象。
2)精靈幀緩存。能夠從精靈表中創(chuàng)建精靈幀緩存,然后再從精靈幀緩存中獲得精靈對象,反復(fù)使用精靈對象時,使用精靈幀緩存可以節(jié)省內(nèi)存消耗。
3)動畫緩存。動畫緩存主要用于精靈動畫,精靈動畫中的每一幀是從動畫緩存中獲取的。

使用精靈幀緩存涉及的類有SpriteFrame和SpriteFrameCache。使用SpriteFrameCache創(chuàng)建精靈對象的主要代碼如下:
SpriteFrameCacae::getInstance()->addSpriteFramesWithFile("SpriteSheet.plist");

auto mountain1 = Sprite::createWithSpriteFrameName("mountain1.png");

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容