Метод SKAction fadeInWithDuration не работает

Я работаю над созданием шарового узла, и я добавляю шаровой узел с альфой, установленной на 0,01, и в документации fadeInWithDuration должен сделать альфу 1,0. Я ставлю точку останова, и метод вызывается, но он не вызывает появление шарового узла.

-(void)addBallToFrame {
    _ballNode = [SKSpriteNode spriteNodeWithImageNamed:@"Ball"];
    SKAction *ballPosition = [SKAction runBlock:^(void) {
        _ballNode.position = CGPointMake(CGRectGetMidX(self.frame), 295*ratio);
        [_ballNode setZPosition:10];
        [_ballNode setAlpha:0.01];
        [self addChild:_ballNode];
    }];
    SKAction *timeForBallToAppear = [SKAction waitForDuration:1.5];
    SKAction *changeAlpha = [SKAction fadeInWithDuration:0.5];
    SKAction *ballAppearSequence = [SKAction sequence:@[timeForBallToAppear, ballPosition, changeAlpha]];   
    [self runAction:ballAppearSequence];
    _ballNode.zPosition = 10;
    [_ballNode setPhysicsBody:[SKPhysicsBody bodyWithCircleOfRadius:_ballNode.frame.size.height / 2.0]];
    _ballNode.physicsBody.categoryBitMask = BALL_CATEGORY;
    _ballNode.physicsBody.collisionBitMask = WALL_CATEGORY | PLAYER_ONE_CATEGORY | PLAYER_TWO_CATEGORY | GOAL_POST_CATEGORY;
    _ballNode.physicsBody.contactTestBitMask = GOAL_ONE_CATEGORY |GOAL_TWO_CATEGORY;
    _ballNode.physicsBody.friction = 0.0;
    _ballNode.physicsBody.linearDamping = 0.0;
}
-(void)removeBallFromFrame {
    _ballNode.position = CGPointMake(-100, -100);
    [self.ballNode removeFromParent];
}

person user3808710    schedule 20.07.2014    source источник


Ответы (1)


Это потому, что вы выполняете действие changeAlpha для self вместо _ballNode. Попробуйте изменить

 [self runAction:ballAppearSequence];

to

 [_ballNode runAction:ballAppearSequence];
person Andrey Gordeev    schedule 20.07.2014