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

Project1

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

[已经过期] RM可以实现用文件代码(文本)加载图片吗?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
90
在线时间
56 小时
注册时间
2012-8-26
帖子
129
跳转到指定楼层
1
发表于 2012-9-1 22:12:36 手机端发表。 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
就是接用文本加载图片或其他资源。在其他一些编程软件中都可以直接用文件文本代码加载图片,这样对资源加密和读取都很方便,不知道RM可以实现吗?

Lv3.寻梦者

梦石
0
星屑
3044
在线时间
1053 小时
注册时间
2011-8-16
帖子
242
2
发表于 2012-9-2 09:25:45 手机端发表。 | 只看该作者
不知道LZ是什么意思,是从文本文件中读取代码再执行吗?

点评

你可以实现吗?  发表于 2012-9-2 20:17
嗯,直接读取代码,比如说图片的文字代码是“××××××”,直接用方法 读图("××××××") 来载入图片  发表于 2012-9-2 20:14
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
191 小时
注册时间
2011-7-16
帖子
1102
3
发表于 2012-9-2 10:58:43 | 只看该作者
实践就是硬道理,不过……假如我木有理解错的话,理论上大概可以
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
4
发表于 2012-9-2 12:29:49 | 只看该作者
LZ意思大概是这样……
比如脚本需要一个这个图片:(红色填满的)

(256px×38px)
然后,图片不存入文件。
这个图片在脚本需要的时候,自动生成,比如:
  1. def get_red_pic
  2.   @bit = Bitmap.new(256, 38)
  3.   @bit.fill_rect(@bit.rect,Color.new(255, 0, 0))
  4.   return @bit
  5. end
复制代码
然后需要的时候调用get_red_pic就行了。不知LZ是这样的意思吗?
如果是的话,应该可行,但是如果图片比较乱七八糟,比如这个:

就没办法了……

* 图片全部采用画图制作。

点评

以描点的形式显示一张图片也是非常慢的,而且需要转换成颜色代码,每个颜色需要多个字符,这样做的话一张图就会很大  发表于 2012-9-2 20:17
我需要的是一张图片,而不是这种填充  发表于 2012-9-2 20:15
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3044
在线时间
1053 小时
注册时间
2011-8-16
帖子
242
5
发表于 2012-9-2 21:14:54 手机端发表。 | 只看该作者
用下面这个脚本可以依次读取某文件的每一行,并作为脚本执行
IO.foreach("filename") {|x|eval(x)}
#请自己把那两条竖线换成半角符号,手机打不出来
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
56 小时
注册时间
2012-8-26
帖子
129
6
 楼主| 发表于 2012-9-3 17:27:52 手机端发表。 | 只看该作者
失落的乐章 发表于 2012-9-2 21:14
用下面这个脚本可以依次读取某文件的每一行,并作为脚本执行
IO.foreach("filename") {|x|eval(x)}
#请自 ...

这个脚本你在哪里看到的?用它能加载图片吗?
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3044
在线时间
1053 小时
注册时间
2011-8-16
帖子
242
7
发表于 2012-9-3 18:11:04 手机端发表。 | 只看该作者
yyq8092 发表于 2012-9-3 17:27
这个脚本你在哪里看到的?用它能加载图片吗?

能执行任意的代码,只要把代码写入一个文件,然后filename改为你的文件名,这样就能依次读取每行,并作为代码执行。

点评

每行还是一行?这个不是类似加入脚本那个吗?  发表于 2012-9-3 19:48
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
8
发表于 2012-9-3 18:29:53 | 只看该作者
satgo1546 发表于 2012-9-2 12:29
LZ意思大概是这样……
比如脚本需要一个这个图片:(红色填满的)

@yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092
↑ 防止 @ 无效

显示图片的话还是存成PNG比较方便,RPG::Cache调用就行了。
LZ到底要干什么把图片存入脚本捏……

提供另外一种执行脚本的方法:
  1. f = File.open("文件名","r")
  2. scr = f.read
  3. eval(scr)
复制代码
这样的好处是,写if的时候#5楼的方法有问题,用这样就能直接一次全部读入然后eval。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
56 小时
注册时间
2012-8-26
帖子
129
9
 楼主| 发表于 2012-9-3 19:52:47 | 只看该作者
satgo1546 发表于 2012-9-3 18:29
@yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092
↑ 防止 @ 无效

显示图 ...

好吧,我再解释一次,就是说我没有某个图片文件但是我知道他文件的代码,比如说他的代码是“×××××××”
这个就是你把图片用“记事本”打开里面看到的代码,而在某些编程软件可以直接使用这个代码来加载图片和音乐什么的,而RM只能按照文件名称来读图
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
10
发表于 2012-9-3 20:12:48 | 只看该作者
yyq8092 发表于 2012-9-3 19:52
好吧,我再解释一次,就是说我没有某个图片文件但是我知道他文件的代码,比如说他的代码是“×××××× ...

狂汗,原来就这个意思啊。
注意,图片文件里面会有0x08之类的字符(退格键!),直接粘贴不行。
所以,还是用文件吧(囧)
非要用这种代码的话,这里看:
  1. cod = "代码内容×××……哈哈"
  2. File.open("a.dat","w") { f.write(cod) }
复制代码
结果,就是,把代码内容写入了a.dat,要用的时候
  1. Bitmap.new("a.dat")
复制代码
比如这样就行了
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-28 23:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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