2013-12-12 11 views
3

내가 한 아이가 모든 조치를 제외하고는 함께이 개 모양에서 수행됩니다있는 SKSpriteNode에 SKActions의 순서를 실행하려고에게있다 :크기 조정 SKSpriteNode 어린이

-(void)CreateCards{ 
for (int i=0; i<3; i++) { 
    SKSpriteNode *sprite=[SKSpriteNode spriteNodeWithImageNamed:@"default_circle.png"]; 
    SKSpriteNode *shape=[SKSpriteNode spriteNodeWithImageNamed:[self GetRandomImage]]; 
    [sprite addChild:shape]; 
    sprite.position=CGPointMake(-43, 345); 
    sprite.size=CGSizeMake(43, 43); 
    shape.size=CGSizeMake(43, 43); 


    SKAction *zoom=[SKAction group:[NSArray arrayWithObjects:[SKAction moveTo:CGPointMake(60, 345) duration:0.75],[SKAction resizeToWidth:80 height:80 duration:0.75], nil]]; 
    zoom.timingMode=SKActionTimingEaseOut; 

    SKAction *zoomOut=[SKAction group:[NSArray arrayWithObjects:[SKAction moveTo:[self GetLocationOfIndex:i NumberOfCircles:3] duration:0.5],[SKAction resizeToWidth:43 height:43 duration:0.5], nil]]; 

    zoomOut.timingMode=SKActionTimingEaseIn; 


    SKAction *enter=[SKAction sequence:[NSArray arrayWithObjects:[SKAction waitForDuration:1*i],zoom,zoomOut, nil]]; 
    [sprite runAction:enter]; 


    [self addChild:sprite]; 
} 

}

답변

9

는 대신 크기 조정의 scaling를 사용해야 원하는 효과를 달성하기 위해.

은 교체 :

SKAction *zoom=[SKAction group:[NSArray arrayWithObjects:[SKAction moveTo:CGPointMake(60, 345) duration:0.75],[SKAction resizeToWidth:80 height:80 duration:0.75], nil]]; 

으로 :

SKAction *zoom=[SKAction group:[NSArray arrayWithObjects:[SKAction moveTo:CGPointMake(60, 345) duration:0.75],[SKAction scaleXBy:80/43 y:80/43 duration:0.75], nil]]; 

다음 코드가 경우에 작동합니다 :

-(void)CreateCards{ 
for (int i=0; i<3; i++) { 
    SKSpriteNode *sprite=[SKSpriteNode spriteNodeWithImageNamed:@"default_circle.png"]; 
    SKSpriteNode *shape=[SKSpriteNode spriteNodeWithImageNamed:[self GetRandomImage]]; 
    [sprite addChild:shape]; 
    sprite.position=CGPointMake(-43, 345); 
    sprite.size=CGSizeMake(43, 43); 
    shape.size=CGSizeMake(43, 43); 

    CGFloat zoomScale = 80/43; 
    SKAction *zoom=[SKAction group:[NSArray arrayWithObjects:[SKAction moveTo:CGPointMake(60, 345) duration:0.75],[SKAction scaleXBy:zoomScale y:zoomScale duration:0.75], nil]]; 
    zoom.timingMode=SKActionTimingEaseOut; 

    SKAction *zoomOut=[SKAction group:[NSArray arrayWithObjects:[SKAction moveTo:[self GetLocationOfIndex:i NumberOfCircles:3] duration:0.5],[SKAction scaleXBy:1.0f y:1.0f duration:0.5], nil]]; 

    zoomOut.timingMode=SKActionTimingEaseIn; 


    SKAction *enter=[SKAction sequence:[NSArray arrayWithObjects:[SKAction waitForDuration:1*i],zoom,zoomOut, nil]]; 
    [sprite runAction:enter]; 


    [self addChild:sprite]; 
} 
} 
+0

감사합니다 :) –

+2

없음 문제 : 도와. 또한 일부 구문 설탕, [NSArray arrayWithObjects : ..., nil] 대신 @ [...]를 사용할 수 있습니다. ;) –