iphone – 等到CCMoveTo完成?

我正在使用cocos2d进行BlackJack游戏,并且存在一个我似乎无法找到解决方案的问题.我正在尝试像这样制作初始交易屏幕:

>第一张卡精灵将从屏幕外移动到玩家手中
>第二张卡精灵将从屏幕外移动到经销商手中
>第三 – >播放机
>第四 – >零售商

为此,我从Player和Dealer类中调用drawCard方法:

[self.player drawCard];
[self.dealer drawCard];
[self.player drawCard];
[self.dealer drawCard];

在drawCard方法中:

-(void) drawCard {
.......
id move = [CCMoveTo actionWithDuration:0.4 position:ccp(x, y)];
        [card.sprite runAction:move];
......
}

我希望第一张卡在第二张卡开始移动之前完成移动到指定位置,但实际上所有4张卡几乎在同一时间开始移动.请帮我解决这个问题:(

最佳答案 你可以在2路上完成1.使用CCDelayTime 2.使用CCCallBlock

1.使用CCdelayTime

   [self.player drawCard:0]; 
   [self.dealer drawCard:0.5f]; 
   [self.player drawCard:1.0f]; 
   [self.dealer drawCard:1.5f];

    -(void) drawCard:(float)delay
    {
       if(!delay)
       {
          id move = [CCMoveTo actionWithDuration:0.4 position:ccp(x, y)];
          [card.sprite runAction:move];
       }
       else
       {
          id delay    = [CCDelayTime actionWithDuration:delay];
          id move     = [CCMoveTo actionWithDuration:0.4 position:ccp(x, y)];
          id sequence = [CCSequence actions:delay, move, nil];
          [card.sprite runAction:sequence];
       }

    }

2.使用CCCallBlock

    -(void) drawCard:(id)inCard
    {
        mCardIndex++; //in init mCardIndex=0

        id move    = [CCMoveTo actionWithDuration:0.4 position:ccp(x, y)];
        id calBlk  = [CCCallBlock actionWithBlock:^{

                            if(mCardIndex <= TOTAL_CARD)
                            {
                                //here get rightCard
                                [self drawCard:newCard];
                            }
                    }];
        id sequence = [CCSequence actions: move, calBlk,  nil];

        [inCard.sprite runAction:sequence];    
    }
点赞