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

Project1

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

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

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
跳转到指定楼层
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
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
2
 楼主| 发表于 2021-8-1 05:15:51 | 显示全部楼层
hyrious 发表于 2021-7-31 22:06
2 楼说得在理,另外放到 Graphics\Pictures 下

但是:

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

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
3
 楼主| 发表于 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
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
4
 楼主| 发表于 2021-8-3 02:49:51 | 显示全部楼层
taeckle 发表于 2021-8-3 02:46
报告一下,我在公共事件的脚本栏里这么写出现Syntaxerror:

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


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

使用道具 举报

Lv4.逐梦者

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


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

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
6
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 13:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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