【问题标题】:Cannot convert value of type [AnyObject] to expected argument type [SKAction]无法将 [AnyObject] 类型的值转换为预期的参数类型 [SKAction]
【发布时间】:2015-09-22 22:35:31
【问题描述】:

关于第二行:

var actionArray:NSMutableArray = NSMutableArray()
human1.runAction(SKAction.repeatAction(SKAction.sequence(actionArray as [AnyObject]), count: -1))

在以前的 xCode 上工作正常,更新到新的 xCode 时出错。 如何摆脱错误?

错误:无法将 [AnyObject] 类型的值转换为预期的参数类型 [SKAction]

//////编辑:

    var actionArray = [SKAction]()
    actionArray.addObject(SKAction.moveTo(CGPointMake(posAutoY1, -3*frame.size.height/20), duration: NSTimeInterval(duration1)))
    actionArray.addObject(SKAction.removeFromParent())
    auto1.runAction(SKAction.sequence(actionArray as [SKAction]))

如果使用这些代码行,第一个错误得到解决,但我得到另一个错误:[SKAction] 类型的值没有成员 addObject

【问题讨论】:

    标签: xcode swift skaction


    【解决方案1】:

    使用 Append() 方法。

    anArray.append("This String")
    

    【讨论】:

      【解决方案2】:

      错误很清楚问题是什么:SKAction.sequence(_) 的预期参数是SKActions 的数组,而不是AnyObjects 的数组。您出于某种原因将actionArray 明确转换为[AnyObject];只需转换为[SKAction]

      human1.runAction(SKAction.repeatAction(SKAction.sequence(actionArray as! [SKAction]), count: -1))
      

      但是,首先将您的actionArray 声明为[SKAction] 会更好! NSMutableArray 是老派。

      var actionArray = [SKAction]()
      actionArray.append(SKAction.moveTo(CGPointMake(posAutoY1, -3*frame.size.height/20), duration: NSTimeInterval(duration1)))
      actionArray.append(SKAction.removeFromParent())
      auto1.runAction(SKAction.sequence(actionArray))
      

      【讨论】:

      • 您的第一个解决方案有效,但是当我将 mutablearray 声明为 SKAction 时,我收到另一个错误,请参阅编辑。
      • 是的,这个错误也很明显:Swift 的Array 没有addObject(_) 方法。但是,如果您查看 Xcode 中的文档,您会发现它有一个 append(_) 方法,可以满足您的要求。
      猜你喜欢
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2016-07-22
      • 2017-01-06
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      相关资源
      最近更新 更多