使用cocos2d 2.0的iPhone5S上的旋转animation问题

我正在用cocosbuilder2.1,cocos2d 2.0制作CCSprite旋转animation。 它在iPhone4S(iOS 8.0.2),iPhone5模拟器,iPad 2模拟器,iPad视网膜模拟器,但在iPhone5S(iOS 7.1.1),iPhone5S模拟器,iPad Air模拟器,iPhone 6模拟器,iPhone上有“抖动” 6 Plus模拟器。 构build设置如下所示:

在“目标”下的“生成设置”

基础SDK =最新的iOS(iOS 8.0); 有效的体系结构= arm64 armv7 armv7s

一般目标下:

部署目标= 6.0

起初我以为这是一个在cocosbuilder中的bug,但是通过手动做出一个精灵旋转和相同的问题进行testing之后,我觉得在cocos2d 2.0与iPhone5S的兼容性方面有些问题。

代码:在第一个场景的图层中

-(void)onEnter { [super onEnter]; ...//play music ...//load image resources CCSprite *testSprite = [CCSprite spriteWithSpriteFrameName:@"testIMG.png"]; testSprite.position = ccp(200,200); [self addChild:testSprite]; CCRotateBy *rotateAction = [CCRotateBy actionWithDuration:3 angle:360]; [testSprite runAction:rotateAction]; ...//other stuff, nothing related with CCBReader or cocosbuilder } 

“抖动”问题就好像testSprite的旋转值已经设置为0,每帧都被设置为正确的值。 例如它就像旋转到1,然后回到0,然后回到2,然后回到0,3,0,4,0 ……等等,所有这些发生得非常快,这使得它有点“闪烁”。 最后,旋转总是重置为0。

我试过谷歌它,但没有发现任何相关的,好像这是一个非常私人的问题。 如果是个人问题,请告诉我应该朝哪个方向寻找错误,谢谢!

虽然现在仍然确定是什么原因导致了这个问题,但我通过将有效架构更改为armv7来解决这个问题。 这种构build设置不会利用比iPhone4S更新的设备上的新体系结构,但至less不会引起抖动问题。

==============更新=================

我发现一个与这个问题有关的警告。 “多个方法命名为”setRotation“”查看相关问题: ARC语义问题“多个方法命名为”setRotation“”而仅存档

尽pipe我已经将cocos2d升级到了我的旧项目的v2.2版本(太复杂到无法升级到v3),但我仍然收到警告。

最后,我使用types转换来解决它,如下CCBAnimationManager.m

 @implementation CCBRotateTo -(void)startWithTarget:(CCNode *)aTarget { [super startWithTarget:aTarget]; starAngle_ = [(CCNode *)self.target rotation]; diffAngle_ = dstAngle_ - startAngle_; } -(void)update:(ccTime)t { [(CCNode *)self.target setRotation: startAngle_ + diffAngle_ * t]; } 

有了这个改变,现在我也可以支持arm64了。