【问题标题】:How do I get the index of frame in a animation如何获取动画中帧的索引
【发布时间】:2016-04-08 05:56:06
【问题描述】:

我目前正在 Swift 中使用 SpriteKit 制作游戏,并使用 animateWithTextures() 为不同的动作制作动画。现在我的问题是如何在动画结束之前获取当前帧的索引? 我需要获取 ID 的原因是因为有时我需要在操作完成之前取消操作,但不能太早。例如,我有一个包含 10 帧的动作,玩家只能在第 6 帧之后取消该动作?另外,我以后可能还会使用该帧来检查动画的过程。

【问题讨论】:

  • 我现在在 SO 上找不到它,我之前已经回答过这个问题,但是无法确定它本身所在的框架。您需要创建自定义 SKAction,或者覆盖我认为的 texture 属性以确定显示的纹理
  • 如何获取当前纹理或其名称?还是有其他方法可以更好地控制动画的持续时间?程序员需要做的,SpriteKits 开发人员会意识到动画中的检查开始或完成应该远远不止这些,对吧?
  • self.texture,你不知道它的名字,你必须比较纹理。至于你的第二个问题, animateWithTextures 只是一个数组,所做的一切都是黑盒的,以保持简单。这就是为什么我们为您需要的高级功能提供自定义动画的原因
  • 我们不能得到纹理的文件名吗?尝试使用 print(myTexture) 并得到结果:可选(“ \'filename.png\' (100 x 100)”)。但仍然找不到获取“filename.png”的方法。
  • 也许你使用纹理的方式和我不同,我用的是图集

标签: swift animation sprite-kit skaction


【解决方案1】:

你可以这样做:

        if String(yourSprite.texture).rangeOfString("frameImageName") != nil {
            //code to stop animation 
            }

因此,如果您将这段代码放在更新函数中,则每次调用该函数时都会检查帧,您可以轻松地在正确的点停止动画。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多