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

Project1

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

[已经解决] 请教用脚本将一个png图像文件显示到游戏界面的最简单方法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
跳转到指定楼层
1
发表于 2021-7-31 08:12:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 taeckle 于 2021-8-1 05:26 编辑

我就想把一张名叫"狗不理.png"的图片(640X480)显示在游戏界面上(想达到的效果就好像数据库事件指令里的显示图片一样), 初始位置为(0,0),按下esc键后可令其消失然后释放内存, 试了下这个代码后没有成功:

pixas = Bitmap.new("狗不理.png")
my_p = Bitmap.new(pixas.width, pixas.height)
my_p.set_pixel(1, 1, pixas.get_pixel(1,1))

也不知道该把这个狗不理.png图像文件放到\Graphics下面的哪个文件夹下, picture? 还请大家指点一二,多谢了

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
11
 楼主| 发表于 2021-8-6 03:33:14 | 只看该作者
本帖最后由 taeckle 于 2021-8-6 04:45 编辑

@guoxiaomi

大神这是我自己看过F1帮助后的代码,虽说跟上面提到方法不一样,但也能达到目的,请问下咱这个代码(尤其是dispose那部分)还有哪些不足呢:

第一步: 首先在任意一张地图上创建一个事件,设置决定键开启事件,然后插入指令脚本,在里面输入代码:

$scene = Scene_Storage.new

第二步: 把一张名为"狗不理.png"的图片放到Graphics/Pictures文件夹下。

第三步: 在脚本编辑器main上面插入个新脚本页,然后在其输入这些代码:

class Scene_Storage
  def main
    @menu_com = Sprite.new
    @menu_com.bitmap = RPG::Cache.picture("狗不理.png")

   Graphics.transition
   # 主循环
   loop do
     # 刷新游戏画面
     Graphics.update
     # 刷新输入信息
     Input.update
     # 刷新画面
     update
     # 如果画面切换的话就中断循环
     if $scene != self
       break
     end
   end     
   
    # 准备过渡
    Graphics.freeze   
    @menu_com.bitmap.dispose
    @menu_com.dispose   
  end

  def update
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换的地图画面
      $scene = Scene_Map.new
      return
    end         
  end
  
end

以上就是实现把一张名叫"狗不理.png"的图片(640X480)显示在游戏界面上(想达到的效果就好像数据库事件指令里的显示图片一样), 初始位置为(0,0),按下esc键后可令其消失然后释放内存的方法,大家可以进入工程用回车键点击上面创建的事件自行测试

点评

现代计算机内存是够用的  发表于 2021-8-7 01:08
你这个bitmap是从RPG::Cache里读的,不释放的话,下次如果还要读就可以命中缓存,否则就又要从硬盘里加载一次  发表于 2021-8-7 01:07
为何bitmap不需要dispose啊?难道bitmap不占内存吗?  发表于 2021-8-6 23:31
bitmap不需要dispose  发表于 2021-8-6 11:48
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
10
 楼主| 发表于 2021-8-4 01:34:14 | 只看该作者
hyrious 发表于 2021-8-1 11:36
如果是完全等价于事件指令的话,可以参考默认脚本 Interpreter 里对应的代码 (command_231 和 command_235) ...


大神我用了您的脚本后是可以在游戏地图界面显示图片了,可按下ESC键隐藏图片的效果还是没法实现,图片只能一直停留在地图界面,请问下怎么达到按下ESC键图片就会消失的效果呢?

点评

多谢大神指点!  发表于 2021-8-4 06:46
并行公共事件  发表于 2021-8-4 01:54
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
9
 楼主| 发表于 2021-8-3 02:49:51 | 只看该作者
taeckle 发表于 2021-8-3 02:46
报告一下,我在公共事件的脚本栏里这么写出现Syntaxerror:

$game_screen.pictures[1].show("狗不理",\


问题找到了,在公共事件的脚本栏里输入换行符"\"后不能有空格。。。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
8
 楼主| 发表于 2021-8-3 02:46:40 | 只看该作者
hyrious 发表于 2021-8-1 11:36
如果是完全等价于事件指令的话,可以参考默认脚本 Interpreter 里对应的代码 (command_231 和 command_235) ...

报告一下,我在公共事件的脚本栏里这么写出现Syntaxerror:

$game_screen.pictures[1].show("狗不理",\
1, 320, 240, 100, 100, 255, 0)


请问下这又是哪里错了呢?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9682
在线时间
570 小时
注册时间
2017-9-28
帖子
208
7
发表于 2021-8-1 11:36:03 | 只看该作者
本帖最后由 hyrious 于 2021-8-1 11:37 编辑

如果是完全等价于事件指令的话,可以参考默认脚本 Interpreter 里对应的代码 (command_231 和 command_235)
  1. # 显示图片
  2. $game_screen.pictures[图片ID].show('文件名', 原点(0 为左上、其他数字为中心),
  3.       x, y, x方向缩放, y方向缩放, 不透明度, 合成方式)
  4. # 隐藏图片
  5. $game_screen.pictures[图片ID].erase
复制代码

不需要考虑释放资源。
注意:这些代码只能在游戏地图界面使用。

至于按下 ESC 隐藏图片,相信会用事件你一定知道怎么做。


如果是要在任何界面实现显示图片,那么我还是建议你去图书馆看书,否则就算给你代码你也不知道怎么用对。

评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 认可答案
taeckle + 1 大神威武!

查看全部评分

喵喵喵
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
6
 楼主| 发表于 2021-8-1 05:15:51 | 只看该作者
hyrious 发表于 2021-7-31 22:06
2 楼说得在理,另外放到 Graphics\Pictures 下

但是:

我就想把一张名叫"狗不理.png"的图片(640X480)显示在游戏界面上(想达到的效果就好像数据库事件指令里的显示图片一样),

PS: 按下esc键后可释放资源
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9682
在线时间
570 小时
注册时间
2017-9-28
帖子
208
5
发表于 2021-7-31 22:06:39 | 只看该作者
2 楼说得在理,另外放到 Graphics\Pictures 下

但是:
  • 怎么移动/隐藏图片?
  • 什么时候以及怎么释放资源?(这个图片会一直占着内存,不是看不见就不存在的)


所以建议还是从头学一下脚本,可以看板块头部的图书馆。
喵喵喵
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36432
在线时间
10798 小时
注册时间
2009-3-15
帖子
4814
4
发表于 2021-7-31 19:24:54 | 只看该作者
本帖最后由 soulsaga 于 2021-8-1 10:12 编辑

instance_variable_get
可以获取类的值..具体用法百度一下?
之前你问过问题的解答..

点评

我之前问的大多都是战斗系统的问题,现在问的基本上都是图像窗口之类的问题啊  发表于 2021-8-1 16:53
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14616
在线时间
2196 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

3
发表于 2021-7-31 16:45:26 | 只看该作者
看看RB和某侠的教学视频吧。

点评

【RMXP脚本教程-哔哩哔哩】https://b23.tv/wiQHI7  发表于 2021-8-3 03:04
大神可以给个链接吗?  发表于 2021-8-1 05:12
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 00:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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