当前位置: 首页 > 面试题库 >

SKAction完成处理程序;Swift中的用法

文建业
2023-03-14
问题内容

我是Swift和SpriteKit的新手。SpriteKit Actions的许多示例都在Objective
C中,在Swift中我无法映射到它,也无法使用。

如果运行SKAction,并且在完成SKAction后又想做其他事情,那么如何在Swift中做到这一点呢?

    spaceMan.runAction(spaceManDeathAnimation, completion: {
        println("red box has faded out")
    })

任何想法将不胜感激。

编辑:

for i in 0...29 {
    textures.append(SKTexture(imageNamed: "spaceManDeath_\(i)"))
}
spaceManDeathAnimation = SKAction.repeatActionForever(SKAction.animateWithTextures(textures, timePerFrame: 0.15625))

问题答案:

您的完成代码不会被调用,因为您的“死亡”操作将永远运行,这意味着它永远不会结束。

您可以使用

+ repeatAction:count:

设置在完成之前将进行多少次重复计数的方法:

spaceManDeathAnimation = SKAction.repeatAction(SKAction.animateWithTextures(textures, timePerFrame: 0.15625), count:5)


 类似资料:
  • 我目前正在学习swift,几个小时以来我一直在试图理解一个错误。由于查询,我试图从php脚本中获取一个xml文件,我使用一个完成处理程序作为回调来获取这些查询的结果。 问题是我对这些技术感到不舒服,它说缺少论据。 下面是使用完成处理程序的函数: 这是我调用这个函数的一段代码: 这段代码显示有关调用连接的此错误: 我做错了什么?为什么它要两个参数? 非常感谢您的帮助。 埃尔巴托

  • 我试图更准确地理解斯威夫特的“关闭”。 但是和太难理解了 我搜索了许多Swift帖子和官方文件,但我觉得这仍然不够。 这是官方文件的代码示例 听说使用< code>@escaping有两种方式和原因 第一个用于存储闭包,第二个用于异步操作目的。 以下是我的问题: 首先,如果执行,则将使用闭包参数执行,并且该闭包将保存在全局变量数组中。 我认为闭包是{self.x=100} {self.x=100}

  • 问题内容: 我正在试图做的是传递给函数,然后使用传递通过设置将返回。 我在中创建闭包时遇到了问题, 它引发了编译器错误/崩溃: 在斯威夫特,是根据文档应该包含的对象,就像Objective-C的版本。 这是我当前的代码: 编辑:似乎错误与不被视为数组有关。现在编译,但是我想集的时候得到什么,但无内。我检查了传递的,它们是有效的。 编辑2:打印后,我可以确认它返回了数据。但是仍然返回nil。 问题答

  • 问题内容: 我在Utilities类中使用loadImage方法,并且在通过闭包返回图像时遇到了一些麻烦。基本上因为我的代码可能返回图像或错误,所以在调用该方法时将其分配给image属性是行不通的。 我在类的方法声明中使用的方法是否错误,还是应该以不同的方式调用该方法以预期潜在的不同结果?谢谢 问题答案: 将处理程序添加到您的 loadImage 函数中: 迅捷3 像这样调用func: 斯威夫特2

  • 问题内容: 我正在创建一个返回Dictionary的,但是当我在另一个类中调用此方法时,其值为nil。 然后,我尝试在另一个类中调用它,以便可以查看Dictionary 的值并基于该值显示数据。例如, 这里的问题是,当我调用函数时,我在尝试调用字典时收到一个值。 简而言之,我的问题是如何为完成处理程序分配值并在Xcode项目中的其他位置调用它? 问题答案: 您的问题很乱。您的示例代码无效,并且没有

  • 我正在制作一个显示化学反应动画的应用程序。每个原子都是一个SCNSphere,并用SCNActions动画。我试图使用runAction()中的完成处理程序在当前操作完成后调用下一个动画,因为每个原子必须进行许多不同的运动。 这只是我为简化过程而编写的一些测试代码,实际代码将在对象数组中循环。 语句工作正常,只有在操作完成后才会调用它,但是新的SCNAction不会触发。我是否遗漏了什么来启动下一