设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2259|回复: 5
打印 上一主题 下一主题

[已经过期] 图片选项脚本怎么支持鼠标系统?

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
558
在线时间
256 小时
注册时间
2010-8-25
帖子
371
跳转到指定楼层
1
发表于 2011-2-14 22:52:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 zxc3824 于 2011-2-15 12:11 编辑
  1. #==============================================================================
  2. # ■ Window_Picture_Command
  3. #------------------------------------------------------------------------------
  4. =begin
  5. 注意,如果支持鼠标请配上鼠标脚本。
  6. 该脚本是用图片做命令按钮,使用起来比较简单,脚本会自动判断位置。
  7. 使用方法:
  8. 与调用一般命令窗口一样!
  9. type描绘类型
  10. type = 1 只支持键盘
  11. type = 2 支持键盘+鼠标
  12. 如:先设定一个命令按钮图片以及坐标
  13. p1 = ["图片名",图片X坐标,图片Y坐标]
  14. 范例游戏里为
  15.     #################################################
  16.     s1 = ["新游戏",100,0]
  17.     s2 = ["继续游戏",200,150]
  18.     s3 = ["离开游戏",300,200]
  19.     @command_window = Window_Picture_Command.new([s1,s2,s3],type)
  20.     #################################################
  21.     这里的type的值就是刚才所支持的
  22.     type = 1 只支持键盘
  23.     type = 2 支持键盘+鼠标   
  24.     #################################################
  25.     s1 = ["新游戏",100,0]
  26.     s2 = ["继续游戏",200,150]
  27.     s3 = ["离开游戏",300,200]
  28.     @command_window = Window_Picture_Command.new([s1,s2,s3],2)
  29.     #################################################
  30.   大概就这样了,不明白看范例游戏吧。
  31. 注意,如果支持鼠标请配上鼠标脚本。
  32. =end
  33. #==============================================================================
  34. class Window_Picture_Command < Window_Selectable
  35.   attr_accessor :active
  36.   #--------------------------------------------------------------------------
  37.   # ● 初始化对像
  38.   #     width    : 窗口的宽
  39.   #     commands : 命令字符串序列
  40.   #--------------------------------------------------------------------------
  41.   def initialize(commands,type=1)
  42.     # 由命令的个数计算出窗口的高
  43.     super(0, 0, 640, 480)
  44.     @item_max = commands.size
  45.     @commands = commands
  46.     @dash = []
  47.     @sprite = []
  48.     @active = true
  49.     @type = type
  50.     @move_index = self.index
  51.     self.opacity = 0
  52.     self.contents = Bitmap.new(width - 32, @item_max * 32)
  53.     refresh
  54.     self.index = 0
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 刷新
  58.   #--------------------------------------------------------------------------
  59.   def refresh
  60.     self.contents.clear
  61.     for i in 0...@item_max
  62.       draw_picture_item(i, @type)
  63.     end
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 释放
  67.   #--------------------------------------------------------------------------
  68.   def dispose
  69.     super
  70.     for index in @dash
  71.      if @sprite[index] != nil
  72.        @sprite[index].dispose
  73.        @sprite[index].bitmap.dispose
  74.      end
  75.     end
  76.   end  
  77.   #--------------------------------------------------------------------------
  78.   # ● 描绘图片项目
  79.   #     index : 项目编号
  80.   #     type  : 描绘类型
  81.   #     type = 1 只支持键盘
  82.   #     type = 2 双面支持
  83.   #--------------------------------------------------------------------------
  84.   def draw_picture_item(index, type)
  85.     @sprite[index] = Sprite.new
  86.     if @commands[index][0] == nil
  87.       p "图片名设置有误"
  88.     end
  89.     if @commands[index][1] == nil
  90.       p "图片X坐标设置有误"
  91.     end
  92.     if @commands[index][2] == nil
  93.       p "图片Y坐标设置有误"
  94.     end
  95.     bitmap = RPG::Cache.picture(@commands[index][0])
  96.     @sprite[index].bitmap = bitmap
  97.     @sprite[index].x = @commands[index][1]
  98.     @sprite[index].y = @commands[index][2]
  99.     @sprite[index].index = index
  100.     if @sprite[index].index != self.index
  101.       @sprite[index].color = Color.new(0,0,0,100)
  102.     else
  103.       @sprite[index].color = Color.new(0,0,0,0)
  104.     end
  105.     @dash.push(index)
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 刷新图片项目
  109.   #--------------------------------------------------------------------------
  110.   def update_item
  111.     if @type == 2
  112.     for index in @dash
  113.      if @sprite[index] != nil
  114.       top_x = @sprite[index].x
  115.       top_y = @sprite[index].y
  116.       mouse_x, mouse_y = Mouse.get_mouse_pos
  117.       bottom_x = top_x + @sprite[index].bitmap.width
  118.       bottom_y = top_y + @sprite[index].bitmap.height
  119.       if (mouse_x > top_x) and (mouse_y > top_y) and
  120.            (mouse_x < bottom_x) and (mouse_y < bottom_y)
  121.            self.index = @sprite[index].index
  122.            if @move_index != self.index
  123.            Se.ok
  124.            @move_index = self.index
  125.          end
  126.       end
  127.       if @sprite[index].index != self.index
  128.         @sprite[index].color = Color.new(0,0,0,100)
  129.       else
  130.         @sprite[index].color = Color.new(0,0,0,0)
  131.       end
  132.     end
  133.     end
  134.     elsif @type == 1
  135.      for index in @dash
  136.         if @sprite[index].index != self.index
  137.          @sprite[index].color = Color.new(0,0,0,100)
  138.        else
  139.         @sprite[index].color = Color.new(0,0,0,0)
  140.        end
  141.      end  
  142.    end
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 图片项目无效化
  146.   #     index : 项目编号
  147.   #--------------------------------------------------------------------------
  148.   def disable_item(index)
  149.     @sprite[index].color = Color.new(0,0,0,100)
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 图片的显示读取
  153.   #--------------------------------------------------------------------------
  154.   def visible
  155.     for i in 0...@item_max
  156.       p @sprite[i].visible = visible
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 图片的显示
  161.   #--------------------------------------------------------------------------
  162.   def visible=(visible)
  163.     for i in 0...@item_max
  164.       @sprite[i].visible = visible
  165.     end
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 刷新
  169.   #--------------------------------------------------------------------------
  170.   def update
  171.     if @active == true
  172.     super
  173.     if self.active and @item_max > 0 and @index >= 0
  174.       if Input.repeat?(Input::DOWN)
  175.         if (@column_max == 1 and Input.trigger?(Input::DOWN)) or @index < @item_max - @column_max
  176.           $game_system.se_play($data_system.cursor_se)
  177.           @index = @index % @item_max
  178.         end
  179.       end
  180.       if Input.repeat?(Input::UP)
  181.         if (@column_max == 1 and Input.trigger?(Input::UP)) or @index >= @column_max
  182.           $game_system.se_play($data_system.cursor_se)
  183.           @index = @index % @item_max
  184.         end
  185.       end
  186.       if Input.repeat?(Input::RIGHT)
  187.         if @column_max >= 2 and @index < @item_max - 1
  188.           $game_system.se_play($data_system.cursor_se)
  189.           @index += 1
  190.         end
  191.       end
  192.       if Input.repeat?(Input::LEFT)
  193.         if @column_max >= 2 and @index > 0
  194.           $game_system.se_play($data_system.cursor_se)
  195.           @index -= 1
  196.         end
  197.       end
  198.       if Input.repeat?(Input::R)
  199.         if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
  200.           $game_system.se_play($data_system.cursor_se)
  201.           @index = [@index + self.page_item_max, @item_max - 1].min
  202.           self.top_row += self.page_row_max
  203.         end
  204.       end
  205.       if Input.repeat?(Input::L)
  206.         if self.top_row > 0
  207.           $game_system.se_play($data_system.cursor_se)
  208.           @index = [@index - self.page_item_max, 0].max
  209.           self.top_row -= self.page_row_max
  210.         end
  211.       end
  212.     end
  213.     if self.active and @help_window != nil
  214.       update_help
  215.     end
  216.      update_cursor_rect
  217.       update_item
  218.     end
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ● 更新光标举行
  222.   #--------------------------------------------------------------------------
  223.   def update_cursor_rect
  224.     if @index < 0
  225.       self.cursor_rect.empty
  226.       return
  227.     end
  228.     row = @index / @column_max
  229.     if row < self.top_row
  230.       self.top_row = row
  231.     end
  232.     if row > self.top_row + (self.page_row_max - 1)
  233.       self.top_row = row - (self.page_row_max - 1)
  234.     end
  235.     cursor_width = self.width / @column_max - 32
  236.     x = @index % @column_max * (cursor_width + 32)
  237.     y = @index / @column_max * 32 - self.oy
  238.     self.cursor_rect.set(x+5000, y, cursor_width, 32)
  239.   end
  240. end
  241. #==============================================================================
  242. # ■ Se
  243. #------------------------------------------------------------------------------
  244. # ■ 音效模块
  245. #==============================================================================
  246. module Se
  247.   def self.ok
  248.     $game_system.se_play($data_system.cursor_se)
  249.   end
  250.   def self.no
  251.     $game_system.se_play($data_system.cancel_se)
  252.   end
  253. end
  254. #==============================================================================
  255. # ■ Sprite
  256. #------------------------------------------------------------------------------
  257. # ■ index 选择光标
  258. #==============================================================================
  259. class Sprite
  260.   attr_accessor :index
  261. end
复制代码
以上那个脚本怎么插入鼠标系统?插入了 脚本以后鼠标系统废了。只见有光标,却不能进入想进的页面.。
我已经按照提示改成2,还是不能用鼠标,能不能提供个鼠标键盘都支持的脚本,实在不行就修改下吧。

Lv2.观梦者

梦石
0
星屑
558
在线时间
256 小时
注册时间
2010-8-25
帖子
371
2
 楼主| 发表于 2011-2-15 23:36:13 | 只看该作者
自己顶下自己,晕倒,怎么就没有人来看看嘛?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
165 小时
注册时间
2010-7-3
帖子
137
3
发表于 2011-2-16 13:28:37 | 只看该作者
额......其实也可以把图片PS到图块里...然后画到地图上,在图片上建立事件,决定键按下就选择  算了算了.....直接你看看我的范例吧...

范例.rar (277.63 KB, 下载次数: 217)
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
558
在线时间
256 小时
注册时间
2010-8-25
帖子
371
4
 楼主| 发表于 2011-2-16 13:30:52 | 只看该作者
回复 pocket梦幻 的帖子

我想问下,鼠标系统支持吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
165 小时
注册时间
2010-7-3
帖子
137
5
发表于 2011-2-16 13:45:08 | 只看该作者
本帖最后由 pocket梦幻 于 2011-2-16 13:46 编辑

回复 zxc3824 的帖子

图片选项脚本支持鼠标系统......这个范例是另一种思想......
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
558
在线时间
256 小时
注册时间
2010-8-25
帖子
371
6
 楼主| 发表于 2011-2-17 14:16:56 | 只看该作者
回复 pocket梦幻 的帖子

我用这个脚本做菜单,却不支持鼠标系统
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-1 13:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表