CCSprite精靈更換圖片


方法一:

 

	//創建精靈
	CCSprite *pSprite = CCSprite::create("audio_on.png");

	//創建紋理
	CCTexture2D *texture = CCTextureCache::sharedTextureCache()->addImage("audio_off.png");
	
	//給精靈設置新的紋理
	pSprite->setTexture(texture);


方法二:

 

 

    CCSprite* pSprite = CCSprite::create("HelloWorld.png");
    CCSprite* pSprite2 = CCSprite::create("bg2.png");

    pSprite->setPosition(ccp(11,22));
    pSprite2->setPosition(ccp(22,33));

    this->addChild(pSprite, 0);
    this->addChild(pSprite2, 1);

    //需要注意的是displayFrame(),前提是你的精靈是addChild()到場景中的,不然獲得的displayFrame會為空
    //pSprite設置當前顯示幀為pSprite2正在顯示的的幀(完成更換)
    pSprite->setDisplayFrame(pSprite2->displayFrame());

方法三:

我們可以使用

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("res.plist");

來代替

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("res.plist","res.png");

因為當參數僅為res.plist文件時,函數會自動尋找對應的res.png文件。

當使用2個參數時,我們可以手動指定加載的png的名字,比如我們想加載res.plist來解析demo.png時,可以這樣指定:

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("res.plist","demo.png");

當執行完上面的語句時,TP打包后的圖片就已經載入內存了,我們就可以使用plist里面定義的key值來使用我們想要的圖片(res1.png、res2.png)

 

	//載入TP打包的plist和png文件到內存(有2張圖片分別是res1.png和res2.png)
	CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("res.plist","res.png");

	//創建精靈
	pSprite = CCSprite::createWithSpriteFrameName("res2.png");

    pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

    this->addChild(pSprite, 0);

	//創建精靈幀
	CCSpriteFrame* f = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("res1.png");
    
	//更換圖片
	pSprite->setDisplayFrame(f);


 還有就是直接創建Frame:

如下:

 

至於newSpriteFrame怎么實現的,可以看源碼,然后轉換成cocos2dx的c++寫法就好了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM