zoukankan      html  css  js  c++  java
  • Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫

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

  • 相关阅读:
    logo切图大小相应的尺寸
    logo切图大小相应的尺寸
    Linux学习笔记(二)——文件/目录/VIM
    Linux学习笔记(二)——文件/目录/VIM
    什么湖南小吃?仅1年就获得千万投资
    硕士毕业的他做生鲜电商网站,日流水3万元
    他回到家乡贷款创业,如今公司年产值100万美元
    下岗工人也能致富,她靠养殖昆虫改变人生
    他用8000元互联网创业起家,如今年营业额500万
    他卖骨头汤成为南京“汤王”,如今资产上百万
  • 原文地址:https://www.cnblogs.com/sandal1980/p/4280943.html
Copyright © 2011-2022 走看看