【问题标题】:SkSpritenode normal texture not restoring even with restore on?SkSpritenode正常纹理即使在恢复时也不会恢复?
【发布时间】:2017-03-30 22:36:30
【问题描述】:

好的。我在 SKTextures 和动画中遇到了一个非常奇怪的问题 - 我创建了一个像这样的精灵节点,并将正常纹理设置为我最终将动画通过的 sktextures 数组中的最后一个图像。纹理(非普通纹理)设置为数组中的第一个图像。

theSprite = SKSpriteNode()
        theSprite.texture = atlas[0]
        theSprite.normalTexture = atlas[atlas.count-1]
        theSprite.size = CGSize(width: 500, height: 1491)
        theSprite.position = CGPoint(x: basePos.x+1, y: basePos.y+2)
        superScene.addChild(theSprite)

点击后它会运行这个函数,正如我在此处阅读的 https://developer.apple.com/reference/spritekit/skaction/1417810-animate 我已将恢复设置为 TRUE,因此它应该在数组的最后一帧结束:

 let anim = SKAction.animate(with: atlas, timePerFrame: animSpeed, resize: false, restore: true)
            theSprite.run(anim, completion: {() -> Void in

            })

它应该回到正常纹理(这是一个空白图像),但它没有。回到这一点的唯一方法是,如果我没有将纹理设置为开始,我需要这样做。如何让它恢复?

【问题讨论】:

  • skyguy,我发布了一个答案。让我知道是否需要澄清任何事情。顺便说一句,你想用 normalTexture 做什么?
  • skyguy,我认为您需要明确说明有多少纹理以及您希望它们动画的顺序。这不仅可以澄清您的问题,还可以帮助您获得更好的答案。跨度>

标签: swift swift3 sprite-kit sktexture


【解决方案1】:

建议的解决方案

尝试将您的精灵设置为图集中的最后一个纹理,如下所示:theSprite.texture = atlas[atlas.count-1]。然后再次运行您的代码。您应该会看到它恢复到atlas[atlas.count-1]

如果您的动画在最后一个图集纹理以外的纹理处停止,那么您可以试试这个。在动画的完成块中设置theSprite.texture = atlas[atlas.count-1]。在这种情况下,您还可以将 restore 设置为 false。这将为您的精灵设置动画,然后将最终纹理设置为您想要的任何内容,在这种情况下,它将设置为最后一个图集纹理。

说明

Restore 会将您的精灵恢复到动画开始之前的纹理。因此,就您当前的代码而言,它应该以纹理atlas[0] 结束动画。正如您所说,它并不意味着在数组的最后一帧结束。

根据 Apple 开发参考,如果 restoretrue

动作完成后,精灵的纹理恢复到 动作完成前的纹理。 https://developer.apple.com/reference/spritekit/skaction/1417810-animate

【讨论】:

  • 但是如果我需要让它在图集中的第一个纹理开始(在触发动画之前)怎么办?断奶我需要动画来“改变”它的纹理
  • 在我的回答中,我说过您可以尝试在动画的完成块中使用theSprite.texture = atlas[atlas.count-1] 将精灵恢复到数组中的最后一个纹理。这样您就可以使用 atlas[0] 保留第一个纹理。
  • 所以恢复仍然为真,首先在创建精灵时将其设置为 atlas[0]。然后 atlas[atlas.count-1] 在完成块中?可能已经尝试过了,但我会再次尝试
  • 抱歉,我忘了说你的情况应该关闭恢复。请记住,restore 会将精灵的纹理设置回动画开始之前 的纹理。
  • 没关系 - 开始时获取图像的问题。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多