在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中(在代码的后面,我在itemsLayer中添加了一些带有纹理/图像的SKSpriteNode )。
在iOS8上,它工作得很好:我可以看到我所有的项目都是灰色的。
但是在iOS7上,没有显示SKSpriteNodes (我在itemsLayer上的项目)(好像隐藏了)。
根据文档和CIPhotoEffectNoir,iOS7确实存在于filterNamesInCategory("CICategoryColorEffect")中。
编辑:当我评论过滤器行时,我的itemsLayer仍然是隐藏的。当我将let grayNode转换为SKNode时,它会返回工作(当然不会应用任何效果)。问题似乎来自于grayNode是一个SKEffectNode
发布于 2014-12-21 00:54:57
经过几个小时的调试,我意识到iOS7并不像iOS8那样以同样的方式呈现SKEffectNode。
在iOS7中,将一个SKEffectNode添加到一组SKSpriteNode层将而不是自动地放到最前面的层(SKSpriteNode就是这种情况)。
所以我只需要加一行:
grayNode.zPosition = 10 //Or any number > 1https://stackoverflow.com/questions/27575357
复制相似问题