一个静态的熊猫明显不能满足我们的欲望,接下来我们就让熊猫跑起来。序列帧动画的原理就是不停的切换不同的图片。当我们将一张一张的切换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 SpriteKitenum Status:Int{case run=1,jump,jump2,roll;}class Panda : SKSpriteNode {let runAtlas = SKTextureAtlas(named: "run.atlas")let runFrames = [SKTexture]()var status = Status.runinit(){let texture = runAtlas.textureNamed("panda_run_01")let size = texture.size()super.init(texture:texture,color:SKColor.whiteColor(),size:size)var i:Intfor 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

转载于:https://www.cnblogs.com/sandal1980/p/4280943.html

Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫相关推荐

  1. swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法

    原文:swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法 在上个小节,我们完成了平台的产生.那么我们来实现一下让平台移动.平台的移动,我们只需要在平台工厂类中写好移动的方法,然 ...

  2. Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-2 创建熊猫类

    当我们创建好项目文件后我们就可以开始一步一步的按照我们之前列入的清单来编写我们的游戏.现在就让我们来创建一个熊猫这个类Panda.swift.我们将采取分解的方式,一步一步的完成Panda.swift ...

  3. 《Splunk智能运维实战》——第1章 游戏时间——导入数据 1.1 简介

    本节书摘来自华章计算机<Splunk智能运维实战>一书中的第1章,第1.1节,作者 [美]乔史·戴昆(Josh Diakun),保罗R.约翰逊(Paul R. Johnson),德莱克·默 ...

  4. 有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中,谭浩强《c语言程序设计》第六章第四题

    题目 本题是谭浩强<c语言程序设计>第六章第四题 题目:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中. 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同 ...

  5. 使用swift语言进行IOS应用开发

    在Swift中能够直接使用Objective-C语言提供的api (包括系统框架与自己的定制代码),也能够在Objective-C中使用Swift提供的类和api ,还能够在一个工程中同时混合使用Sw ...

  6. C语言程序与设计:篮球游戏

    文章目录 @[toc] C语言程序与设计:篮球游戏 1.题目 2.代码实现(输出坐标) C语言程序与设计:篮球游戏 1.题目 你们正在编写一个篮球游戏.假设篮球质量为1kg,将其放在高度为y米高的地方 ...

  7. 《游戏设计艺术(第2版)》——学习笔记(8)第8章 游戏通过迭代提高

    <游戏设计艺术(第2版)>学习笔记(8) 第8章 游戏通过迭代提高 选择创意 八项测试 迭代规则 软件工程的简短历史 危险--瀑布--保留 巴里·伯姆爱你 敏捷宣言 风险评估与原型设计 制 ...

  8. 【Cocos2D-X 游戏引擎】初窥门径(1) 制作一个动态的精灵

    使用Cocos2d-x 开发3D游戏 原理: Cocos2D中有个导演控制整个游戏流程,导演将场景添加到屏幕上,场景中有各种各样的演员. 先通过显示一张图片来看看Cocos2D游戏的流程: AppDe ...

  9. 买了一本老镇的swift语言实战晋级

    为什么80%的码农都做不了架构师?>>>    买的老镇的<<swift语言实战晋级>>书刚到,发现没有51CTO的100金币学习卡. 转载于:https:/ ...

  10. swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程

    swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 1.2.3  注册非免费苹果账号swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 免费的苹果账号在 ...

最新文章

  1. Scrum看板工具Leangoo敏捷企业实践分享
  2. 单片机at指令解析 开源_分享Github上几个开源单片机硬件驱动库
  3. python画曲线图例-如何使用python画曲线图
  4. 基于Android平台的流媒体播放器的设计
  5. matlab显示的图片,手动保存时四周有白边
  6. [设计模式篇]工厂模式和抽象工厂模式
  7. Win10安装CUDA
  8. 安装包制作工具 SetupFactory使用 详解
  9. emoji表情mysql报错_MySql存储emoji表情报错的处理方法
  10. Total Commander 显示文件包含文件名扩展
  11. python使用requests爬取淘宝搜索页数据
  12. 机器学习 面试题-第二章 线性模型(大厂必问,历经半年整理)
  13. 项目管理的完整流程是怎样的?
  14. 星敏感器 matlab,星敏感器姿态确定仿真综合实验.docx
  15. 在Word2010中给首字设置下沉
  16. 华硕笔记本学计算机,买平板电脑学习办公?也许平板、笔记本二合一的产品才更适合你...
  17. mongodb 基础入门
  18. 【Java设计模式】:行为型模式—访问者模式
  19. 光耦继电器工作原理与参数详解
  20. macOS安装Redis

热门文章

  1. 大麻和烟草对表观基因组产生双重影响
  2. 常见的负载均衡器(一)
  3. Dev C++源代码未编译
  4. 信息收集(OSINT)解释与实践-初
  5. 计算机专业课题 结题报告,计算机结题报告.doc
  6. 阿里巴巴国际站如何避免产品图片判定重复铺货?
  7. 计算机 电脑 整机 加密,如何加密文件夹
  8. 天下第一铭:汤晓鸥教授自叙的故事
  9. 【Tableau Desktop 企业日常问题20】Tableau怎么折线变虚线?
  10. excel行列互换_Excel中选择性粘贴的5种用法,别再仅仅复制-粘贴了