【问题标题】:Rotation animation issue on iPhone5S with cocos2d 2.0带有 cocos2d 2.0 的 iPhone5S 上的旋转动画问题
【发布时间】:2014-10-16 05:11:57
【问题描述】:

我正在用cocosbuilder2.1、cocos2d 2.0制作CCSprite旋转动画。它在 iPhone4S(iOS 8.0.2)、iPhone5 Simulator、iPad 2 Simulator、iPad Retina Simulator 上运行良好,但在 iPhone5S(iOS 7.1.1)、iPhone5S Simulator、iPad Air Simulator、iPhone 6 Simulator、iPhone 上存在“抖动”问题6加模拟器。构建设置如下:

在目标下的构建设置中:

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

一般在目标下:

部署目标 = 6.0

一开始以为是cocosbuilder的bug,后来手动让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
}

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

我google了一下,没找到相关的,好像这是个很私人的问题。如果是个人问题,请告诉我应该朝哪个方向努力以找到错误所在,谢谢!

【问题讨论】:

    标签: ios cocos2d-iphone cocosbuilder


    【解决方案1】:

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

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

    我发现了与此问题相关的警告。 “多个名为'setRotation'的方法”见相关问题:ARC semantic issue "multiple methods named 'setRotation' " while archiving only

    虽然我已将旧项目的 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];
    }
    

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

    【讨论】:

    • armv7s 不应该与 cocos2d 2.x 一起使用,将 v2.x 编译为 64 位代码是不安全的
    • 谢谢!我会在我正在进行的当前项目之后立即尝试最新版本的 cocos2d。
    • 我只想说它真的对我有帮助。非常感谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多