如果某些条件成立,如何重复行动?

时间:2015-07-09 19:00:24

标签: ios algorithm swift sprite-kit

var action = SKAction.sequence([
                 SKAction.waitForDuration(1),
                 SKAction.runBlock({
                      //Some code
                 })
             ])

我希望上述操作在某些条件成立时继续重复。我怎么能这样做?

我知道我可以使用runAction(action)执行一次操作,或使用runAction(SKAction.repeatActionForever(action))永久重复操作。虽然某些情况属实,我怎么才重复呢?

如果使用动作无法做到这一点,那么在某些条件成立时我是否可以选择重复这些步骤(显然,在单独的线程上,我不希望这会冻结我的应用程序):

1)等一下

2)执行代码块

3)检查条件是否为真。如果它停止重复。否则,重复一遍。

我对使用sleep()犹豫不决,因为这听起来像是一个糟糕的解决方案,而苹果公司不允许在他们的商店中使用应用程序。

2 个答案:

答案 0 :(得分:5)

使用Swift的替代解决方案:

runAction(
     SKAction.repeatActionForever (
           SKAction.sequence([
                SKAction.waitForDuration(1),
                SKAction.runBlock({
                      //Code you want to execute
                      if conditionIsTrue {
                            self.removeActionForKey("New Thread")
                      }           
                })
           ])
     ),
     withKey: "New Thread"
)

答案 1 :(得分:2)

您可以使用SKAction的

  • (SKAction *)runBlock :( dispatch_block_t)块              队列:(dispatch_queue_t)队列

您可能想要创建一个块。在内部只检查变量,然后相应地应用你的逻辑,一旦条件不再为真,你可以从对象中删除它。

如果要在声明前修改变量add __ block

 this.getServices = function (pageSize, ServiceCategoryId) {
           return $http({
            method: "post",
            url: "/Home/Services_PageSize?pageSize=" + pageSize + "& ServiceCategoryId=" + ServiceCategoryId

        });
很容易就像我的男孩苹果派一样