博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
阅读量:5244 次
发布时间:2019-06-14

本文共 2256 字,大约阅读时间需要 7 分钟。

原文:

    一个静态的熊猫明显不能满足我们的欲望,接下来我们就让熊猫跑起来。序列帧动画的原理就是不停的切换不同的图片。当我们将一张一张的切换Panda类的跑动文理后,熊猫就跑起来了。那么首先我们需要一个数组常量来储存跑动动画文理,还有一个变量来记录熊猫当前的动作状态。

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省略

 

 

我的微信公众号

posted on
2015-02-11 14:32 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/4286145.html

你可能感兴趣的文章
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>
水平垂直居中
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>