带有cocos2d 2.0的iPhone5S上的旋转动画问题

Art*_*rtS 3 cocos2d-iphone ios cocosbuilder

我正在使用cocosbuilder2.1,cocos2d 2.0制作CCSprite旋转动画.它适用于iPhone4S(iOS 8.0.2),iPhone5模拟器,iPad 2模拟器,iPad Retina模拟器,但在iPhone5S(iOS 7.1.1),iPhone5S模拟器,iPad Air Simulator,iPhone 6模拟器,iPhone上有"抖动"问题6加模拟器.构建设置如下:

在目标下的构建设置中:

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

一般情况下目标:

部署目标= 6.0

起初我认为这是cocosbuilder中的一个错误,但是在通过手动制作旋转并且具有相同问题的sprite进行测试后,我觉得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
}
Run Code Online (Sandbox Code Playgroud)

"抖动"问题就好像testSprite的旋转值已被设置为0 everyFrame,它被设置为正确的值.例如,它旋转为1,然后回到0,然后回到2,然后回到0,3,0,4,0 ......等等.所有这些都很快发生,这使得它有点"眨眼".最后,旋转始终重置为0.

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

Art*_*rtS 14

虽然现在仍然确定导致此问题的原因,但我通过将有效架构更改为armv7来解决它.此构建设置不会利用比iPhone4S更新的设备上的新架构,但至少不会导致抖动问题.

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

我发现了一个与此问题相关的警告."多个方法名为'setRotation'"参见相关问题:ARC语义问题"多个方法名为'setRotation'",仅归档

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

最后我使用类型转换来解决它在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];
}
Run Code Online (Sandbox Code Playgroud)

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