设为首页 收藏本站
登录 /立即注册 /找回密码

URPGs

快捷导航
  • 门户Portal
  • 论坛BBS
  • 群组Group
  • 导读Guide
  • 家园Space
  • 工具Tools
  • 广播Follow
  • 期刊Periodical
  • 排行榜Ranklist
  • 社区茶坊
  • pixlr图片编辑
  • 资源列表
  • photobucket
  • RMVA Lite [In English]
  • RM RTP
  • TryRUBY
  • RMXP+RMVX下载[VeryCD]
  • RMVA下载[66RPG]
搜索
  • 本版
  • 帖子
  • 用户
URPGs»论坛 › 技术讨论 › 技术讨论 › [不作死不会死]选择窗口逻辑泛用容器
返回列表 发新帖
查看: 4532|回复: 1

[RMVA 技术讨论] [不作死不会死]选择窗口逻辑泛用容器

[复制链接]
Ruby200
Ruby200 当前离线
积分
3
查看详细资料 窥视卡 雷达卡
发表于 2013-11-15 00:03:25 | 显示全部楼层 |阅读模式
容器的意思是自动接管某些东西,这里接管了所有handler,包装成一个长得像模式对话框函数一类的东西
测试是:
[code=ruby]DataManager.init
msgbox_p WindowContainer.new(Window_TitleCommand.new).show_command_dialog[/code]

应该返回
1. [你选择的项目, :ok]
或者取消的情况
2. [:cancel, :cancel]

代码

[code=ruby]class WindowContainer
  def initialize(window, autodispose = true)
    @window = window
    @autodispose = autodispose
  end
  
  def set_result(item, index)
    @selected = true
    @result = [item, index]
  end
  
  def show_command_dialog
    raise "" unless Window_Selectable === @window
    x = @window.instance_variable_get(:@list)
    @window.set_handler :ok, lambda{
       set_result x[@window.index], :ok
    }
    @window.set_handler :cancel, lambda{
       set_result :cancel, :cancel
    }
    @selected = false
    while !@selected
      Graphics.update
      Input.update
      @window.update
    end
    end_dialog @result
  end
  
  def end_dialog(opaque)
    if @autodispose
      @window.dispose
    end
    opaque
  end
end[/code]



评分

参与人数 2经验 +80 收起 理由
水终结者 + 50 塞糖~
houyuxiaoyang + 30 塞糖

查看全部评分

回复

使用道具 举报

  • 提升卡
  • 置顶卡
  • 沉默卡
  • 喧嚣卡
  • 变色卡
  • 抢沙发
  • 千斤顶
  • 显身卡
houyuxiaoyang
houyuxiaoyang 当前离线
积分
9
查看详细资料 窥视卡 雷达卡
发表于 2013-11-16 23:07:02 | 显示全部楼层
附个图呗
回复 Like Dislike

使用道具 举报

  • 显身卡
返回列表 发新帖
高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|意见反馈[feedback]| URPGs RPG Maker 游戏制作讨论

GMT+8, 2025-5-9 14:58 , Processed in 0.021109 second(s), 6 queries .

Powered by Discuz! X3.5

© 2011-2019 URPGs (Discuz! X3.4 © 2001-2019 Comsenz Inc.)

积分 0, 距离下一级还需 积分
快速回复 返回顶部 返回列表