08.spritekit征程——场景中的动画

08.spritekit征程——场景中的动画

接着上文,显示静态的文字是否无法满足你的欲望,那么本文的内容绝对让你热血沸腾,记得小时候爱看动画,现在有这么一个机会让你来创作是不是想想都有点小激动呢。

动画的核心呢就是actions。在Sprite Kit 中的大多数action 其实就是改变节点(Node)的属性罢了。假如你还不了解节点是什么,建议好好谷歌百度下,虽说都是最基础的知识,但是我认为“万丈大楼平地起”,打好基础很是关键,另外就是坚持。

关于节点:
节点是最简单也是最难理解的一个概念。首先我们有一个SKView,会呈现多个场景(SKScene),一个场景中又有很多精灵(sprite)和其他内容,就好比上文说的那个”hello world”的文字就是一个node,甚至场景也是一个node,但是是一个根节点。以后我专门会弄一个章节来将Sprite Kit中各类之间的关系。

继续回到我们的action问题,记得前瞻说过,动作也是一个对象,该对象描述了你对节点做出的改变,比如平移、旋转、放缩等等,创建好这个对象之后,然后告诉节点去执行这个设计好的动作即可!最后场景进行渲染时,就会执行这些动作拉,动态显示我们设计好的一系列改变,直至所有动作完成。

赋予文本声明——To animate the text

  1. 还是先前的demo,给 helloNode增加额外的配置:

    //其实就是给该节点进行命名
    helloNode.name = "helloNode"
    

    所有节点都是有一个name属性的,就好比生娃取名来形容该节点。为什么要命名呢?试想下之后我们可能要取到该节点进行一些操作,如果有名有姓,绝壁能找到。

  2. 覆盖(override)父类方法中的touchesBegan(touches: NSSet, withEvent event: UIEvent)方法,在scene class中就能好到。SKScene最最基础类是UIResponder,因此能响应用户操作,当touch事件发生时,场景 就能接收到通知,然后我们通过名字来找到helloNode节点并且告诉它执行一个简短动画。

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent){
        //记住 返回的是可选类型SKNode? 有可能得到nil  所以你要解包
        //比如你要查找的节点名字拼错就意味着找不到 等于nil
        if let helloNode = childNodeWithName("helloNode"){
            //纯手打,不对之处见谅
    
            //在x,y方向上移动相对举例,比如原来在(0,100) 执行下面之后是(0,200)
            //moveTo才是移动到具体某个位置
            let moveUp = SKAction.moveByX(0, y: 100, duration: 0.5)
    
            //放大操作
            let zoom = SKAction.scaleTo(2.0, duration: 0.25)
            //延迟
            let pause = SKAction.waitForDuration(0.5)
            //说白了就是透明度最终变0,即渐隐
            let fadeAway = SKAction.fadeOutWithDuration(0.25)
            //从节点树种移除该节点
            let remove = SKAction.removeFromParent()
    
            let moveSequence = SKAction.sequence[moveUp,zoom,
                                pause,fadeAway,remove]
            helloNode.runAction(moveSequence)
        }
    }
    
  3. Build and Run 。尽情享受吧

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值