这篇博文中,主要将自己今天在项目中使用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目前还属初学,对于内部实现原理还不太清楚,期待大家能找到更好的解决方法,并分享出来!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。