Project1

标题: 请教用脚本将一个png图像文件显示到游戏界面的最简单方法 [打印本页]

作者: taeckle    时间: 2021-7-31 08:12
标题: 请教用脚本将一个png图像文件显示到游戏界面的最简单方法
本帖最后由 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? 还请大家指点一二,多谢了
作者: 阵颜    时间: 2021-7-31 14:07
其实还是建议你去系统的学习一下脚本,
零碎的学习只会加大学习成本。

另,你的问题估计是这样(我不是很懂XP的脚本,瞎说的):
@spr = Sprite.new
@spr.bitmap = RPG::Cache.picture("狗不理")
作者: miantouchi    时间: 2021-7-31 16:45
看看RB和某侠的教学视频吧。
作者: soulsaga    时间: 2021-7-31 19:24
本帖最后由 soulsaga 于 2021-8-1 10:12 编辑

instance_variable_get
可以获取类的值..具体用法百度一下?
之前你问过问题的解答..
作者: hyrious    时间: 2021-7-31 22:06
2 楼说得在理,另外放到 Graphics\Pictures 下

但是:


所以建议还是从头学一下脚本,可以看板块头部的图书馆。
作者: taeckle    时间: 2021-8-1 05:15
hyrious 发表于 2021-7-31 22:06
2 楼说得在理,另外放到 Graphics\Pictures 下

但是:

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

PS: 按下esc键后可释放资源
作者: hyrious    时间: 2021-8-1 11:36
本帖最后由 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 隐藏图片,相信会用事件你一定知道怎么做。


如果是要在任何界面实现显示图片,那么我还是建议你去图书馆看书,否则就算给你代码你也不知道怎么用对。
作者: taeckle    时间: 2021-8-3 02:46
hyrious 发表于 2021-8-1 11:36
如果是完全等价于事件指令的话,可以参考默认脚本 Interpreter 里对应的代码 (command_231 和 command_235) ...

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

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


请问下这又是哪里错了呢?
作者: taeckle    时间: 2021-8-3 02:49
taeckle 发表于 2021-8-3 02:46
报告一下,我在公共事件的脚本栏里这么写出现Syntaxerror:

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


问题找到了,在公共事件的脚本栏里输入换行符"\"后不能有空格。。。
作者: taeckle    时间: 2021-8-4 01:34
hyrious 发表于 2021-8-1 11:36
如果是完全等价于事件指令的话,可以参考默认脚本 Interpreter 里对应的代码 (command_231 和 command_235) ...


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


作者: taeckle    时间: 2021-8-6 03:33
本帖最后由 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键后可令其消失然后释放内存的方法,大家可以进入工程用回车键点击上面创建的事件自行测试




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