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

Project1

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

[已经解决] 请问Window类的翻页是怎么实现的?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
129
在线时间
219 小时
注册时间
2011-1-19
帖子
108
跳转到指定楼层
1
发表于 2016-7-23 16:44:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我想要做一个诗词系统, 先写了一个选诗词的界面,大致的效果是这样的:(选项框应该要把两行字都包进去)


我是几乎模仿着Window_Item写的,只不过它里面获取物品信息的部分我是直接用常量来搞的,但是不知道为什么,它的光标不能动。一直在闪烁但是不移动,感觉好像是项目数量的问题,貌似这个选项窗口的选项数量被默认成了1(我的猜测)。

请大神帮忙看一看怎么解决。(下面把源代码贴上。有些比较蠢的地方,多多指教= =)

RUBY 代码复制
  1. module Poem
  2.   # 诗词的标题
  3.   POEM_TOPIC = ["登高", "行路难","","","","","","","","","","","","","","","","","","","","11","","","22","22","22","","11","","","22","22","22","","11","","","22","22","22","","11","","","22","22","22"]   
  4.   # 诗词的作者
  5.   POEM_AUTHOR = ["[唐]杜甫", "[唐]李白","","","","","","","","","","","","","","","","","","","","11","","","22"]   
  6.   # 诗词的内容
  7.   POEM_CONTENT = []  
  8.   POEM_CONTENT[0] = "风急天高猿啸哀,渚清沙白鸟飞回。
  9. 无边落木萧萧下,不尽长江滚滚来。
  10. 万里悲秋常作客,百年多病独登台。
  11. 艰难苦恨繁霜鬓,潦倒新停浊酒杯。"
  12.   POEM_CONTENT[1] = "金樽清酒斗十千,玉盘珍羞直万钱。
  13. 停杯投箸不能食,拔剑四顾心茫然。
  14. 欲渡黄河冰塞川,将登太行雪满山。
  15. 闲来垂钓碧溪上,忽复乘舟梦日边。
  16. 行路难!行路难!多歧路,今安在?
  17. 长风破浪会有时,直挂云帆济沧海。"
  18.  
  19.   # 用于出题的句子
  20.   POEM_TESTSEN1 = ["万里悲秋常作客","长风破浪会有时"]  # 每首诗词用于出题的句子上半句
  21.   POEM_TESTSEN2 = ["百年多病独登台","直挂云帆济沧海"]  # 每首诗词用于出题的句子下半句
  22. end
  23.  
  24. class Game_Party
  25.   attr_accessor :poem_get   # 诗词的拥有状态
  26.   attr_accessor :poem_use   # 诗词的使用状态
  27.   alias old_initialize initialize
  28.   def initialize
  29.     old_initialize
  30.     @poem_get = []
  31.     @poem_use = []
  32.     num = Poem::POEM_TOPIC.size
  33.     for i in 0...num
  34.       @poem_get.push false
  35.       @poem_use.push false
  36.     end
  37.   end
  38. end
  39.  
  40.  
  41. class Window_PoemSel < Window_Selectable
  42.   def initialize
  43.     super(0, 0, 640, 480)
  44.     @column_max = 3
  45.     @poem_max = Poem::POEM_TOPIC.size
  46.     refresh
  47.     self.index = 0
  48.   end
  49.   def refresh
  50.     if self.contents != nil
  51.       self.contents.dispose
  52.       self.contents = nil
  53.     end
  54.     self.contents = Bitmap.new(640 - 32, 480 - 32)
  55.     #@title = []
  56.     #@author = []
  57.     for i in 0...Poem::POEM_TOPIC.size
  58.       if $game_party.poem_get[i] == true
  59.         @title = Poem::POEM_TOPIC[i]
  60.         @author = Poem::POEM_AUTHOR[i]
  61.       end
  62.       if $game_party.poem_get[i] == false
  63.         @title = "???"
  64.         @author = "[?]???"
  65.       end
  66.       draw_poem(i)
  67.     end
  68.   end
  69.  
  70.   def draw_poem(index)
  71.     # 颜色  选中为系统色,拥有但未选中为普通色,未拥有为无效色
  72.     if $game_party.poem_use[index] == true
  73.       self.contents.font.color = system_color
  74.     end
  75.     if $game_party.poem_use[index] == false
  76.       if  $game_party.poem_get[index] == true
  77.         self.contents.font.color = normal_color
  78.       else
  79.         self.contents.font.color = disabled_color
  80.       end
  81.     end
  82.     x = 4 + (index % 3) * 213
  83.     y = (index / 3) * 64
  84.     rect = Rect.new(x, y, self.width / @poem_max - 32, 60)
  85.     self.contents.fill_rect(rect, Color.new(0,0,0,0))
  86.     self.contents.draw_text(x, y, 197, 32, @title,1)
  87.     self.contents.draw_text(x, y+32, 197, 32, @author,1)
  88.   end
  89. end
  90.  
  91. # 四 选诗词场景
  92. class Scene_PoemSel
  93.   def main
  94.     @poem_window = Window_PoemSel.new
  95.     @poem_window.active = true
  96.     #================================================
  97.     Graphics.transition
  98.     loop do
  99.       Graphics.update
  100.       Input.update
  101.       update
  102.       if $scene != self
  103.         break
  104.       end
  105.     end
  106.     Graphics.freeze
  107.     #================================================
  108.     @poem_window.dispose
  109.   end
  110.  
  111.   def update
  112.     if Input.trigger?(Input::B)
  113.       $scene = Scene_Map.new
  114.     end
  115.     @poem_window.update
  116.  
  117.   end
  118. end


请大家看一下,为什么不会动= =谢谢!
本人渣渣一枚,求个合伙人  一起做游戏,有意者联系QQ 980497385

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2016-7-23 17:01:36 | 只看该作者
45行改成
RUBY 代码复制
  1. @item_max = Poem::POEM_TOPIC.size

因为@item_max才是表示最多选项数的内部变量,不要动这个地方。

另外RMXP的翻页只支持默认行高为32的情况,对于行高不是32的情况必须要改动Window_Selectable里面的相关方法。

点评

把你改动的代码发到这里来 我稍后看看。  发表于 2016-7-24 13:51
那个下午做的着急没注意,还有一个小问题,向下翻一行之后光标正常了可是下面不出文字是怎么回事  发表于 2016-7-23 21:48
哦哦哦没事了我弄好了 谢谢RB大神~~  发表于 2016-7-23 17:20
我记得是有个方法叫update_cursor_rect,你在里面找一下。  发表于 2016-7-23 17:20
再按下就会跑到界面之外,请问这个该怎么改?  发表于 2016-7-23 17:17
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 10:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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