天天看點

cocos2d-x 3.17.2 調用cocos studio釋出的csb檔案,遇到按鈕圖檔顯示不正常問題

由于代碼開發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在作怪,需要把九宮格取消,問題就解決了

cocos2d-x 3.17.2 調用cocos studio釋出的csb檔案,遇到按鈕圖檔顯示不正常問題