08.spritekit征程——场景中的动画
来源:互联网 发布:女生学java有前途吗 编辑:程序博客网 时间:2024/06/06 07:14
08.spritekit征程——场景中的动画
接着上文,显示静态的文字是否无法满足你的欲望,那么本文的内容绝对让你热血沸腾,记得小时候爱看动画,现在有这么一个机会让你来创作是不是想想都有点小激动呢。
动画的核心呢就是actions
。在Sprite Kit
中的大多数action
其实就是改变节点(Node
)的属性罢了。假如你还不了解节点是什么,建议好好谷歌百度下,虽说都是最基础的知识,但是我认为“万丈大楼平地起”,打好基础很是关键,另外就是坚持。
关于节点:
节点是最简单也是最难理解的一个概念。首先我们有一个SKView
,会呈现多个场景(SKScene
),一个场景中又有很多精灵(sprite
)和其他内容,就好比上文说的那个”hello world”的文字就是一个node
,甚至场景也是一个node
,但是是一个根节点。以后我专门会弄一个章节来将Sprite Kit
中各类之间的关系。
继续回到我们的action
问题,记得前瞻说过,动作也是一个对象,该对象描述了你对节点做出的改变,比如平移、旋转、放缩等等,创建好这个对象之后,然后告诉节点去执行这个设计好的动作即可!最后场景进行渲染时,就会执行这些动作拉,动态显示我们设计好的一系列改变,直至所有动作完成。
赋予文本声明——To animate the text
还是先前的demo,给
helloNode
增加额外的配置://其实就是给该节点进行命名helloNode.name = "helloNode"
所有节点都是有一个
name
属性的,就好比生娃取名来形容该节点。为什么要命名呢?试想下之后我们可能要取到该节点进行一些操作,如果有名有姓,绝壁能找到。覆盖(
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) }}
Build and Run 。尽情享受吧
- 08.spritekit征程——场景中的动画
- 07.spritekit征程——创建第一个场景
- 09.spritekit征程——场景的切换
- SpriteKit:在场景过渡中暂停动画
- 11.spritekit征程——结尾篇之节点的狂欢
- 【Swift】SpriteKit开发iOS游戏——场景切换
- 【万里征程——Windows App开发】动画1
- SpriteKit游戏如何一步一步重构在场景中增加金币动画(一)
- SpriteKit游戏如何一步一步重构在场景中增加金币动画(二)
- spriteKit 笔记三 —— Drog 精灵
- 新征程——编程
- 02.SpriteKit前瞻之视图场景
- SpriteKit:检测当新场景显示以后
- SpriteKit
- 新的征程——《robocup rescue》
- 征程的开始——誓言
- 网络流征程——dinic算法
- Spark征程——Spark工作机制
- JAVA中HashMap和Hashtable区别
- opengl首次尝试使用
- Oracle11g客户端连接服务器很慢的一种解决方法(登录验证方式导致)
- arcgis 10.1 许可服务器启动没反应
- NSString相关
- 08.spritekit征程——场景中的动画
- 数值的整数次方
- 织梦权重 arclist orderby=weight新解决办法
- PAT 1003. Emergency (25)
- JSP/Servlet: 简介 Tag File
- iOS KVC & KVO
- 程序语言与城市
- JavaScript(复习版二)
- tesseract-ocr训练方法