调用函数并可以编码的SKAction?

时间:2015-01-07 16:34:39

标签: swift sprite-kit

我正在使用SpriteKit和swift制作游戏。我的一些节点有runBlock动作调用函数:

SKAction.runBlock(someFunction)

当我使用NSCoder对场景进行编码和解码时,我在控制台中打印了此消息

SKAction: Run block actions can not be properly encoded,
Objective-C blocks do not support NSCoding.

Swift不支持选择器SKActions,所以如何解决这个问题。

TL; DR: 如何进行调用函数且可编码的SKAction?

  • 还有其他类型的SKAction吗?

  • 我应该创建一个客户SKAction子类吗?

非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:2)

你不能,也没有真正的选择。块无法编码。

如果可能的话,你可以做的就是尝试让代码在没有阻止操作的情况下工作。

答案 1 :(得分:0)

SKAction performSelector可以完成工作,虽然它有点乱。

主要的烦恼是:

  1. 将参数传递给选择器;以及

  2. 替换customActionWithDuration:runBlock

  3. 为了解决这两个问题,我将选择器调用包装在一个轻量级对象中,该对象与相应的SKAction一起编码。

    我的结果正在进行中。我正在记录StackOverflow问题上的工作here(如果我看过它,我会用你的,抱歉!)。

    我的代码(实现轻量级包装器对象)是here