我将一些Objective-C代码转换为
Swift代码,我有以下问题:
目标C代码是
SCNNode *textNode = [SCNNode nodeWithGeometry:text]; textNode.transform = CATransform3DInvert(self.chartNode.worldTransform);
这是我尝试的转换代码:
let textNode = SCNNode(geometry: text) textNode.transform = CATransform3DInvert(self.chartNode.worldTransform)
但是,我收到一个错误:’SCNMatrix4不能转换为CATransform3D’
我认识到CATransform3DInvert采用CATransform3D类型的参数,而包含的参数类型为SCNMatrix4.
我尝试了以下的尝试:
textNode.transform = CATransform3DInvert(CATransform3D(self.chartNode.worldTransform))
但这不行.
然后我发现CATransform3D和SCNMatrix4都是结构体,我不确定如何从一个结构转换为另一个结构(或者即使可以在Swift中的结构之间转换)
也许还有一个更简单的方法?
任何帮助将不胜感激 – 谢谢.
好,
Airspeed Velocity提供的链接有一个很好的解释,很容易转换为Swift(实际上是相同的).
CATransform3D等是基于Mac OS X,不适用于iOS – 而是使用iOS SCNMatrix4等.
在链接的帖子 – 头文件中,您可以找到使用的类型为SceneKitTypes.h – 如果要在github上查找副本:https://github.com/andymatuschak/Khan-Academy-Offer-Acceptance-Toy/blob/master/§/SceneKitTypes.h
我使用SCNMatrix4Invert作为上面提到的rintaro,它的工作原理.
那么Swift代码现在是:
let textNode = SCNNode(geometry: text) textNode.transform = SCNMatrix4Invert(self.chartNode.worldTransform)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。