安卓平台上,帧动画发生不规则抖动

我用的引擎自带的Animation类做的帧动画(就是几张相同尺寸的图片轮流切换,没有涉及spine之类的东西),资源是用texturepacker打包的。帧动画在pc上运行效果完美,在安卓平台上就不行了,肉眼可见每一帧都有不规则的轻微抖动和拉伸,效果极为难看。由于我的代码和资源在两个平台上都是完全相同的,而我完全没有修改过引擎代码(我用的是v3.9,此外试过3.8.1也没作用,另外网上资料显示3.9以后的所有版本都有同样问题),所以我只能认为这是引擎内部的bug。
我在网上搜了一下,这个问题在2014年就已经有人发帖询问了,但是直到现在都没有官方回复和修复。我很想知道到底官方怎么看,这个bug是没有修复的价值?还是说这不是bug?那么我要怎样才能正确显示帧动画??

1赞

自顶,求有识之士解答

帧动画用什么做的?

没有使用任何第三方动画软件(包括cocos studio之类的都没用过),仅仅就是几张尺寸相同的图片轮流切换而已(纯代码组成CCAnimation的实例再用sprite播放)。具体来说,我做的是战棋游戏,每个地块和兵种都有一些简单的小动画,都是通过切换图片来造成动画效果的。但就是这么简单的功能,cocos都存在bug,而且最迟从2014年就有人报告了但依然没有修复,实在令人心寒。

我不知道问题出在哪,就是想问一下:帧动画每一帧的图片尺寸都一样吗?如果尺寸有一两个像素的差别会不会造成这种抖动呢?

代码和图片尺寸是完全一致的,这个帧动画在pc上运行是完美的没有任何抖动,在安卓上(有人发帖说过ios上也一样)有抖动,所以我认为我的的代码和资源应该没有问题,bug应该出自引擎内部。

那建议你建一个新工程,做一个一打开游戏就能复现问题的帧动画发到论坛上或者私信给引擎开发人员,然后@一个引擎开发人员帮你瞧瞧。

尺寸别太大,最好2的n次方

谢谢提醒,这就发上来。
AnimationBug.zip (777.0 KB)
重现步骤:

  1. cocos2d-x v3.9(或以后任何版本)新建cpp工程
  2. 用附件里的HelloWorldScene.cpp替换工程里的同名文件,并把plist和png文件放到res文件夹
  3. 编译成apk放在安卓设备上运行
    再次重复,这个bug在pc上正常,在安卓上(网上有人反馈ios上,以及更旧版本的引擎也都)有问题。这问题真的非常令人恼火,其不仅使得动画抖动,还使得sprite错位(在我的游戏中,Scale9Sprite,普通Sprite都出现了错位),所以不该是个可以忽视的问题。请引擎组各位大佬帮忙看看,谢谢!

帮你@minggo

我也遇到这个问题,资源没有用texturepacker大包过是没问题,打包以后就会出现抖动。。

嗯,请问你们最后怎么解决的呢?我是没办法了,官方的人又不出来表态:(

召唤 @minggo

你用了TP 是会出现这个问题。用cocostudio吧,他们俩出来的数据标准有偏差,差了0.5-1个像素

你用了TP,还说没用任何第三方

我说的第三方动画软件,主要是指spine、dragonbone之类的东西,TP不是动画软件吧?cocos studio已经没人维护了,我当然希望能不用就不用,再说TP打包出来的资源在pc上运行没有任何问题,那么我得出“这是引擎的bug”这个结论也没错吧?

PC跟手机分辨率不一样,可能PC上也有问题,你看不出来而已,解决方法是,不用TP,

继续自顶.exe

。。。。哥们 别用TP打包。说了 呀

额……我下载了cocos studio,发现找不到打包的地方……另外,我用到了tp的extrude功能以避免游戏中密拼的图块之间出现黑线,不知道studio有没有类似的功能?