赞 | 0 |
VIP | 77 |
好人卡 | 306 |
积分 | 1 |
经验 | 85662 |
最后登录 | 2023-11-23 |
在线时间 | 1782 小时 |
Lv1.梦旅人 虱子
- 梦石
- 0
- 星屑
- 121
- 在线时间
- 1782 小时
- 注册时间
- 2010-6-19
- 帖子
- 3597
|
图片选项的话...这个试试- #==============================================================================
- # ■ Window_Picture_Command
- #------------------------------------------------------------------------------
- =begin
- 注意,如果支持鼠标请配上鼠标脚本。
- 该脚本是用图片做命令按钮,使用起来比较简单,脚本会自动判断位置。
- 使用方法:
- 与调用一般命令窗口一样!
- type描绘类型
- type = 1 只支持键盘
- type = 2 支持键盘+鼠标
- 如:先设定一个命令按钮图片以及坐标
- p1 = ["图片名",图片X坐标,图片Y坐标]
- 范例游戏里为
- #################################################
- s1 = ["新游戏",100,0]
- s2 = ["继续游戏",200,150]
- s3 = ["离开游戏",300,200]
- @command_window = Window_Picture_Command.new([s1,s2,s3],type)
- #################################################
- 这里的type的值就是刚才所支持的
- type = 1 只支持键盘
- type = 2 支持键盘+鼠标
- #################################################
- s1 = ["新游戏",100,0]
- s2 = ["继续游戏",200,150]
- s3 = ["离开游戏",300,200]
- @command_window = Window_Picture_Command.new([s1,s2,s3],2)
- #################################################
- 大概就这样了,不明白看范例游戏吧。
- 注意,如果支持鼠标请配上鼠标脚本。
- =end
- #==============================================================================
- class Window_Picture_Command < Window_Selectable
- attr_accessor :active
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # width : 窗口的宽
- # commands : 命令字符串序列
- #--------------------------------------------------------------------------
- def initialize(commands,type=1)
- # 由命令的个数计算出窗口的高
- super(0, 0, 640, 480)
- @item_max = commands.size
- @commands = commands
- @dash = []
- @sprite = []
- @active = true
- @type = type
- @move_index = self.index
- self.opacity = 0
- self.contents = Bitmap.new(width - 32, @item_max * 32)
- refresh
- self.index = 0
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- for i in 0...@item_max
- draw_picture_item(i, @type)
- end
- end
- #--------------------------------------------------------------------------
- # ● 释放
- #--------------------------------------------------------------------------
- def dispose
- super
- for index in @dash
- if @sprite[index] != nil
- @sprite[index].dispose
- @sprite[index].bitmap.dispose
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 描绘图片项目
- # index : 项目编号
- # type : 描绘类型
- # type = 1 只支持键盘
- # type = 2 双面支持
- #--------------------------------------------------------------------------
- def draw_picture_item(index, type)
- @sprite[index] = Sprite.new
- if @commands[index][0] == nil
- p "图片名设置有误"
- end
- if @commands[index][1] == nil
- p "图片X坐标设置有误"
- end
- if @commands[index][2] == nil
- p "图片Y坐标设置有误"
- end
- bitmap = RPG::Cache.picture(@commands[index][0])
- @sprite[index].bitmap = bitmap
- @sprite[index].x = @commands[index][1]
- @sprite[index].y = @commands[index][2]
- @sprite[index].index = index
- if @sprite[index].index != self.index
- @sprite[index].color = Color.new(0,0,0,100)
- else
- @sprite[index].color = Color.new(0,0,0,0)
- end
- @dash.push(index)
- end
- #--------------------------------------------------------------------------
- # ● 刷新图片项目
- #--------------------------------------------------------------------------
- def update_item
- if @type == 2
- for index in @dash
- if @sprite[index] != nil
- top_x = @sprite[index].x
- top_y = @sprite[index].y
- mouse_x, mouse_y = Mouse.get_mouse_pos
- bottom_x = top_x + @sprite[index].bitmap.width
- bottom_y = top_y + @sprite[index].bitmap.height
- if (mouse_x > top_x) and (mouse_y > top_y) and
- (mouse_x < bottom_x) and (mouse_y < bottom_y)
- self.index = @sprite[index].index
- if @move_index != self.index
- Se.ok
- @move_index = self.index
- end
- end
- if @sprite[index].index != self.index
- @sprite[index].color = Color.new(0,0,0,100)
- else
- @sprite[index].color = Color.new(0,0,0,0)
- end
- end
- end
- elsif @type == 1
- for index in @dash
- if @sprite[index].index != self.index
- @sprite[index].color = Color.new(0,0,0,100)
- else
- @sprite[index].color = Color.new(0,0,0,0)
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 图片项目无效化
- # index : 项目编号
- #--------------------------------------------------------------------------
- def disable_item(index)
- @sprite[index].color = Color.new(0,0,0,100)
- end
- #--------------------------------------------------------------------------
- # ● 图片的显示读取
- #--------------------------------------------------------------------------
- def visible
- for i in 0...@item_max
- p @sprite[i].visible = visible
- end
- end
- #--------------------------------------------------------------------------
- # ● 图片的显示
- #--------------------------------------------------------------------------
- def visible=(visible)
- for i in 0...@item_max
- @sprite[i].visible = visible
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def update
- if @active == true
- super
- if self.active and @item_max > 0 and @index >= 0
- if Input.repeat?(Input::DOWN)
- if (@column_max == 1 and Input.trigger?(Input::DOWN)) or @index < @item_max - @column_max
- $game_system.se_play($data_system.cursor_se)
- @index = @index % @item_max
- end
- end
- if Input.repeat?(Input::UP)
- if (@column_max == 1 and Input.trigger?(Input::UP)) or @index >= @column_max
- $game_system.se_play($data_system.cursor_se)
- @index = @index % @item_max
- end
- end
- if Input.repeat?(Input::RIGHT)
- if @column_max >= 2 and @index < @item_max - 1
- $game_system.se_play($data_system.cursor_se)
- @index += 1
- end
- end
- if Input.repeat?(Input::LEFT)
- if @column_max >= 2 and @index > 0
- $game_system.se_play($data_system.cursor_se)
- @index -= 1
- end
- end
- if Input.repeat?(Input::R)
- if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
- $game_system.se_play($data_system.cursor_se)
- @index = [@index + self.page_item_max, @item_max - 1].min
- self.top_row += self.page_row_max
- end
- end
- if Input.repeat?(Input::L)
- if self.top_row > 0
- $game_system.se_play($data_system.cursor_se)
- @index = [@index - self.page_item_max, 0].max
- self.top_row -= self.page_row_max
- end
- end
- end
- if self.active and @help_window != nil
- update_help
- end
- update_cursor_rect
- update_item
- end
- end
- #--------------------------------------------------------------------------
- # ● 更新光标举行
- #--------------------------------------------------------------------------
- def update_cursor_rect
- if @index < 0
- self.cursor_rect.empty
- return
- end
- row = @index / @column_max
- 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 % @column_max * (cursor_width + 32)
- y = @index / @column_max * 32 - self.oy
- self.cursor_rect.set(x+5000, y, cursor_width, 32)
- end
- end
- #==============================================================================
- # ■ Se
- #------------------------------------------------------------------------------
- # ■ 音效模块
- #==============================================================================
- module Se
- def self.ok
- $game_system.se_play($data_system.cursor_se)
- end
- def self.no
- $game_system.se_play($data_system.cancel_se)
- end
- end
- #==============================================================================
- # ■ Sprite
- #------------------------------------------------------------------------------
- # ■ index 选择光标
- #==============================================================================
- class Sprite
- attr_accessor :index
- end
复制代码 |
|