ios – 动画的替代品(forKey :)(现已弃用)?

ios – 动画的替代品(forKey :)(现已弃用)?,第1张

概述我正在使用iOS 11(适用于ARKit),虽然许多人指向Apple的SceneKit示例应用程序与Fox,我在该示例项目( file)中使用的扩展程序有问题,以添加动画: extension CAAnimation { class func animationWithSceneNamed(_ name: String) -> CAAnimation? { var anim 我正在使用iOS 11(适用于ARKit),虽然许多人指向Apple的SceneKit示例应用程序与Fox,我在该示例项目( file)中使用的扩展程序有问题,以添加动画:
extension CAAnimation {    class func animationWithScenenamed(_ name: String) -> CAAnimation? {        var animation: CAAnimation?        if let scene = SCNScene(named: name) {            scene.rootNode.enumerateChildNodes({ (child,stop) in                if child.animationKeys.count > 0 {                    animation = child.animation(forKey: child.animationKeys.first!)                    stop.initialize(to: true)                }            })        }        return animation    }}

看来这个扩展非常方便,但我不确定如何迁移它现在它已被弃用?它现在默认内置在SceneKit中吗?

该文档并未真正显示有关其被弃用的原因或从何处开始的详细信息.

谢谢

解决方法 TL; DR:Apple的 sample game(搜索SCNAnimationPlayer)中可以找到如何使用新API的示例

尽管在iOS11中已经弃用了动画(forKey :)及其使用CAAnimation的姐妹方法,但您可以继续使用它们 – 一切都会起作用.

但是如果你想使用新的API并且不关心向后兼容性(无论如何你都不需要ARKit,因为它仅在iOS11之后可用),请继续阅读.

与之前的产品相比,新推出的SCNAnimationPlayer提供了更方便的API.现在可以更轻松地实时处理动画.
来自WWDC2017的This video将是了解它的一个很好的起点.

作为快速摘要:SCNAnimationPlayer允许您动态更改动画的速度.与添加和删除CAAnimations相比,它使用play()和stop()等方法为动画播放提供了更直观的界面.
您还可以将两个动画混合在一起,例如,可以使用它们在它们之间进行平滑过渡.

您可以在Fox 2 game by Apple中找到如何使用所有这些的示例.

这是您发布的适用于使用SCNAnimationPlayer的扩展(您可以在Fox 2示例项目的Character类中找到它):

extension SCNAnimationPlayer {    class func loadAnimation(fromScenenamed scenename: String) -> SCNAnimationPlayer {        let scene = SCNScene( named: scenename )!        // find top level animation        var animationPlayer: SCNAnimationPlayer! = nil        scene.rootNode.enumerateChildNodes { (child,stop) in            if !child.animationKeys.isEmpty {                animationPlayer = child.animationPlayer(forKey: child.animationKeys[0])                stop.pointee = true            }        }        return animationPlayer    }}

您可以按如下方式使用它:

>加载动画并将其添加到相应的节点

let jumpAnimation = SCNAnimationPlayer.loadAnimation(fromScenenamed: "jump.scn")jumpAnimation.stop() // stop it for Now so that we can use it later when it's appropriate model.addAnimationPlayer(jumpAnimation,forKey: "jump")

>使用它!

model.animationPlayer(forKey: "jump")?.play()
总结

以上是内存溢出为你收集整理的ios – 动画的替代品(forKey :)(现已弃用)?全部内容,希望文章能够帮你解决ios – 动画的替代品(forKey :)(现已弃用)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1105098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存