CCMenuItemImage各状态下精灵交换测试

CCMenuItemImage* pMI = (CCMenuItemImage*)sender;
#if 0 //測試 CCMenuItemImage 不同狀態下的CCSprite對象交換
if (pMI)
{
#if 0
第一種, 這種方法只適合沒有沒有壓過的圖片,否則如果圖片在大圖中是什麼樣的,遊戲中就是什麼樣
CCSprite* pNode = (CCSprite*)pMI->getNormalImage();
CCSprite* pNormal = CCSprite::createWithTexture(pNode->getTexture(), pNode->getTextureRect());
pNode = (CCSprite*)pMI->getSelectedImage();
CCSprite* pSelect = CCSprite::createWithTexture(pNode->getTexture(), pNode->getTextureRect());
#else
第二種,該方法會創建兩個精靈對象,效率相對於第三種來說是不高的。但是可以達到目標
CCSprite* pNode = (CCSprite*)pMI->getNormalImage();
CCSprite* pNormal = CCSprite::createWithSpriteFrame(pNode->displayFrame());
pNode = (CCSprite*)pMI->getSelectedImage();
CCSprite* pSelect = CCSprite::createWithSpriteFrame(pNode->displayFrame());
#endif

第三種,首先將兩個精靈各自保存起來,並Retian()防止在父節點中移除時,會被釋放掉。然後直接設置就可以了。在交互過程中
不會額外創建精靈。
CCSprite* pNormal = (CCSprite*)pMI->getNormalImage();
pNormal->retain();


CCSprite* pSelect = (CCSprite*)pMI->getSelectedImage();
pSelect->retain();
這裏必須這樣做,並且也不能使用 pSelect->removeFromParent(),具體原因試試就明白了
pMI->setSelectedImage(NULL);


pMI->setNormalImage(pSelect);
pMI->setSelectedImage(pNormal);
}
#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值