Project1

标题: RGSS·GIF解码 [打印本页]

作者: SixRC    时间: 2020-9-4 02:47
标题: RGSS·GIF解码
本帖最后由 SixRC 于 2020-9-4 23:48 编辑

更新v1.1
增加了对 disposal method 和 delay time 的支持
现在可以无需额外判断的播放gif 范例及注意见代码
RM代码

gifdcd_v11.zip (234.43 KB, 下载次数: 28, 售价: 1 星屑)
基本完善了 大概不更新了

下面原帖

好久没发帖子了 凑合一下

简言之就是 spec-gif89a 根据这个(加一些别的资料)写了一个 gif 的解码功能(c++) 然后给RGSS接口 然后RGSS端就可以直接播放gif了
虽然其实我是想找现成的然后偷懒的 可是看了好多gif解码库 都感觉有点 ? 不如自己整一个
然后整是整出来了 就是只有基本功能..算了 能用就行 效率也ok 我满足了
(extension block 没处理 disposal method 这个参数也没理)
(别的影响输出的基本上处理了吧)

基本逻辑是搞一个GIF解码类
新建实例传入图片文件名 返回宽高信息
然后每次解码 就是写入到一个位图 解码的返回值true or false false就是文件读完了
读完了释放资源
RUBY 代码复制
  1. gif = GifDecoder.new "1.gif"
  2. s = Sprite.new
  3. s.bitmap = Bitmap.new(gif.width, gif.height)
  4. while gif.decode(s.bitmap)
  5.   5.times{Graphics.update}
  6.   # 大部分gif传入上次输出的结果可以正常播放
  7.   # 假如传空位图不正常的话
  8.   #s.bitmap.clear
  9. end
  10. 5.times{Graphics.update}
  11. gif.dispose

在每次解码这个过程中
输出的结果可以每帧保存 就能循环放 或者就放一次
每帧暂停的时间就自己掐吧..

具体参数见代码说明
下面正文

这个插到用之前
RM代码

然后把
gifdcd.zip (234.02 KB, 下载次数: 39)
丢到工程目录就行了

至于源码 没啥好看的
就这样吧




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1