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

Project1

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

[已经解决] 关于active

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
帖子
203
跳转到指定楼层
1
发表于 2013-8-24 15:34:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 九靈 于 2013-8-25 16:26 编辑

Window_Selectable 中
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 刷新画面
  3.   #--------------------------------------------------------------------------
  4.   def update
  5.     super
  6.     # 可以移动光标的情况下
  7.     if self.active and @item_max > 0 and [url=home.php?mod=space&uid=370741]@Index[/url] >= 0
  8.       # 方向键下被按下的情况下
  9.       if Input.repeat?(Input::DOWN)
  10.         # 列数不是 1 并且方向键的下的按下状态不是重复的情况、
  11.         # 或光标位置在(项目数-列数)之前的情况下
  12.         if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
  13.            @index < @item_max - @column_max
  14.           # 光标向下移动
  15.           $game_system.se_play($data_system.cursor_se)
  16.           @index = (@index + @column_max) % @item_max
  17.         end
  18.       end

if self.active and @item_max > 0 and @index >= 0 的self.active 什么时候变成 true 了?
不见self.active = true 这个东西

Lv3.寻梦者

梦石
0
星屑
2744
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

2
发表于 2013-8-24 15:37:56 | 只看该作者
本帖最后由 myownroc 于 2013-8-24 15:51 编辑

只要是对象的值是true/false,后面的 = true 是可以省略的,在很多语言中都可以省略.
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
550
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
3
发表于 2013-8-24 16:24:45 | 只看该作者
默认值是true。
另外,active指定当前的焦点窗口,只有焦点在某个窗口上才能操作此窗口。

评分

参与人数 1星屑 +80 收起 理由
︶ㄣ牛排ぶ + 80 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
帖子
203
4
 楼主| 发表于 2013-8-24 17:21:38 | 只看该作者
本帖最后由 九靈 于 2013-8-24 17:23 编辑
satgo1546 发表于 2013-8-24 16:24
默认值是true。
另外,active指定当前的焦点窗口,只有焦点在某个窗口上才能操作此窗口。 ...


其实我是想问self.active 是如何从false 到true的
Sce_Item 中
  1.   #--------------------------------------------------------------------------
  2.   # ● 刷新画面 (物品窗口被激活的情况下)
  3.   #--------------------------------------------------------------------------
  4.   def update_item
  5.     # 按下 B 键的情况下
  6.     if Input.trigger?(Input::B)
  7.       # 演奏取消 SE
  8.       $game_system.se_play($data_system.cancel_se)
  9.       # 切换到菜单画面
  10.       $scene = Scene_Menu.new(0)
  11.       return
  12.     end
  13.     # 按下 C 键的情况下
  14.     if Input.trigger?(Input::C)
  15.       # 获取物品窗口当前选中的物品数据
  16.       @item = @item_window.item
  17.       # 不使用物品的情况下
  18.       unless @item.is_a?(RPG::Item)
  19.         # 演奏冻结 SE
  20.         $game_system.se_play($data_system.buzzer_se)
  21.         return
  22.       end
  23.       # 不能使用的情况下
  24.       unless $game_party.item_can_use?(@item.id)
  25.         # 演奏冻结 SE
  26.         $game_system.se_play($data_system.buzzer_se)
  27.         return
  28.       end
  29.       # 演奏确定 SE
  30.       $game_system.se_play($data_system.decision_se)
  31.       # 效果范围是我方的情况下
  32.       if @item.scope >= 3
  33.         # 激活目标窗口
  34.         @item_window.active = false
复制代码
@item_window.active = false 之后
  1.   #--------------------------------------------------------------------------
  2.   # ● 刷新画面
  3.   #--------------------------------------------------------------------------
  4.   def update
  5.     # 刷新窗口
  6.     @help_window.update
  7.     @item_window.update
  8.     @target_window.update
  9.     # 物品窗口被激活的情况下: 调用 update_item
  10.     if @item_window.active
  11.       update_item
  12.       return
  13.     end
复制代码
@item_window.update 再到Win_Selective 的self.active (<===从false变成true了)

不过后来想了一下
应该是super 到Window 的update 中把self.active 刷新成true了
话说Window 里有update 吗?
F1 里没写= =
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2744
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

5
发表于 2013-8-24 17:26:36 | 只看该作者
九靈 发表于 2013-8-24 17:21
其实我是想问self.active 是如何从false 到true的
Sce_Item 中@item_window.active = false 之后@item_wi ...

Window有update方法,
在创建实例的时候,active就是true了.

评分

参与人数 1星屑 +80 收起 理由
︶ㄣ牛排ぶ + 80 认可答案

查看全部评分

(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
64
在线时间
4352 小时
注册时间
2007-8-31
帖子
1982
6
发表于 2013-8-24 17:28:29 | 只看该作者
你举得Scene_Item中有赋值呀
默认的142行
@item_window.active = true
我真是王小二过年,一年不如一年。目前正在寻找状态中,努力找回当初的动力!
“底蕴制作者”—asperta最新博客开通!以后将在这里更新制作进度报告!
我的作品官网:http://www.asperta.org/
ASPERTA世界论坛:http://bbs.asperta.org/


回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
帖子
203
7
 楼主| 发表于 2013-8-24 17:39:04 | 只看该作者
asperta 发表于 2013-8-24 17:28
你举得Scene_Item中有赋值呀
默认的142行
@item_window.active = true

不!
执行
  1.     if @item_window.active
  2.       update_item
  3.       return
  4.     end
复制代码
之后return了
之后又
@item_window.update

点评

可能是super的过程中赋值了,没必要研究这么细吧...  发表于 2013-8-24 18:23
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
64
在线时间
4352 小时
注册时间
2007-8-31
帖子
1982
8
发表于 2013-8-24 19:00:19 | 只看该作者
和super无关
active默认就是true
在 @item_window.active = false 之后别忘了后面还有句 @target_window.active = true
接着就是update_target的事情了
你看def update_target
这里按下取消键Input::B退出目标窗口后,item_window又被激活了

点评

好像...  发表于 2013-8-24 20:51
我真是王小二过年,一年不如一年。目前正在寻找状态中,努力找回当初的动力!
“底蕴制作者”—asperta最新博客开通!以后将在这里更新制作进度报告!
我的作品官网:http://www.asperta.org/
ASPERTA世界论坛:http://bbs.asperta.org/


回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31986
在线时间
5081 小时
注册时间
2012-11-19
帖子
4877

开拓者

9
发表于 2013-8-25 13:11:10 | 只看该作者
@item_window.active

貌似用作条件判断才能这样,而并不是改变其开/闭状态。

比如:if @item_window.active   #物品窗口激活的情况下。
      等同于:if @item_window.active ==true
      unless @item_window.active    #在物品窗口激活以外的情况下。
      等同于:unless @item_window.active == true
              或: if @item_window.active == false

要改变其开/闭状态,才是:

@item_window.active = true

@item_window.active = false
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
112
在线时间
551 小时
注册时间
2012-8-18
帖子
1429
10
发表于 2013-8-25 15:32:53 | 只看该作者
在Window的initialize过程中,active在被定义的时候就已经默认为true,Window_Selectable的initialize的super过程最终会调用Window的initialize,就是这样嗯
其实阁下要明白,有一些东西默认值并不是像开关和变量一样的是false和0

点评

因为F1给的资料不全= =  发表于 2013-8-25 16:17
嗯...努力理解中...  发表于 2013-8-25 16:16
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-1 23:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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