| 赞 | 46 |
| VIP | |
| 好人卡 | |
| 积分 | 97 |
| 经验 | |
| 最后登录 | 2026-6-17 |
| 在线时间 | 2775 小时 |
梦石0
星屑9716
在线时间2775 小时
注册时间2008-9-5
回帖3458
   
|
发表于 2016-3-13 14:12:30
|
显示全部楼层
本帖最后由 cinderelmini 于 2016-3-13 21:48 编辑
- class Game_Actor
- MAX_SKILL_NUM = 2
- alias :rsn_learn_skill :learn_skill
- def learn_skill(skill_id)
- rsn_learn_skill(skill_id)
- if @skills.size > MAX_SKILL_NUM
- @window_rsn = Window_Forget_Skill.new(120 , 200 , 240 , 160 , self)
- loop do
- Graphics.update
- Input.update
- @window_rsn.update
- break if @window_rsn.disposed?
- end
- end
- end
- end
- class Window_Forget_Skill < Window_Selectable
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # x : 窗口 X 座标
- # y : 窗口 Y 座标
- # width : 窗口宽度
- # height : 窗口高度
- # actor : 角色
- #--------------------------------------------------------------------------
- def initialize(x, y, width, height, actor)
- super(x, y, width, height)
- @actor = actor
- @column_max = 1
- self.index = 0
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 获取技能
- #--------------------------------------------------------------------------
- def skill
- return @data[self.index]
- end
-
-
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- if self.contents != nil
- self.contents.dispose
- self.contents = nil
- end
- @data = []
- for id in @actor.skills
- @data.push($data_skills[id])
- end
- @item_max = @data.size
- if @item_max > 0
- self.contents = Bitmap.new(width - 32, (@item_max+1) * 32) # item_max加一行
- self.contents.draw_text(0, 0, 120, 32, @actor.name)
- for i in 0...@item_max
- draw_item(i)
- end
- end
- end
-
- #--------------------------------------------------------------------------
- # ● 描绘项目
- # index : 项目编号
- #--------------------------------------------------------------------------
- def draw_item(index)
- x = 4
- y = (index+1) * 32 # index加1
- skill = @data[index]
- draw_item_name(skill, x, y)
- end
-
- alias :rsn_update :update
- def update
- rsn_update
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- if Input.trigger?(Input::C)
- $game_system.se_play($data_system.decision_se)
- @actor.forget_skill(skill.id)
- self.dispose
- return
- end
- end
-
- #--------------------------------------------------------------------------
- # ● 更新光标矩形
- #--------------------------------------------------------------------------
- def update_cursor_rect
- # 光标位置不满 0 的情况下
- if @index < 0
- self.cursor_rect.empty
- return
- end
- # 获取当前的行
- row = (@index+1) / @column_max #(index以进一位算)
- # 当前行被显示开头行前面的情况下
- if row < self.top_row
- # 从当前行向开头行滚动
- self.top_row = row
- end
- # 当前行被显示末尾行之后的情况下
- if row > self.top_row + (self.page_row_max - 1)
- # 从当前行向末尾滚动
- self.top_row = row - (self.page_row_max - 1)
- end
- # 计算光标的宽度
- cursor_width = self.width / @column_max - 32
- # 计算光标坐标
- #(坐标都以进一位算)
- x = (@index+1) % @column_max * (cursor_width + 32)
- y = (@index+1) / @column_max * 32 - self.oy
- # 更新光标矩形
- self.cursor_rect.set(x, y, cursor_width, 32)
- end
-
- end
复制代码 也许能成…… |
评分
-
查看全部评分
|