【iOS-cocos2d-X 游戏开发之十一】使用New CCSprite() CCUserDefault要注意!
?本站文章均為?李華明Himi?原創,轉載務必在明顯處注明:
轉載自【黑米GameDev街區】?原文鏈接:?http://www.himigame.com/iphone-cocos2dx/703.html
? 點擊訂閱 ??本博客最新動態!及時將最新博文通知您!
?
本章講解的是幾個細節問題,但是此細節有可能導致一系列問題,那么今天Himi與童鞋們共同交流分享下;
一. ??對于CCSprite 與 CCNode ?是都很常用的類,那么基礎使用方法這里不贅述,但是CCSprite 與 CCNode在進行添加子類時可能有些童鞋遇到過問題,下面我們詳細看下:
索引圖片名直接創建個精靈A,然后A add 子類精靈,最后將A添加Layer中,沒說的,eazy,不解釋;
首先給出代碼段1:
那么再看下面代碼段2:
順序和功能跟代碼段1一樣,但當你運行后發現程序異常!原因是sp 中并沒有真正的初始化,而僅僅簡單的申請了一塊內存而已;
解決方案:仍然調用CCSprite公開的幾個構造函數即可;
此問題比較容易理解,但是當我們出現以上問題時,肯定是想不想創建一個精靈時傳入資源,所以會使用new方式來使用,那么如果你想創建一個沒有貼圖的精靈可以按照如下方式實現:
利用Node::node初始化數據后強轉給CCSprite子類即可;話說回來既然如此到不如使用CCNode來的方便?!沒錯,如果你想封裝一個精靈,并往里添加子精靈,那么創建這個精靈如不想使用資源創建,那么推薦使用CCNode,(自定義類型繼承CCNode),另一方面如果創建這個精靈可以索引到資源,可以繼承CCSprite,沒問題;
值得注意的是:
當你自定義A類繼承精靈類CCSprite,使用new形式創建A類一個精靈后并addChild子精靈,一般不會造成程序異常,而且正常運行在iOS上,但是當你編譯后運行Android上之后會發現精靈都是白色塊的情況,如下前后對比圖:
iOS運行截圖:
編譯Android運行截圖:
?
二. ?在cocos2dx中使用CCUserDefault的時候要注意,官方微薄也已提示,在當你setStringxxx、setBoolxxx等數據后要調用CCUserDefault的flush()函數,只有當你flush()了,才會將數據以xml格式保存本地App->Documents目錄中!
三.?在cocos2dx中使用pvr.ccz格式的圖片時候跟cocos2d的使用有一點區別,在cocos2d中加載pvr.ccz的圖片資源不用去管大小和尺寸(當然為了兼容老代機器,推薦1024*1024),但是在Cocos2dx中當你的pvr.ccz的資源大小寬高不是正方形的話(2 的N次冪),會在控制臺提示警告,并且!雖然程序能正常運行,但是在編譯后Android上無法正常顯示,是顯示圖片為白色塊!所以這點也要注意;
轉載于:https://blog.51cto.com/xiaominghimi/863417
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【iOS-cocos2d-X 游戏开发之十一】使用New CCSprite() CCUserDefault要注意!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 簡單安裝軟件 GNU Linux
- 下一篇: 利用js实现table增加一行