日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【iOS-cocos2d-X 游戏开发之十一】使用New CCSprite() CCUserDefault要注意!

發(fā)布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【iOS-cocos2d-X 游戏开发之十一】使用New CCSprite() CCUserDefault要注意! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?本站文章均為?李華明Himi?原創(chuàng),轉(zhuǎn)載務(wù)必在明顯處注明:

轉(zhuǎn)載自【黑米GameDev街區(qū)】?原文鏈接:?http://www.himigame.com/iphone-cocos2dx/703.html

          ? 點擊訂閱 ?
?本博客最新動態(tài)!及時將最新博文通知您!

?

本章講解的是幾個細節(jié)問題,但是此細節(jié)有可能導(dǎo)致一系列問題,那么今天Himi與童鞋們共同交流分享下;

一. ??對于CCSprite 與 CCNode ?是都很常用的類,那么基礎(chǔ)使用方法這里不贅述,但是CCSprite 與 CCNode在進行添加子類時可能有些童鞋遇到過問題,下面我們詳細看下:

  • CCSprite*?sp?=?CCSprite::spriteWithFile("Icon.png");?
  • sp->setPosition(ccp(200,200));?
  • sp->addChild(CCSprite::spriteWithFile("Icon.png"));?
  • this->addChild(sp);?
  • //this?是個Layer?
  • 索引圖片名直接創(chuàng)建個精靈A,然后A add 子類精靈,最后將A添加Layer中,沒說的,eazy,不解釋;

    首先給出代碼段1:

    那么再看下面代碼段2:

  • CCSprite*?sp?=?new?CCSprite();?
  • sp->setPosition(ccp(200,200));?
  • sp->addChild(CCSprite::spriteWithFile("Icon.png"));?
  • this->addChild(sp);?
  • //this?是個Layer?
  • 順序和功能跟代碼段1一樣,但當你運行后發(fā)現(xiàn)程序異常!原因是sp 中并沒有真正的初始化,而僅僅簡單的申請了一塊內(nèi)存而已;

    解決方案:仍然調(diào)用CCSprite公開的幾個構(gòu)造函數(shù)即可;

  • CCSprite*?sp?=?new?CCSprite();?
  • ?//CCSprite構(gòu)造下?
  • ?sp->initWithFile("Icon.png");?
  • ?sp->setPosition(ccp(200,200));?
  • ?sp->addChild(CCSprite::spriteWithFile("Icon.png"));?
  • ?this->addChild(sp);?
  • 此問題比較容易理解,但是當我們出現(xiàn)以上問題時,肯定是想不想創(chuàng)建一個精靈時傳入資源,所以會使用new方式來使用,那么如果你想創(chuàng)建一個沒有貼圖的精靈可以按照如下方式實現(xiàn):

  • CCSprite*?sp?=?(CCSprite*)CCNode::node();?
  • sp->setPosition(ccp(200,200));?
  • sp->addChild(CCSprite::spriteWithFile("Icon.png"));?
  • this->addChild(sp);?
  • 利用Node::node初始化數(shù)據(jù)后強轉(zhuǎn)給CCSprite子類即可;話說回來既然如此到不如使用CCNode來的方便?!沒錯,如果你想封裝一個精靈,并往里添加子精靈,那么創(chuàng)建這個精靈如不想使用資源創(chuàng)建,那么推薦使用CCNode,(自定義類型繼承CCNode),另一方面如果創(chuàng)建這個精靈可以索引到資源,可以繼承CCSprite,沒問題;

    值得注意的是:

    當你自定義A類繼承精靈類CCSprite,使用new形式創(chuàng)建A類一個精靈后并addChild子精靈,一般不會造成程序異常,而且正常運行在iOS上,但是當你編譯后運行Android上之后會發(fā)現(xiàn)精靈都是白色塊的情況,如下前后對比圖:

    iOS運行截圖:

    編譯Android運行截圖:

    ?

    二. ?在cocos2dx中使用CCUserDefault的時候要注意,官方微薄也已提示,在當你setStringxxx、setBoolxxx等數(shù)據(jù)后要調(diào)用CCUserDefault的flush()函數(shù),只有當你flush()了,才會將數(shù)據(jù)以xml格式保存本地App->Documents目錄中!

    三.?在cocos2dx中使用pvr.ccz格式的圖片時候跟cocos2d的使用有一點區(qū)別,在cocos2d中加載pvr.ccz的圖片資源不用去管大小和尺寸(當然為了兼容老代機器,推薦1024*1024),但是在Cocos2dx中當你的pvr.ccz的資源大小寬高不是正方形的話(2 的N次冪),會在控制臺提示警告,并且!雖然程序能正常運行,但是在編譯后Android上無法正常顯示,是顯示圖片為白色塊!所以這點也要注意;

    轉(zhuǎn)載于:https://blog.51cto.com/xiaominghimi/863417

    《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的【iOS-cocos2d-X 游戏开发之十一】使用New CCSprite() CCUserDefault要注意!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。