查看: 2389|回复: 5

[讨论] scene_title的新写法

[复制链接]
梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2015-7-24 22:40:11 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby" line="1"]class View_Title
  attr_accessor :container
  def initialize(viewprot)
          @viewprot = viewprot
          @background = RGUI::PictureBox.new(0, 0, 544, 480, @viewprot, Cache.background("bg"))
          @background.move(0, 0, -100)
          @button_start = RGUI::SpriteButton.new(100, 200, 30, 80, @viewprot, Cache.system("button1"))
          @button_load = RGUI::SpriteButton.new(100, 240, 30, 80, @viewprot, Cache.system("button2"))
          @button_exit = RGUI::SpriteButton.new(100, 280, 30, 80, @viewprot, Cache.system("button3"))
          hash = {:background => @background, :button_start => @button_start, :button_load => @button_load, :button_exit => @button_exit}
          @container = RGUI::Container.new(hash)
  end

  def update
          @container.update
  end

  def dispose
          @container.dispose
          @viewprot.dispose
  end

  def method_missing(m,*arg,&block)
    return instance_variable_get(m) ? @container[m] : super
  end
end

class Scene_Title

  def start
          SceneManager.clear
          play_title_music
          @view = View_Title.new(Viewprot.new)
          @view.container[2].set_forbid if DataManager.save_file_exists?
          set_event
          super
  end

  def update
    @view.update
    input_update unless scene_changing?
    super
  end

  def terminate
          @view.update
          super
  end

  def transition_speed
    return 20
  end

  def input_update
          if Input.trigger?(DOWN) then
            @view.container.down
          end
          if Input.trigger?(UP) then
            @view.container.up
          end
          if Input.trigger?(C) then
            @view.container.soure
          end
  end

  def set_event
          @view.container.button_start.event(:sure){Scene.goto(Scene_Menu)}
    @view.container.button_load.event(:sure){Scene.goto(Scene_Load)}
    @view.container.button_exit.event(:sure){exit}
  end

  def play_title_music
    $data_system.title_bgm.play
    RPG::BGS.stop
    RPG::ME.stop
  end

end[/pre]
嗯,就是之前提过的那个基于RGSS的GUI库。最近一直在写,不过白天要上班,还得抽时间搞导师找我做的项目,所以写的极慢(是你丫懒吧・゚( ノд`゚)
在这里打个预告,不出意外的话月底应该能出个测试版【估计bug满满
装完逼就跑,真他妈的刺激( ̄∇ ̄)

评分

参与人数 2星屑 +21 收起 理由
龙和许也 + 18 塞糖
emgame + 3 精品文章

查看全部评分

RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。

水月·镜花

梦石
10
星屑
403
在线时间
1181 小时
注册时间
2005-10-22
回帖
1118

开拓者

发表于 2015-7-25 00:25:14 | 显示全部楼层
沒有滑鼠響應差評。選擇項其實做成一個精靈集更好的,方便添加選項。
既然可移動背景都用了,乾脆做一個特效庫吧

点评

鼠标的话要去创建包围盒,一些事件的响应机制也略微不同。最重要的是我还得去封装dll什么的简直烦。。。所以就没做  发表于 2015-7-25 00:47
回复

使用道具 举报

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
 楼主| 发表于 2015-7-25 00:46:34 | 显示全部楼层
电子最终龙 发表于 2015-7-24 18:25
沒有滑鼠響應差評。選擇項其實做成一個精靈集更好的,方便添加選項。
既然可移動背景都用了,乾脆 ...

确实,这是一个不支持鼠标的版本【可能后续会做一个支持鼠标的吧
button的内部实现就是封装的精灵,对于选项组这种后面应该会专门封装一个控件出来吧 现在是靠button+container来模拟。
那个图片框基本就是只能做到图片的拉伸和平铺。。。没什么可动的
至于特效库到时有此打算,不过就只能是另一个项目了吧
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2015-7-25 01:21:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
 楼主| 发表于 2015-7-25 02:03:06 | 显示全部楼层
晴兰 发表于 2015-7-24 19:21
状态机和帧动画呢

百度了一下才明白兰兰说的是什么。。。ORZ
状态机的话。。。这个的封装并不是很完整。。。那个container里有部分实现。这个GUI对于控件的处理就是一个树,每个控件都是叶,如果控件类型是容器则为枝,container提供down和up两个方法来遍历整个控件列表(会自动忽略被禁用的控件)依次调用他们的当前控件的lost_focus和下一个控件的get_focus。容器控件有一个esc的方法用来返回父容器。
至于帧动画。。。这种玩意貌似完全没有的样子

点评

RM里面focus模型的个人感觉是不如selected_object模型……当然focus是因为你完全控制,selected_object是包括了你没有自己处理的对象比如其他的Sprite  发表于 2015-7-25 02:26
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

梦石
0
星屑
1547
在线时间
688 小时
注册时间
2009-11-11
回帖
2692
发表于 2015-7-25 10:40:16 | 显示全部楼层
PictureBox是什么东东,我第一次见Y

嘿。嘿。嘿
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部