使用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了。
- 在启用ARC的C代码中执行Objective-C代码时,运行时内存泄漏警告
- 在Cocos2d中,多层次的button,我怎样控制哪个button对用户的触摸做出反应?
- 得到消息“警告:在正常情况下,_fillInQueueWithExtraSpace:..”和MPMoviePlayer旋转不工作在iPad IOS 5.1
- Cocos2D +仅禁用Retina iPadgraphics
- CCScrollView滚动和触摸事件永不开火
- pipe理通用ios应用程序中的资源
- Cocos2d 3.0 + Chipmunk + CCAnimation:将animation物体移动到物体上。 怎么样?
- cocos2d v3支持多屏分辨率?
- Objective-C类别和新的iVar