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

Project1

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

[已经解决] 为什么物品栏移动分类,就能改变其他视窗的内容?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1388
在线时间
343 小时
注册时间
2016-7-17
帖子
132
跳转到指定楼层
1
发表于 2020-4-13 08:36:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

我知道是set_handle的作用,可是要怎么模仿他一漾
想用这个做一个解释词语的脚本。

md,标题的问法看来跟sb一样

Lv4.逐梦者

梦石
2
星屑
6682
在线时间
501 小时
注册时间
2018-3-23
帖子
533

R考场第七期银奖

2
发表于 2020-4-13 08:54:49 | 只看该作者
本帖最后由 MCCF 于 2020-4-13 08:56 编辑

明白你的意思了。首先你要看Scene_Item的处理:
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● 生成分类窗口
  3. #--------------------------------------------------------------------------
  4. def create_category_window
  5.   @category_window = Window_ItemCategory.new
  6.   @category_window.viewport = @viewport
  7.   @category_window.help_window = @help_window
  8.   @category_window.y = @help_window.height
  9.   @category_window.set_handler(:ok,     method(:on_category_ok))
  10.   @category_window.set_handler(:cancel, method(:return_scene))
  11. end
  12. #--------------------------------------------------------------------------
  13. # ● 生成物品窗口
  14. #--------------------------------------------------------------------------
  15. def create_item_window
  16.   wy = @category_window.y + @category_window.height
  17.   wh = Graphics.height - wy
  18.   @item_window = Window_ItemList.new(0, wy, Graphics.width, wh)
  19.   @item_window.viewport = @viewport
  20.   @item_window.help_window = @help_window
  21.   @item_window.set_handler(:ok,     method(:on_item_ok))
  22.   @item_window.set_handler(:cancel, method(:on_item_cancel))
  23.   @category_window.item_window = @item_window
  24. end
会看到帮助窗口(在父类定义)被传递给了分类窗口和物品窗口;
物品窗口被传递给了分类窗口。
于是分类窗口改变时就会调用物品窗口的方法让其refresh(刷新)。如Window_ItemCategory内:
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● 更新画面
  3. #--------------------------------------------------------------------------
  4. def update
  5.   super
  6.   @item_window.category = current_symbol if @item_window
  7. end

在Window_ItemList内对应有:
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● 设置分类
  3. #--------------------------------------------------------------------------
  4. def category=(category)
  5.   return if @category == category
  6.   @category = category
  7.   refresh
  8.   self.oy = 0
  9. end

评分

参与人数 1星屑 +100 收起 理由
VIPArcher + 100 认可答案

查看全部评分

祝好。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1388
在线时间
343 小时
注册时间
2016-7-17
帖子
132
3
 楼主| 发表于 2020-4-13 09:17:32 | 只看该作者
MCCF 发表于 2020-4-13 08:54
明白你的意思了。首先你要看Scene_Item的处理:
  #---------------------------------------------------- ...


噢,原来是这样,谢谢大佬!!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv4.逐梦者 (禁止发言)

梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
帖子
1468
4
发表于 2020-4-13 10:24:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1388
在线时间
343 小时
注册时间
2016-7-17
帖子
132
5
 楼主| 发表于 2020-4-14 04:14:59 | 只看该作者
MCCF 发表于 2020-4-13 08:54
明白你的意思了。首先你要看Scene_Item的处理:
  #---------------------------------------------------- ...

想在请教这一段
def include?(item)
    case @entry
    when :item
      item.is_a?(RPG::Item) && !item.key_item?
    when :weapon
      item.is_a?(RPG::Weapon)
    when :armor
      item.is_a?(RPG::Armor)
    when :key_item
      item.is_a?(RPG::Item) && item.key_item?
    else
      false
    end
  end
请问怎么改变这个判定,才能迭代case @entry的判断?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 08:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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