david_ng223 发表于 2014-2-7 08:35
那么即是說:
@category_window的下级窗口會显示指定类别的物品,
而這個會显示指定类别物品的窗口就是@lis ...
是的 我再举个例子
比如我们要实现一个场景Scene_Review 这个场景目的是显示已经经历过的情节
那么场景的左边是一个窗口 用来选择事件(比如【哈斯顿战役】) 右边是另一个窗口 显示详细的描述(XX年XX月XX日 哈斯顿城…………)
假设左边的窗口有这样的部分定义class Widow_ReviewList < Window_Base def info_window=(iw) @info_window = iw end def update # update self update_info if @info_window end def update_info @info_window.set_text(INFORMATION[@index]) end end
class Widow_ReviewList < Window_Base
def info_window=(iw)
@info_window = iw
end
def update
# update self
update_info if @info_window
end
def update_info
@info_window.set_text(INFORMATION[@index])
end
end
右边的窗口有这样的定义class Window_ReviewDetail < Window_Base def set_text(text) contents.clear draw_text_ex(0,0,100,100,text) end end
class Window_ReviewDetail < Window_Base
def set_text(text)
contents.clear
draw_text_ex(0,0,100,100,text)
end
end
很显然 左边的List需要一个下属机构 List会把详细内容告诉下属机构 下属机构负责描绘出来 其中INFORMATION是一个数组 INFORMATION[@index]获取指定序号的事件的详细信息*
那么 我们可以在场景中这样
class Scene_Review < Scene_Base def start super create_detail_window create_list_window end def create_detail_window @detail_window = Window_ReviewDetail.new # do something or not end def create_list_window @list_window = Window_ReviewList.new @list_window.info_window = @detail_window # do sth. or not end end
class Scene_Review < Scene_Base
def start
super
create_detail_window
create_list_window
end
def create_detail_window
@detail_window = Window_ReviewDetail.new
# do something or not
end
def create_list_window
@list_window = Window_ReviewList.new
@list_window.info_window = @detail_window
# do sth. or not
end
end
* 获取指定序号的详细信息并不安全 因为随着游戏进程 各种事件的序号会改变 但这里只是举个例子 |