Project1
标题:
图片选项脚本怎么支持鼠标系统?
[打印本页]
作者:
zxc3824
时间:
2011-2-14 22:52
标题:
图片选项脚本怎么支持鼠标系统?
本帖最后由 zxc3824 于 2011-2-15 12:11 编辑
#==============================================================================
# ■ 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
复制代码
以上那个脚本怎么插入鼠标系统?插入了 脚本以后鼠标系统废了。只见有光标,却不能进入想进的页面.。
我已经按照提示改成2,还是不能用鼠标,能不能提供个鼠标键盘都支持的脚本,实在不行就修改下吧。
作者:
zxc3824
时间:
2011-2-15 23:36
自己顶下自己,晕倒,怎么就没有人来看看嘛?
作者:
pocket梦幻
时间:
2011-2-16 13:28
额......其实也可以把图片PS到图块里...然后画到地图上,在图片上建立事件,决定键按下就选择 算了算了.....直接你看看我的范例吧...
范例.rar
(277.63 KB, 下载次数: 217)
2011-2-16 13:27 上传
点击文件名下载附件
作者:
zxc3824
时间:
2011-2-16 13:30
回复
pocket梦幻
的帖子
我想问下,鼠标系统支持吗?
作者:
pocket梦幻
时间:
2011-2-16 13:45
本帖最后由 pocket梦幻 于 2011-2-16 13:46 编辑
回复
zxc3824
的帖子
图片选项脚本支持鼠标系统......这个范例是另一种思想......
作者:
zxc3824
时间:
2011-2-17 14:16
回复
pocket梦幻
的帖子
我用这个脚本做菜单,却不支持鼠标系统
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1