【问题标题】:SKAction that calls function and can be encoded?调用函数并且可以编码的SKAction?
【发布时间】:2015-01-07 16:34:39
【问题描述】:

我正在使用 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 子类吗?

非常感谢任何帮助:)

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    你不能,而且没有真正的选择。块不能被编码。

    如果可能的话,您可以尝试让您的代码在没有阻止操作的情况下运行。

    【讨论】:

    • 谢谢,我想我可以在init(coder:) 中再次将动作添加到节点。
    【解决方案2】:

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

    主要的烦恼是:

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

    2. 替换customActionWithDuration:runBlock

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多