由于代碼開發UI效率較低,有時候需要用cocos studio來制作場景,再在C++中調用
遇到一個問題被忽略了,添加一個Button按鈕,在遊戲中動态的修改按鈕的圖檔
經過測試,發現很多問題
環境說明:
cocos2d-x版本: Cocos2d-x 3.17.2
Android編譯器: Android studio 3.5.3 用的是cmake方式編譯
C++編譯器: Visual studio 2019 社群版
Java版本: jdk1.8.0_91
SDK API版本: API 28
NDK版本: android-ndk-r19c
問題一:
Button按鈕圖檔在運作時使用loadTextures動态讀取本地png檔案時會顯示不正常,如:
這時候圖檔在Windows下不顯示,在Android下顯示都是黑色的,有時候又能顯示一兩張,其他的不會顯示
解決方法:
使用精靈架構SpriteFrameCache
先用 TexturePacker 将圖檔1.png、2.png、3.png等等打包成一個.ccz + .plist 或 .png + .plist檔案
比如我打包的檔案為:image.png、image.plist,放在res檔案夾下
不懂TexturePacker可以百度一下教程,我的是TexturePacker_3.0.9 破解版
在場景init初始化位置加入:
mSpriteFrame = SpriteFrameCache::getInstance();
mSpriteFrame->addSpriteFramesWithFile("res/image.plist");
在析構位置加入:
在要使用圖檔的位置加入:
ui::Widget::TextureResType::PLIST 表示從精靈架構中根據檔案名讀取
這樣操作就能正常的動态顯示圖檔了
問題二:
在動态的修改Button按鈕後你會發現按鈕随便大小沒有改變,但是圖像卻變得扭曲、變形、顯示不正常
如果動态的圖檔比原來的大,按鈕也變大了可以在設定圖檔之後代碼處重新設定一下大小
這個問題找了好久,最後發現原來是cocos studio在作怪,需要把九宮格取消,問題就解決了
