gpt4 book ai didi

objective-c - ios - 如何在方法中间造成延迟

转载 作者:行者123 更新时间:2023-12-01 19:18:44 27 4
gpt4 key购买 nike

我正在开发一款纸牌游戏,并试图让纸牌一张接一张地发牌。我有一个方法可以将卡片从牌组动画到玩家,并且在 viewDidLoad 我调用了这个方法四次。问题是所有四张牌都是同时发的。如何在一段时间内停止方法?

我知道 scheduleTimerWithTimeInterval 方法会在延迟后调用另一个方法,但我正在寻找一种方法来在调用一次 deal 方法后中断当前方法,然后继续当前方法的其余部分。 sleep() 也不起作用。我尝试将它放在对 deal 方法的调用之间,但它只是执行了所有 sleep()s,然后再次执行了所有动画。任何帮助深表感谢。谢谢!

最佳答案

你走错了路。尝试休眠一种方法不是解决此问题的方法。您希望将任务分解为要按顺序执行的步骤,并仅在前一步完成后执行每个步骤。

假设您有一个名为“cardCounter”的变量和一个名为“cardMax”的变量。然后你有一个叫做'dealCard'的方法。在 viewDidAppear您将“cardCounter”初始化为零,将“cardMax”初始化为4(或者要发多少张牌。然后调用“dealCard”方法。

(实际上,您可能想要一个名为 newGame 的方法或类似的东西,因为您可能想要拥有多个游戏,并且您不想将您的游戏设置与 viewDidAppear 事件联系起来。所以在 viewDidAppear 中,您会调用 ' newGame' 并在那里进行初始化。)

- (void)dealCard {

cardCounter++;

if (cardCounter > cardMax){
// all cards are dealt
// call some method to start game
// or do any other set up;

} else {

// call some method to animate the card
// using core animation with a completion handler?
// using a ^block with a completion handler?

// either way, in the completion handler call
// 'dealCard' again
}

关于objective-c - ios - 如何在方法中间造成延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11426579/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com