由于代码开发UI效率较低,有时候需要用cocos studio来制作场景,再在C++中调用
遇到一个问题被忽略了,添加一个Button按钮,在游戏中动态的修改按钮的图片
经过测试,发现很多问题
环境说明:
cocos2d-x版本:Cocos2d-x 3.17.2
Android编译器:Android studio 3.5.3用的是cmake方式编译
C++编译器:Visual studio 社区版
Java版本:jdk1.8.0_91
SDK API版本:API 28
NDK版本:android-ndk-r19c
问题一:
Button按钮图片在运行时使用loadTextures动态读取本地png文件时会显示不正常,如:
button->loadTextures("res/1.png","res/2.png","res/3.png",ui::Widget::TextureResType::LOCAL);
这时候图片在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");
在析构位置加入:
mSpriteFrame->destroyInstance();
在要使用图片的位置加入:
ui::Widget::TextureResType::PLIST 表示从精灵框架中根据文件名读取
button->loadTextures("1.png", "2.png", "3.png", ui::Widget::TextureResType::PLIST);
这样操作就能正常的动态显示图片了
问题二:
在动态的修改Button按钮后你会发现按钮随便大小没有改变,但是图像却变得扭曲、变形、显示不正常
如果动态的图片比原来的大,按钮也变大了可以在设置图片之后代码处重新设置一下大小
这个问题找了好久,最后发现原来是cocos studio在作怪,需要把九宫格取消,问题就解决了