访问场景编辑器中定义的操作

3
我有一个使用SpriteKit的应用程序,用户输入后会在不同场景之间进行转换。我已经在单独的.sks文件中定义了所有场景,并且每个场景都包含有一个带有转换SKAction(来自于对象库中的AnimateWithTextures动作)的Sprite。
我想要实现的是允许用户在设置中设置转换持续时间。为此,我需要访问场景中的SKAction,但似乎找不到以编程方式访问它的方法。我知道我可以使用run: withKey:从代码中运行动作时设置一个键,但我能否从场景编辑器中设置此键呢?

这个问题的答案也包含了从场景中提取动作的代码:https://dev59.com/cpffa4cB1Zd3GeqP5UOU - Jeff
1个回答

3
如果您将操作放置在SKScene文件中,则它将在提供的时间轴上触发,您将无法抓住并保持它。但是,您可以在场景文件中的时间轴表格上使用CMD +单击所需的操作,并将其保存为引用。这将创建一个包含您的操作的sks文件。
现在您已经有了一个操作文件中的操作,您可以使用SKAction(named:"actionname")来提取它。
如果这是您将要反复使用的操作,我建议将其存储到变量中,并在需要时只调用变量。

好的,我将“in”和“out”转换为一个单独的文件,并通过对象库将它们添加到场景中。我可以在代码中访问它们,但是当我在didMove(to view: SKView)函数中使用intro.duration = 1来更改持续时间时,它不起作用。我是在错误的函数中进行更改还是我的整体方法有问题? - smeshko
你的引入效果是淡入淡出吗? - Knight0fDragon
我也尝试访问该操作,更改其持续时间,然后通过“run”函数手动运行它,但仍然无法正常工作。 - smeshko
不,这不是淡入淡出,而是带有纹理的自定义动画。 - smeshko
1
如果您想更改持续时间,可以使用 SKAction(named:"actionname",duration:newDuration) - Knight0fDragon
啊,没错,那就可以了!请更新你的答案。 - smeshko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接