我已经为UILabel
添加了反弹效果,但我想在它到达边界底部时添加扩展效果。有谁知道如何添加最后一个效果。
以防万一,我通过创建自定义 SKScene 来解决此问题:
类 我的场景: SKScene {
override init(size: CGSize) {
super.init(size: size)
self.backgroundColor = SKColor(red: 0.15, green: 0.15, blue: 0.3, alpha: 1)
let sklbl: SKLabelNode = SKLabelNode(fontNamed: "Chalkduster")
sklbl.text = "hello world !!"
sklbl.fontSize = 30
sklbl.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
self.addChild(sklbl)
//return self
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func newExplosion (posX:CGFloat, posY:CGFloat) -> SKEmitterNode {
let path = NSBundle.mainBundle().pathForResource("MyParticle", ofType: "sks")
let emitter: SKEmitterNode = NSKeyedUnarchiver.unarchiveObjectWithFile(path!) as! SKEmitterNode
emitter.position = CGPointMake (posX,posY)
emitter.name = "explosion"
emitter.targetNode = self.scene
emitter.numParticlesToEmit = 1000
emitter.zPosition = 2.0
return emitter
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for ( index, t ) in touches.enumerate() {
let p:CGPoint = t.locationInNode(self)
self.addChild(self.newExplosion(p.x, posY: p.y))
}
}
override func update(currentTime: NSTimeInterval) {
/* S e llama antes de que cada frame es rendered*/
} }
之后,我必须创建一个具有烟雾效果的sks文件,称为MyParticle.sks
然后在我的控制器上,我添加了一个视图并将其设置为类"SKView"。
然后我将该视图链接为
@IBOutlet weak var blurLoading: SKView!
并添加此元素:
var amiterlayer: CAEmitterLayer = CAEmitterLayer()
最后,在视图加载事件上,我添加:
self.blurLoading.showsFPS = true
self.blurLoading.showsNodeCount = true
let s:MyScene = MyScene (size: self.blurLoading.bounds.size)
s.scaleMode = SKSceneScaleMode.AspectFill
self.blurLoading.presentScene (s)
触摸屏幕时效果有效,如果您想调用按需,只需执行:self.blurLoad.scene.newExplosion(x,y)。
它有效 !!