赞 | 13 |
VIP | 320 |
好人卡 | 64 |
积分 | 3 |
经验 | 112963 |
最后登录 | 2022-8-25 |
在线时间 | 2355 小时 |
Lv2.观梦者 (暗夜天使)
- 梦石
- 0
- 星屑
- 266
- 在线时间
- 2355 小时
- 注册时间
- 2009-3-13
- 帖子
- 2309
|
asdwds 发表于 2013-7-3 12:18
< Sprite_Base 是必须的吗?有了这个所以才会被Spriteset更新吗?
不是,你要自己更新它。
建议你用数组来管理播放动画的精灵,播放的时候往数组里添加,播放完毕再删除就可以了。
这是我用的方法,是用类变量来管理他们,你可以参考一下:- class Animation
- @@ended_animations = []
- @@animations = []
-
- def self.update
- @@ended_animations.clear
- @@animations.each {|anime| anime.update_animation}
- @@animations -= @@ended_animations # 在这里删除播放完毕的动画
- end
- def self.start_animation(id, target, zoom_rate, mirror, viewport)
- @@animations.push(Animation.new(id, target, zoom_rate, mirror, viewport))
- end
- #...
- # 播放完毕释放动画精灵
- def end_animation
- #...
- @ani_sprites.each {|sprite| sprite.dispose}
- @@ended_animations.push(self)
- end
- end
复制代码 在Spriteset_Map里添加方法更新他们:- def update_animations
- Animation::update
- end
- # 播放动画精灵,当然如果要调用这个方法还得首先读取到Scene_Map里的@spriteset,对它调用
- def start_animation(id, target, zoom_rate = 0.25, mirror = false)
- Animation::start_animation(id, target, zoom_rate, mirror, @viewport1)
- end
复制代码 |
|