Rotation animation issue on iPhone5S with cocos2d 2.0

I am creating a CCSprite rotating animation with cocosbuilder2.1, cocos2d 2.0. It works great on iPhone4S (iOS 8.0.2), iPhone5 Simulator, iPad 2 Simulator, iPad Retina Simulator, but has a “trembling” problem on iPhone5S (iOS 7.1.1), iPhone5S Simulator, iPad Air Simulator, iPhone 6 Simulator, iPhone 6 Plus Simulator. The build setup is as follows:

In the build settings in the "Goals" section:

Base SDK = Latest iOS (iOS 8.0); Valid architectures = arm64 armv7 armv7s

In general, by target objects:

Deployment Goal = 6.0

At first I thought it was a bug in cocosbuilder, but after testing, manually creating a sprite that rotates and has the same problem, I feel that something is wrong with cocos2d 2.0 compatibility with iPhone5S.

code: in the layer of the first scene

-(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
}

The jitter problem appears as if the rotation value of testSprite was set to 0, each time it was set to the correct value. for example, He seems to be turning 1, then back to 0, then 2, then back to 0, 3, 0, 4, 0 ... etc. And all this happens very quickly, which makes it “blink”. Finally, the rotation always reset is 0.

I tried google but did not find anything related as if this is a very personal problem. If this is a personal problem, let me know in which direction I should work to find where the error is, thanks!

+3
source share
2 answers

, , , armv7. , , iPhone4S, .

============== Update =================

, . " " setRotation ". : ARC " 'setRotation'"

cocos2d v2.2 ( 3), .

, , , 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.

+14

! ! ! !

0

Source: https://habr.com/ru/post/1531867/


All Articles