Cocos2d-x扩展类中UIImageView类的使用疑问
更新:HHH   时间:2023-1-7


   这篇博文中,主要将自己今天在项目中使用UIImageView类时遇到的一些问题写下来,其中涉及到一些不去尝试可能就不会知道的东西。


   最近两天刚接触CocoStudio,在项目中使用了用它导出的文件,其中用到了一个图片控件,他在cocos2d-x中对应的类是UIImageView,本想通过Tag来获取该类的一个对象,并通过他的runAction方法为他绑定一个序列帧动作的,但在运行时却发现没有自己想的那么简单,运行时会产生内存异常。经过一番百度谷歌后都没看到解决方法,但倒是在CocoChina论坛中找到了同命相连的人,他最终采用的方法是使用Armature加载cocostudio动作编辑器产生的动作,但由于Z轴次序问题,还是不太适合自己的项目。想想使用普通精灵来代替,但发现Z轴次序的问题同样存在。好吧,没办法,要么放弃这个从Cocostudio导出的UI,自己代码编写,要么继续探索,。。。好吧,我还是选择继续探索吧。最终在群里的群里网友的提示下,“遍历”了一遍UIImageView类的方法,发现该类有一个值得一试的方法:setTexture,他可以实现更换该类对象的纹理,ok,咱自己来实现帧动画,方法很简单:注册一个定时器,时间间隔是帧动画的帧间隔,然后在他的回调中按照帧的顺序来更换UIImageView类对象的纹理,经过测试,基本通过。


   虽然眼前的问题得到了解决,但这种方法却也不值得提倡,首先我的cocos2d-x版本是2.2.0,其中对UIImageView类setTexture方法的描述是,该方法将被废弃。。。,其二,该方法无重载,并且参数是const char* fileName。。。这意味着,每一帧都需操作IO,这对那些对流畅度要求较高的帧动画将是致命的打击。


   个人对Cocos2d-x目前还属初学,对于内部实现原理还不太清楚,期待大家能找到更好的解决方法,并分享出来!

返回游戏开发教程...