使用cocos2d 2.0的iPhone5S上的旋转动画问题

艺术

我正在使用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 Plus模拟器。构建设置如下:

在目标下的构建设置中:

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

通常在目标下:

部署目标= 6.0

起初我以为这是cocosbuilder中的错误,但是经过手动旋转精灵的测试并遇到相同的问题后,我觉得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 everyFrame ater,它已被设置为正确的值。例如,就像它旋转到1,然后回到0,然后回到2,然后回到0、3、0、4、0 ...等等。所有这些都很快发生,这使其“闪烁”。最后,旋转始终重置为0。

我尝试了google,但没有找到任何相关内容,好像这是一个非常个人的问题。如果是个人问题,请告诉我应该朝哪个方向查找错误的位置,谢谢!

艺术

尽管现在仍然确定是什么导致了此问题,但我还是通过将有效架构更改为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];
}

通过此更改,现在我也可以支持arm64。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章