Project1

标题: 好吧,又是窗口(Window)的问题 [打印本页]

作者: clear仔    时间: 2013-7-27 21:23
标题: 好吧,又是窗口(Window)的问题
本帖最后由 clear仔 于 2013-7-27 21:25 编辑

想弄个在战斗中显示状态信息的东西。
先追加了类:
RUBY 代码复制
  1. class Window_State < Window_Base
  2.   def initialize
  3.     super(160,0,480,320)
  4.     self.opacity = 160
  5.     self.back_opacity = 160
  6.     self.contents = Bitmap.new(384,256)
  7.   end
  8.   def make_text
  9.     for i in 0..$show_state_choose.index
  10.       case $show_state_choose.commands[i]
  11.       when "战斗不能"
  12.         a = "\\C[2]名称:战斗不能"
  13.         b = "效果:\\n因受重伤而不能行动,若战斗结束时仍然处于此状态,\\n将无法获得战斗经验。"      
  14.       else
  15.         a = "aaaaaaaa"
  16.         b = "bbbbbbbb"
  17.       end
  18.       end
  19.       self.contents.draw_text(16,16,224,32,a)
  20.       self.contents.draw_text(16,48,224,32,b)
  21.     end
  22.     end
  23. class Window_Command < Window_Selectable
  24.   attr_accessor :commands
  25. end



然后在Scene_Battle里添加了:


RUBY 代码复制
  1. def state_start
  2.      @window_help.visible = false if @window_help
  3.            @party_command_window.active = false
  4.            @party_command_window.visible = false
  5.            start_actor_select
  6.          if Input.trigger?(Input::C)
  7.            $arrow_index =  @actor_arrow.actor
  8.            end_actor_select
  9.            $states = ["属性"]
  10.            for i in $arrow_index.states
  11.              $states.push($data_states[i].name.to_s)
  12.            end
  13.            $show_state_choose = Window_Command.new(160,$states)
  14.            $show_state_choose.opacity = 160
  15.            $show_state_choose.back_opacity = 160
  16.            $show_state_choose.active = true
  17.            $show_state_choose.height = 320
  18.            @state_window = Window_State.new      
  19.           end
  20.       end
  21.  
  22.       def state_do
  23.       if Input.trigger?(Input::B)
  24.        $show_state_choose.active = false
  25.        $show_state_choose.visible = false
  26.        @window_help.visible = true if @window_help
  27.        @party_command_window.active = true
  28.        @party_command_window.visible = true
  29.        @state_window.visible = false
  30.      end
  31.      @state_window.make_text
  32.     end


将原来的Scene_Battle2中,方法update_phase2中,“when 1 ”的分支改为了
RUBY 代码复制
  1. $game_system.se_play($data_system.decision_se)
  2.         state_start


又在Scene_Battle1中,update方法中,添加了
RUBY 代码复制
  1. if $show_state_choose.active
  2. state_do
  3. return
  4. end

这样应该就可以在摁下逃跑选项的时候选择角色,然后显示选择窗口和信息窗口,随着光标的移动而改变信息窗口的内容了。
可是,明明在生成窗口前,调用了方法start_actor_select,但是就好像跳过了一样没有用,而且按下B键应该可以返回,但是没用,
而且按C键似乎会一直生成窗口,而且光标没有闪烁效果……(反正就是有很多乱七八糟的问题)这是怎么回事?
好吧,如果不想看上面的就看范例吧,搜索“#added” 是我添加的内容。
Project3.zip (201.01 KB, 下载次数: 28) 希望能有人解决……
作者: wwwcctvty    时间: 2013-7-27 21:34
@window_help.visible = false if @window_help 什么意思呀?表示看不懂 if @window_help,,,,求高手解答话说看到好多全局变量哦
作者: clear仔    时间: 2013-7-29 11:07
没有高手帮忙吗?
就是说有好多问题,比如明明调用了方法却貌似没用,设置了visiable和active属性却没效果等等。。。。求帮忙啊,。
作者: clear仔    时间: 2013-7-30 09:12
wwwcctvty 发表于 2013-7-27 21:34
@window_help.visible = false if @window_help 什么意思呀?表示看不懂 if @window_help,,,,求高手解 ...


选择逃跑选项后开始选择角色。(这个没有弄出来,好像跳过了这个方法似的)
选择完角色后弹出两个窗口:
左边是命令窗口(WINDOW_COMMAND),右边是文字窗口
但是上面的帮助窗口明明visible设为false了却仍有显示……
命令窗口的选项第一个为“属性”,其他的为角色当前的状态
文字窗口显示的文字随命令窗口的光标的改变而改变。

2.jpg (254.01 KB, 下载次数: 7)

2.jpg

2.jpg (144.17 KB, 下载次数: 8)

2.jpg

作者: 弗雷德    时间: 2013-8-2 14:21
貌似俺游戏中写了个类似的功能,您想要的是不是这种效果?


是的话俺就照着这个效果修改了。
作者: satgo1546    时间: 2013-8-2 15:40
粗看了一下,感觉就是没update的后果。




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