我正在尝试使用以下代码段创建模糊效果:
let glowEffectNode = SKEffectNode()
glowEffectNode.shouldRasterize = true
let glowSize = CGSize(width: barSize.width, height: barSize.height)
let glowEffectSprite = SKSpriteNode(color: barColorData.topColor, size: glowSize)
glowEffectNode.addChild(glowEffectSprite)
let glowFilter = CIFilter(name: "CIGaussianBlur")
glowFilter!.setDefaults()
glowFilter!.setValue(5, forKey: "inputRadius")
glowEffectNode.filter = glowFilter
当然在iOS 8.x上它运行得很好但是从iOS 9.x(在9.0和9.1上都试过),模糊效果不正常。 (在模拟器上,节点看起来有点透明,但绝对没有模糊,在设备上它似乎模糊但是裁剪并且还偏离其中心位置:/)
使用CIFilter有一种快速解决方法吗?
答案 0 :(得分:1)
我用这个摆弄了一点,找到了解决方案......
首先,似乎使用奇数作为模糊半径会导致整个节点使用偏移(???)进行渲染,因此使用10来修复偏移问题。
其次,似乎模糊被裁剪,因为整个节点是渲染的精灵,对于模糊效果,你需要一个额外的空间,所以我使用透明的精灵来获得额外的空间,下面的代码片段现在可以工作:
class AmazonItem(models.Model):
amazon_url = models.CharField(max_length=800, null=True, blank=True)
price = models.DecimalField(max_digits=6, decimal_places=2, editable=False)
last_update = models.DateTimeField(editable=False)
def save(self):
if not self.id:
if self.amazon_url:
url = self.amazon_url
source_code = requests.get(url)
code = html.fromstring(source_code.text)
prices = code.xpath('//span[@id="priceblock_ourprice"]/text()')
eur = prezzi[0].replace("EUR ", "")
nospace = eur.replace(" ", "")
nodown = nospace.replace("\n", "")
end = nodown.replace(",", ".")
self.price = float(end)
else:
self.price = 0
self.last_update = datetime.datetime.today()
super(AmazonItem, self).save()
我应该提到我正在使用let glowEffectNode = SKEffectNode()
glowEffectNode.shouldRasterize = true
let glowBackgroundSize = CGSize(width: barSize.width + 60, height: barSize.height + 60)
let glowSize = CGSize(width: barSize.width + 10, height: barSize.height + 10)
let glowEffectSprite = SKSpriteNode(color: barColorData.topColor, size: glowSize)
glowEffectNode.addChild(SKSpriteNode(color: SKColor.clearColor(), size: glowBackgroundSize))
glowEffectNode.addChild(glowEffectSprite)
let glowFilter = CIFilter(name: "CIGaussianBlur")
glowFilter!.setDefaults()
glowFilter!.setValue(10, forKey: "inputRadius")
glowEffectNode.filter = glowFilter
从这个节点创建纹理以提高效率,但我尝试使用节点本身并且问题仍然存在,所以无论如何