设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1810|回复: 0
打印 上一主题 下一主题

[原创发布] RGSS·GIF解码

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2020-9-4 02:47:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 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)
丢到工程目录就行了

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

评分

参与人数 1+1 收起 理由
zyf722 + 1 塞糖

查看全部评分

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-26 15:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表