Project1

标题: 【新手求助】关于如何在事件调用类 [打印本页]

作者: 梦想始终会醒    时间: 2017-4-13 11:02
标题: 【新手求助】关于如何在事件调用类
小弟尚在学习脚本,目前卡在一个事件调用关卡里面.
不知为何调用脚本必须在脚本里用$scene = Ye.new 才可调用脚本?
而不能直接在事件打入:Ye.new, 而调用使用脚本

小弟目前学习脚本而写出简易代码如下
  1. class Ye
  2.   def main
  3.     s1 = "开始吗"
  4.     s2 = "不开始"
  5.     s3 = "开始说明"
  6.     @窗口 = Window_Command.new(192,[s1,s2,s3])
  7.     @窗口.back_opacity = 0
  8.     @窗口.opacity = 0
  9.     @窗口.contents_opacity = 255
  10.     @窗口.x = 380
  11.     @窗口.y = 100
  12.     # 执行过渡
  13.     Graphics.transition
  14.     # 主循环
  15.     loop do
  16.       # 刷新游戏画面
  17.       Graphics.update
  18.       # 刷新输入信息
  19.       Input.update
  20.       # 刷新画面
  21.       update
  22.       # 如果画面被切换就中断循环
  23.       if $scene != self
  24.         break
  25.       end
  26.     end
  27.     # 装备过渡
  28.     Graphics.freeze
  29.     # 释放命令窗口
  30.     @窗口.dispose
  31.   end
  32.   
  33.     def update
  34.       @窗口.update      
  35.       # 按下 B 键的情况下
  36.       if Input.trigger?(Input::B)
  37.       # 演奏取消 SE
  38.       $game_system.se_play($data_system.cancel_se)
  39.       # 切换到菜单画面
  40.       $scene = Scene_Map.new
  41.       return
  42.     end
  43.       if Input.trigger?(Input::C)
  44.         case @窗口.index
  45.         when 0
  46.            p  "开始吗"
  47.         when 1
  48.           p "不开始"
  49.           when 2
  50.             print "开始说明"
  51.           end

  52.           end
  53.       end
  54.     end




  55.    
复制代码



作者: guoxiaomi    时间: 2017-4-13 11:11
注意看脚本编辑器的最后一个片段

因为设置$scene之后,会自动执行的scene的main方法,而YE.new,在执行initialize方法后,main方法根本没有执行。
作者: 梦想始终会醒    时间: 2017-4-13 11:23
guoxiaomi 发表于 2017-4-13 11:11
注意看脚本编辑器的最后一个片段

因为设置$scene之后,会自动执行的scene的main方法,而YE.new,在执行ini ...

感谢版主回答.
我把main改成initialize之后,虽说可以在事件中调用,
但是调用后画面全部卡住,无法动弹,光标也是不动的.
这是什么问题出现的呢?
作者: guoxiaomi    时间: 2017-4-13 11:37
梦想始终会醒 发表于 2017-4-13 11:23
感谢版主回答.
我把main改成initialize之后,虽说可以在事件中调用,
但是调用后画面全部卡住,无法动弹,光 ...

是这样的,你看看main里面的代码,顺序执行,由于没有修改$scene,所以会直接跳出循环,执行后面的Graphics.freeze方法。如此就把整个画面卡住了。

如果正常通过设置$scene来调用,每次退出重新进入下一个scene的时候,会调用Graphics.transition方法,解除画面冻结。但是你这个本来就是在Scene_Map中的循环,所以没有调用Graphics.transition方法前,画面会处于冻结状态。
作者: 梦想始终会醒    时间: 2017-4-13 15:09
guoxiaomi 发表于 2017-4-13 11:37
是这样的,你看看main里面的代码,顺序执行,由于没有修改$scene,所以会直接跳出循环,执行后面的Graphi ...

非常感谢




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