Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
2015-02-09 10:20
204 查看
一个静态的熊猫明显不能满足我们的欲望,接下来我们就让熊猫跑起来。序列帧动画的原理就是不停的切换不同的图片。当我们将一张一张的切换Panda类的跑动文理后,熊猫就跑起来了。那么首先我们需要一个数组常量来储存跑动动画文理,还有一个变量来记录熊猫当前的动作状态。
//动作状态,默认值为枚举中的跑
然后我们通过for循环获取跑动动画的所有文理存入runFrames中。由于我们使用了SKTextureAtlas。所以我们能够通过textureNamed方法,通过图片的名称,很方便的获取文理集合中的特定文理。
注意:
String(format: "panda_run_%.2d", i)这是字符串的格式化。2d表示2位整数。那么这种格式化后的字符串就是panda_run_01, panda_run_02, panda_run_03的样子
现在我们需要一个方法来执行跑这个动作,这个方法名我们命名为run。代码如下。
接着我们要在构造其中执行默认执行run这个方法实现跑动。
那么这时候Panda类中完整的代码应该是这样的
让我们运行一下代码,就可以看到场景中熊猫已经开始摇摇晃晃的跑动了。
注意:
self.status = .run这是 self.status = Status.run的简写形式,因为status这个变量我们之前赋予过枚举值,所以后面都可以将Status省略
我的微信公众号
我写的破书:《Swift语言实战晋级》http://item.jd.com/11641501.html
let runFrames = [SKTexture]()
//动作状态,默认值为枚举中的跑
var status = Status.run
然后我们通过for循环获取跑动动画的所有文理存入runFrames中。由于我们使用了SKTextureAtlas。所以我们能够通过textureNamed方法,通过图片的名称,很方便的获取文理集合中的特定文理。
for i=1 ; i<=runAtlas.textureNames.count ; i++ { let tempName = String(format: "panda_run_%.2d", i) let runTexture = runAtlas.textureNamed(tempName) if runTexture { runFrames.append(runTexture) } }
注意:
String(format: "panda_run_%.2d", i)这是字符串的格式化。2d表示2位整数。那么这种格式化后的字符串就是panda_run_01, panda_run_02, panda_run_03的样子
现在我们需要一个方法来执行跑这个动作,这个方法名我们命名为run。代码如下。
func run(){ //移除所有的动作 self.removeAllActions() //将当前动作状态设为跑 self.status = .run //通过SKAction.animateWithTextures将跑的文理数组设置为0.05秒切换一次的动画 // SKAction.repeatActionForever将让动画永远执行 // self.runAction执行动作形成动画 self.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(runFrames, timePerFrame: 0.05))) }
接着我们要在构造其中执行默认执行run这个方法实现跑动。
run()
那么这时候Panda类中完整的代码应该是这样的
import SpriteKit
enum Status:Int{
case run=1,jump,jump2,roll;
}
class Panda : SKSpriteNode {
let runAtlas = SKTextureAtlas(named: "run.atlas")
let runFrames = [SKTexture]()
var status = Status.run
init(){
let texture = runAtlas.textureNamed("panda_run_01")
let size = texture.size()
super.init(texture:texture,color:SKColor.whiteColor(),size:size)
var i:Int
for i=1 ; i<=runAtlas.textureNames.count ; i++ { let tempName = String(format: "panda_run_%.2d", i) let runTexture = runAtlas.textureNamed(tempName) if runTexture { runFrames.append(runTexture) } }
run()
}
func run(){ //移除所有的动作 self.removeAllActions() //将当前动作状态设为跑 self.status = .run //通过SKAction.animateWithTextures将跑的文理数组设置为0.05秒切换一次的动画 // SKAction.repeatActionForever将让动画永远执行 // self.runAction执行动作形成动画 self.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(runFrames, timePerFrame: 0.05))) }
让我们运行一下代码,就可以看到场景中熊猫已经开始摇摇晃晃的跑动了。
注意:
self.status = .run这是 self.status = Status.run的简写形式,因为status这个变量我们之前赋予过枚举值,所以后面都可以将Status省略
我的微信公众号
我写的破书:《Swift语言实战晋级》http://item.jd.com/11641501.html
相关文章推荐
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-5-6 踩踏平台是怎么炼成的
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-5-6 踩踏平台是怎么炼成的
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-4 熊猫的跳和打滚
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-4 熊猫的跳和打滚
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-2 创建熊猫类
- swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法
- swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-1
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-2 创建熊猫类
- swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-1
- swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动
- 【Cocos2D-X 游戏引擎】初窥门径(1) 制作一个动态的精灵
- flash中怎么制作一个按钮,当鼠标移上去就会显示文字(动态文本)?
- 动态加载的同一个Label的同一行字体显示不同的颜色
- [Javascript入门]如何在网页上显示一个动态钟表
- 一个简单的动态显示层
- Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植2:如何新建一个项目,引擎目录结构介绍
- 网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态显示“××年还剩××天××时××分××秒”