2011-07-19 16 views
0

私は3つの画像(スプライト)を画面の中央から画面の中央にアニメーション表示しています。私は以下のコードを書いたが、それをより効率的にコーディングする方法があるのだろうかと思っていた。CCSpriteの効率的なアニメーション

-(void) displayMenu 
{ 
    CGSize screenSize = [[CCDirector sharedDirector] winSizeInPixels]; 

    CCSprite* menuItemBottle = [CCSprite spriteWithFile:@"btn_i_have_norm.png"]; 
    menuItemBottle.position = ccp((screenSize.width * 2), 600.0f); 
    menuItemBottle.contentSize = screenSize; 
    menuItemBottle.scale = 1; 
    [self addChild:menuItemBottle z:0 tag:4]; 

    CCSprite* menuItemAdvert = [CCSprite spriteWithFile:@"btn_see-ad_norm.png"]; 
    menuItemAdvert.position = ccp((screenSize.width * 2), 500.0f); 
    menuItemAdvert.contentSize = screenSize; 
    menuItemAdvert.scale = 1; 
    [self addChild:menuItemAdvert z:0 tag:5]; 

    CCSprite* menuItemNoBottle = [CCSprite spriteWithFile:@"btn_dont-have_norm.png"]; 
    menuItemNoBottle.position = ccp((screenSize.width * 2), 400.0f); 
    menuItemNoBottle.contentSize = screenSize; 
    menuItemNoBottle.scale = 1; 
    [self addChild:menuItemNoBottle z:0 tag:6]; 

    CGPoint newPointBottle = CGPointMake(screenSize.width * 0.5f + 50, 600.0f); 
    CCMoveTo *moveBottle = [CCMoveTo actionWithDuration:0.7f position:newPointBottle]; 
    CCSequence *sequenceBottle = [CCSequence actions:moveBottle, nil]; 
    [menuItemBottle runAction:sequenceBottle]; 

    CGPoint newPointAdvert = CGPointMake(screenSize.width * 0.5f + 50, 500.0f); 
    CCMoveTo *moveAdvert = [CCMoveTo actionWithDuration:0.7f position:newPointAdvert]; 
    CCSequence *sequenceAdvert = [CCSequence actions:moveAdvert, nil]; 
    [menuItemAdvert runAction:sequenceAdvert]; 

    CGPoint newPointNoBottle = CGPointMake(screenSize.width * 0.5f + 50, 400.0f); 
    CCMoveTo *moveNoBottle = [CCMoveTo actionWithDuration:0.7f position:newPointNoBottle]; 
    CCSequence *sequenceNoBottle = [CCSequence actions:moveNoBottle, nil]; 
    [menuItemNoBottle runAction:sequenceNoBottle]; 

} 
+0

実行速度が速く、コードが少なく効率的ですが効率的ですか? – lins314159

+0

コードが少なく、実行速度が速い場合は素晴らしいです! – daidai

答えて

0

すべてのアクションを1行にまとめることができます。最初のものは次のようになります:

[menuItemBottle runAction:[CCMoveTo actionWithDuration:0.7f position:ccp(screenSize.width * 0.5f + 50、600.0f)]]];

アクションの外でポジションを定義する場合は、引き続きそのアクションを実行できます。 CCSequenceは、同じオブジェクトに対してアクションを連続して実行する場合(つまり、移動アクションが実行され、終了したときに回転アクションが実行される場合)のためのものです。

また、私はそれがすでにそれに設定されていると信じて、それぞれの画像のスケールを1に設定する必要はないと思います。

関連する問題