spritekit 动画_[原创]SpriteKit+Swift学习笔记(二)-简单动画

相信很多人刚接触一个游戏开发框架,都会首先关注动画如何实现。今天就来简单说一下动画是如何实现的。

废话不多说,上代码:

var textureAtlas = SKTextureAtlas(named: "bird")

var textures = NSMutableArray()

for var i = 1; i <= textureAtlas.textureNames.count; i++ {

textures.addObject(textureAtlas.textureNamed("bird-0\(i).png"))

}

var flyAnimation = SKAction.animateWithTextures(textures, timePerFrame: 0.5)

这里我们先考虑一个鸟飞行的动画:首先,把你的动画文件(几个动作连续的png)放置在一个文件夹中,命名为bird。然后创建一个纹理集,如上面代码第一行,读取文件夹bird。其次创建一个纹理数组,然后用for循环,将各个png纹理添加进去。最后只要用skaction就可以播放了,是不是很简单。

这里开发时可能会遇到几个问题:

1.TextureAtlas到底是什么类型,不能直接用作数组吗?

不是,它的作用只是获取一组纹理,返回的是纹理集对象。而且如果你想知道里面有多少个纹理,只能通过它里面有多少纹理的名字来判断。

(@property(nonatomic, readonly) NSArray *textureNames)

纹理集的名字集合,是一个数组类型的值。

2.为什么取出纹理中的纹理名字要用上面代码中所示格式呢?为什么不是bird_1和bird_2这样的形式?

坦白讲,我也不是很清楚具体的命名规则,但是你可以打印纹理集内部的内容,结果如下:

SKTextureAtlas 'bird' 4 textures:

(

"SKTexture'bird-01.png' (34 x 24)",

"SKTexture'bird-02.png' (13 x 24)",

"SKTexture'bird-04.png' (34 x 24)",

"SKTexture'bird-03.png' (13 x 24)"

)

所以如果你想获取到里面的纹理名字,只能用上面的那种形式,如果你获取纹理失败,可以打印出来,看看你的纹理被命名成了什么。如果有人知道为什么这样命名,非常欢迎指出。

3.为什么我的动画只能播放一遍?

如果是刚开始学习的话,可能是你没有调用repeat,如果需要动画反复播放,需要

如果有其他疑问和错误,欢迎一起交流,互相进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值