我为UILabel
添加了一个反弹效果,但我希望在到达边界底部时添加一个explotion效果。有人知道如何添加最后一个效果。
答案 0 :(得分:0)
为了以防万一,我通过创建自定义SKScene来解决这个问题:
类MyScene:SKScene {
MATCH
之后我必须创建一个名为MyParticle.sks
的烟雾效果的sks文件然后在我的控制器上添加了一个视图并将其设置为“SKView”类。
然后我将该视图链接为
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*/
} }
并添加此元素:
@IBOutlet weak var blurLoading: SKView!
最后在我添加的viewload事件中:
var amiterlayer: CAEmitterLayer = CAEmitterLayer()
当触摸屏幕时,效果会起作用,如果你想点击按需执行:self.blurLoading.scene.newExplosion(x,y)。
它有效!!