加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 SixRC 于 2020-9-4 23:48 编辑
更新v1.1
增加了对 disposal method 和 delay time 的支持
现在可以无需额外判断的播放gif 范例及注意见代码
RM代码
gifdcd_v11.zip
(234.43 KB, 下载次数: 30, 售价: 1 星屑)
基本完善了 大概不更新了
下面原帖
好久没发帖子了 凑合一下
简言之就是 spec-gif89a 根据这个(加一些别的资料)写了一个 gif 的解码功能(c++) 然后给RGSS接口 然后RGSS端就可以直接播放gif了
虽然其实我是想找现成的然后偷懒的 可是看了好多gif解码库 都感觉有点 ? 不如自己整一个
然后整是整出来了 就是只有基本功能..算了 能用就行 效率也ok 我满足了
(extension block 没处理 disposal method 这个参数也没理)
(别的影响输出的基本上处理了吧)
基本逻辑是搞一个GIF解码类
新建实例传入图片文件名 返回宽高信息
然后每次解码 就是写入到一个位图 解码的返回值true or false false就是文件读完了
读完了释放资源
gif = GifDecoder.new "1.gif" s = Sprite.new s.bitmap = Bitmap.new(gif.width, gif.height) while gif.decode(s.bitmap) 5.times{Graphics.update} # 大部分gif传入上次输出的结果可以正常播放 # 假如传空位图不正常的话 #s.bitmap.clear end 5.times{Graphics.update} gif.dispose
gif = GifDecoder.new "1.gif"
s = Sprite.new
s.bitmap = Bitmap.new(gif.width, gif.height)
while gif.decode(s.bitmap)
5.times{Graphics.update}
# 大部分gif传入上次输出的结果可以正常播放
# 假如传空位图不正常的话
#s.bitmap.clear
end
5.times{Graphics.update}
gif.dispose
在每次解码这个过程中
输出的结果可以每帧保存 就能循环放 或者就放一次
每帧暂停的时间就自己掐吧..
具体参数见代码说明
下面正文
这个插到用之前
RM代码
然后把
gifdcd.zip
(234.02 KB, 下载次数: 41)
丢到工程目录就行了
至于源码 没啥好看的
就这样吧 |