• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    一个静态的熊猫明显不能满足我们的欲望,接下来我们就让熊猫跑起来。序列帧动画的原理就是不停的切换不同的图片。当我们将一张一张的切换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省略

 

 

我的微信公众号

我写的破书:《Swift语言实战晋级》http://item.jd.com/11641501.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Swift]LeetCode823.带因子的二叉树|BinaryTreesWithFactors发布时间:2022-07-13
下一篇:
swift中单例的写法发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap