碰撞物体与烟雾或灰尘IOS

时间:2016-01-19 22:10:32

标签: ios animation

我为UILabel添加了一个反弹效果,但我希望在到达边界底部时添加一个explotion效果。有人知道如何添加最后一个效果。

1 个答案:

答案 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)。

它有效!!