Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-4 熊猫的跳和打滚

简介: 原文:Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-4 熊猫的跳和打滚之前我们学会了跑的动作,现在我们可以利用同样的方法来实现了跳和打滚的动画。   …… class Panda : SKSpriteNode { …… //跳的纹理集合 let jumpAtlas = SKTextureAtlas(named: "jump.
原文: Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-4 熊猫的跳和打滚

之前我们学会了跑的动作,现在我们可以利用同样的方法来实现了跳和打滚的动画。

 

……

 

class Panda : SKSpriteNode {

   ……

    //跳的纹理集合

    let jumpAtlas = SKTextureAtlas(named: "jump.atlas")

    //存储跳的文理的数组

    let jumpFrames = [SKTexture]();

    //打滚的文理集合

    let rollAtlas = SKTextureAtlas(named: "roll.atlas")

    //存储打滚文理的数组

    let rollFrames = [SKTexture]();

 

   

    var status = Status.run

    //构造器

    override init(){

        ……

        //填充跳的纹理数组

        for i=1 ; i<=jumpAtlas.textureNames.count ; i++ {

            let tempName = String(format: "panda_jump_%.2d", i)

            let jumpTexture = jumpAtlas.textureNamed(tempName)

            if jumpTexture != nil {

                jumpFrames.append(jumpTexture)

            }

        }

        //填充打滚的纹理数组

        for i=1 ; i<=rollAtlas.textureNames.count ; i++ {

            let tempName = String(format: "panda_roll_%.2d", i)

            let rollTexture = rollAtlas.textureNamed(tempName)

            if rollTexture != nil{

                rollFrames.append(rollTexture)

            }

        }

    }

    func run(){

       ^

    }

    //跳

    func jump (){

        self.removeAllActions()

        status = .jump

        self.runAction(SKAction.animateWithTextures(jumpFrames, timePerFrame: 0.05))

    }

    //打滚

    func roll(){

        self.removeAllActions()

        status = .roll

        self.runAction(SKAction.animateWithTextures(rollFrames, timePerFrame: 0.05),completion:{() in self.run()})

    }

 

    required init(coder aDecoder: NSCoder) {

        fatalError("init(coder:) has not been implemented")

    }

}

 

注意:

由于跳和打滚的动作不像跑的动作需要循环播放,所以就不需要用repeatActionForever。打滚动作结束后就执行跑步动作。而跳跃动作由于不知道什么时候落地,所以将会由外部控制它的动作转变。

 

完成了以上的代码,我们怎么能验证我们的代码没有错呢?让我们打开GameScene,写一个响应屏幕点击的方法,简单的写个逻辑来测试跳和打滚动作没写错。代码如下:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
//当熊猫状态为跑的时候播放跳的动作
if panda.status == Status.run {
panda.jump()
}else if panda.status == Status.jump {
//当状态为跳的时候,执行打滚动画
panda.roll()
}
}

 

    运行代码,我们会发现跑跳滚的动画都很正确的执行了。当然这段代码只是演示用的,过后要删除。

 

我的微信公众号

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

目录
相关文章
|
机器学习/深度学习 TensorFlow Swift
Swift语言适合多个领域的开发
Swift语言适合多个领域的开发
380 9
|
9月前
|
API Swift iOS开发
回顾Apple Swift语言的发展和版本演变历程
归纳起来,Swift的发展过程就像一个乡村孩子的成长故事,从一个不谙世事的孩子,通过不懈的学习和实践,让自身的潜力得到最大的发挥,最终成为了社会中有实力的一份子。而这个故事还在继续,让我们共同期待Swift未来的激动人心的篇章!
220 20
|
监控 安全 Swift
企业上网行为管理软件:Swift 语言在移动终端监控的拓展
在数字化时代,企业对员工移动终端的上网行为管理日益重视。Swift 语言在移动终端监控中展现出独特优势,包括网络状态监测、应用使用跟踪及网页浏览行为监控等功能,有效助力企业确保信息安全和提高工作效率。
229 6
|
机器学习/深度学习 人工智能 移动开发
Swift语言作为苹果公司推出的现代编程语言
Swift语言作为苹果公司推出的现代编程语言
286 8
|
机器学习/深度学习 安全 数据挖掘
Swift语言的应用场景非常广泛
Swift语言的应用场景非常广泛
595 4
Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
原文:Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫     一个静态的熊猫明显不能满足我们的欲望,接下来我们就让熊猫跑起来。序列帧动画的原理就是不停的切换不同的图片。当我们将一张一张的切换Panda类的跑动文理后,熊猫就跑起来了。
1208 0
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
970 3
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
383 2
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
310 1
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
261 5