Project1

标题: 請問如何製作一個窗口界面? [打印本页]

作者: cinapoem    时间: 2011-3-4 23:22
标题: 請問如何製作一個窗口界面?
class Window_Data < Window_Base
  def initialize
    super(440, 0, 200, 480)
    refresh
  end
    def refresh
  self.contents.clear
end

class Scene_Data < Scene_Base
   def start
     @Data_window = Window_Data.new
   end
   def terminate
   end
   def update
     @Data_window.update          # 更新状态窗口
   if Input.trigger?(Input::B)      # 判断是否按下B键
     Sound.play_cancel    # 播放取消音效
     $scene = Scene_Map.new    # 回到菜单画面
   end
   end
end
end
我試著寫了這個...發現我打開界面的時候,人物是可以隨時移動的.而且按取消時,是manu選擇界面.而不是取消這個window_data.new.
改如何修改成好像人物狀態窗口似的?dsu_plus_rewardpost_czw
作者: 945127391    时间: 2011-3-4 23:34
本帖最后由 945127391 于 2011-3-5 00:41 编辑

那个.....你的窗口继承的是Window_Base,所以它只是一个窗口,而不是一个场景(Scene).我一时半会说不清,你不如去找点教程看看,比如雪流星的那篇.


请在def terminate 下添加一句 @Data_window.dispose
作者: cinapoem    时间: 2011-3-5 01:36
回复 945127391 的帖子

class Window_Data < Window_Base
  def initialize
    super(440, 0, 200, 480)
    refresh
  end
    def refresh
  self.contents.clear
end
end
class Scene_Data < Scene_Base
   def start
     @Data_window = Window_Data.new
   end
   def terminate
     @Data_window.dispose
   end
   def update
     @Data_window.update          # 更新状态窗口
   if Input.trigger?(Input::B)      # 判断是否按下B键
     Sound.play_cancel    # 播放取消音效
     $scene = Scene_Map.new    # 回到菜单画面
   end
end
  end
修改完的版本如下...還是不行..
作者: 一箭烂YiJL    时间: 2011-3-5 08:29
其实你能详细说明一下你的脚本想放在Map的取消键?
放在Menu的状态上 ? 还是取替Menu?
作者: 945127391    时间: 2011-3-5 09:28
回复 cinapoem 的帖子

你调用的是不是$scene = Scene_Data.new  ?
如果是的话,调用后背景有没有变成黑色?
作者: 铃仙·优昙华院·因幡    时间: 2011-3-5 09:45
本帖最后由 铃仙·优昙华院·因幡 于 2011-3-5 10:27 编辑

好吧, 是咱错了.

应该是窗口没有 dispose 的原因. 导致 窗口还残留在画面上.
作者: cinapoem    时间: 2011-3-5 11:05
回复 铃仙·优昙华院·因幡 的帖子

簡單地說.我想呼出一個窗口,就像的對話窗口一樣,呼出時,人物是不可移動的,按取消鍵時,窗口消失,返回遊戲.
但是我需要的是一個全屏幕的窗口.
作者: 铃仙·优昙华院·因幡    时间: 2011-3-5 11:06
回复 cinapoem 的帖子

全屏幕的话, 就改成

super(0, 0,544, 416)

主楼的问题是没有 dispose 导致的. 解决办法请看沙发
作者: 一箭烂YiJL    时间: 2011-3-5 11:21
那个窗口的super应该为:super(0, 0,Graphics.width, Graphics.height)  # 这个比八云的方法应该好一点

还有其中一个会导致你认为失败的原因可能是背景全黑色。那个Scene应该这样:
start加:create_menu_background
terminate加:dispose_menu_background
update加:update_menu_background   # (这个加不加也无所谓)
作者: cinapoem    时间: 2011-3-5 12:13
回复 一箭烂YiJL 的帖子

修改後的版本為
class Window_Data < Window_Base
  def initialize
    super(0, 0,Graphics.width, Graphics.height)
    refresh
  end
    def refresh
  self.contents.clear
end
end
class Scene_Data < Scene_Base
   def start
     create_menu_background
     @Data_window = Window_Data.new
   end
   def terminate
     dispose_menu_background
     @Data_window.dispose
   end
   def update
     update_menu_background
     @Data_window.update          # 更新状态窗口
   if Input.trigger?(Input::B)      # 判断是否按下B键
     Sound.play_cancel    # 播放取消音效
     $scene = Scene_Map.new    # 回到菜单画面
   end
end
  end

目前人物還是可以隨便移動,按取消還是直接呼出manu界面.
作者: 一箭烂YiJL    时间: 2011-3-5 12:42
回复 cinapoem 的帖子

先排版一下:
  1. class Window_Data < Window_Base
  2.   def initialize
  3.     super(0, 0,Graphics.width, Graphics.height)
  4.     refresh
  5.   end
  6.   def refresh
  7.     self.contents.clear
  8.   end
  9. end
  10. class Scene_Data < Scene_Base
  11.   def start
  12.     create_menu_background
  13.     @Data_window = Window_Data.new
  14.   end
  15.   def terminate
  16.     dispose_menu_background
  17.     @Data_window.dispose
  18.   end
  19.   def update
  20.     update_menu_background
  21.     @Data_window.update          # 更新状态窗口
  22.     if Input.trigger?(Input::B)      # 判断是否按下B键
  23.       Sound.play_cancel    # 播放取消音效
  24.       $scene = Scene_Map.new    # 回到菜单画面
  25.     end
  26.   end
  27. end
复制代码
然后在地图上,弄个事件,事件脚本为:$scene = Scene_Data.new
这样还会走得动么?取消呼出menu是在Scene_Data还是Scene_Map?
如果你想说Scene_Map的话,你可以用Scene_Menu这个名字取代Scene_Data
作者: Rion幻音    时间: 2011-3-5 12:52
我想吐槽的是这句:
$scene = Scene_Map.new    # 回到菜单画面
唔,菜单变地图了……




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