【发布时间】:2015-02-18 22:32:09
【问题描述】:
在 Swift 中使用 SpriteKit,我的 GameScene(一个 SKScene)中有这段代码:
//Init function
let self.itemsLayer = SKNode()
let grayNode = SKEffectNode()
let grayFilter = CIFilter(name: "CIPhotoEffectNoir")
grayFilter.setDefaults()
grayNode.filter = grayFilter
grayNode.addChild(self.itemsLayer)
self.addChild(grayNode)
它应该以灰色将我显示的项目渲染到 itemsLayer 中(稍后在代码中我将一些带有纹理/图像的 SKSpriteNode 添加到 itemsLayer 中)。
在 iOS8 上,它完美运行:我可以看到我所有的项目都是灰色的。
但在 iOS7 上,SKSpriteNodes(我在 itemsLayer 上的项目)不显示(好像隐藏)。
根据文档和filterNamesInCategory("CICategoryColorEffect"),iOS7 中确实存在 CIPhotoEffectNoir。
编辑:当我评论过滤器行时,我的 itemsLayer 仍然隐藏。当我将let grayNode 转换为SKNode 时,它会恢复正常(但当然不会应用任何效果)。问题似乎来自 grayNode 是 SKEffectNode
【问题讨论】:
-
您在 iOS7 上的运行情况如何,通过设置部署目标还是在早期版本的 Xcode 上运行?
-
我在 iOS 7.1 上的 iPhone 4S 和 7.1 上的模拟器上进行了测试(我不得不从 Xcode 下载 900Mo 的模拟器,因为它只有 iOS8.1)。部署目标设置为 iOS7.1。顺便说一句,我先为 iOS8 创建了项目,然后决定也支持 iOS7。
-
您是否在控制台窗口中看到错误?
-
完全没有错误,游戏运行完美,一切似乎都被隐藏了。我在 iOS8 和 iOS7 中有完全相同的代码。用额外的“调试”更新了帖子
-
我收到以下错误“[CIImage initWithTexture:size:flipped:colorSpace] 需要整数大小!”当我在运行 iOS 7 的 4S sim 上运行时,节点被隐藏了。它适用于 iOS 8。
标签: ios swift sprite-kit cifilter