我正在使用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];
}