如何在sks文件“SpriteKit动作”中的Xcode动作编辑器上获取所有动作的名称

时间:2016-05-20 18:03:19

标签: ios xcode swift sprite-kit skscene

我有一个SpriteKit动作文件,里面有一些动作。

enter image description here

要使用一个动作,我使用:

let action = SKAction(named: "Shake")

可以直接使用 MyActions.sks 文件中的名称? 类似:

let actions = SKScene(fileNamed: "MyActions.sks")`  
let shakeAction = actions.listOfAction.Shake //this is my guess

如果我打印场景文件:

let actions = SKScene(fileNamed: "MyActions.sks")
print(actions)

输出为:

Optional({
    "_info" =     {
        "_previewScenePath" = "PippiPompiere/GameScene.sks";
    };
    actions =     {
        PlayerIdle1 = "<SKGroup: 0x79e60ec0>";
        PlayerMoveToHouse0 = "<SKGroup: 0x7b1ea010>";
        PlayerMoveToHouse1 = "<SKGroup: 0x7b052cd0>";
        PlayerMoveToHouse2 = "<SKGroup: 0x7b1ebbd0>";
        Rotate360 = "<SKGroup: 0x79e61710>";
        Shake = "<SKGroup: 0x79e60a10>";
        SunShake = "<SKGroup: 0x7b1e8620>";
        WaterJet = "<SKGroup: 0x7b1e8ce0>";
    };
})
(lldb) 

可以像数组一样进行操作吗?

感谢

2 个答案:

答案 0 :(得分:2)

AFAIK,您可以从.sks文件中获取操作字典。在这里,我有一个MyCustomActions.sks文件,其中的操作为 Pulse

guard
    let node = SKNode(fileNamed: "MyCustomActions"),
    let actions = node.value(forKey: "actions") as? [String:SKAction],
    let pulse = actions["Pulse"]
else { return }

print(pulse.duration)  // 0.6 seconds

从这里开始,您可以从struct词典中实现自己的actions

获取所有操作的名称,

let actionNames = actions.map { $0.key }  // ["Pulse"]

答案 1 :(得分:0)

最简单的方法是创建一个动作文件(通过XCode模板选择器或在GameScene.sks文件中使用“ createAction-> NewFile”选项)。

操作文件的名称无关紧要;您在此类文件中创建的任何操作均可通过SKAction(name:)

获得
 if let shake = SKAction(named: "Shake") {
                myNode.run(shake)
            }