我希望在屏幕上拖动SKSpriteNode时,能够显示任何效果或动画。
我查阅了许多网站,但是没有找到与我的问题相关的答案。我对SKSpriteNode有一点了解。
请问有谁可以指导我解决这个问题吗?
谢谢。
我查阅了许多网站,但是没有找到与我的问题相关的答案。我对SKSpriteNode有一点了解。
请问有谁可以指导我解决这个问题吗?
谢谢。
import SpriteKit
class MAKE {
private static let view:SKView = SKView()
static func makeShadow(from source: SKTexture, rgb: SKColor, a: CGFloat) -> SKSpriteNode {
let shadowNode = SKSpriteNode(texture: source)
shadowNode.colorBlendFactor = 0.5 // makes the following line more effective
shadowNode.color = SKColor.gray // makes for a darker shadow. Off for "glow" shadow
let textureSize = source.size()
let doubleTextureSize = CGSize(width: textureSize.width * 2, height: textureSize.height * 2)
let framer = SKSpriteNode(color: UIColor.clear, size: doubleTextureSize)
framer.addChild(shadowNode)
let filter = CIFilter(name: "CIGaussianBlur")
let blurAmount = 10
filter?.setValue(blurAmount, forKey: kCIInputRadiusKey)
let effectsNode = SKEffectNode()
effectsNode.filter = filter
effectsNode.blendMode = .alpha
effectsNode.addChild(framer)
effectsNode.shouldRasterize = true
let tex = view.texture(from: effectsNode)
let shadow = SKSpriteNode(texture: tex)
shadow.colorBlendFactor = 0.5
shadow.color = rgb
shadow.alpha = a
shadow.zPosition = -1
return shadow
}
}
现在,您可以随意创建一个按钮,但请确保您已创建了一个与按钮完全相同大小和形状的buttonTexture
,最好是其灰色版本。您需要将其发送到上面的模糊工厂shadowmaker中,如下所示:
shadowSprite = MAKE.makeShadow(from: buttonTexture, rgb: myColor, a: 0.33)
shadowSprite.position = CGPoint(x: self.frame.midX, y: self.frame.midY - 5)
addChild(shadowSprite)
您可以在这里了解更多有关工厂模式的详细信息,包括如何和为什么使用它:
Create \(Use) SKView as \(in a) factory \(static class)