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

Project1

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

[原创发布] 简单实用的图片命令按钮[更新]

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
帖子
745
跳转到指定楼层
1
发表于 2008-8-18 21:58:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
使用方法:
该脚本是用图片做命令按钮,一般用于用图片代替菜单中的窗口命令钮,美化游戏。
使用起来比较简单,脚本会自动判断位置。
运动类型为两种:
注意,如果支持鼠标请配上鼠标脚本。
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],1/2)
    #################################################
  大概就这样了,不明白看范例游戏吧。
注意,如果支持鼠标请配上鼠标脚本。

先把脚本贴上
  1. #==============================================================================
  2. # ■ Window_Picture_Command
  3. #------------------------------------------------------------------------------
  4. =begin
  5. 该脚本是用图片做命令按钮,使用起来比较简单,脚本会自动判断位置。
  6. 使用方法:
  7. 与调用一般命令窗口一样!
  8. type描绘类型
  9. type = 1 只支持键盘
  10. type = 2 支持键盘+鼠标
  11. 如:先设定一个命令按钮图片以及坐标
  12. p1 = ["图片名",图片X坐标,图片Y坐标]
  13. 范例游戏里为
  14.     #################################################
  15.     s1 = ["新游戏",100,0]
  16.     s2 = ["继续游戏",200,150]
  17.     s3 = ["离开游戏",300,200]
  18.     @command_window = Window_Picture_Command.new([s1,s2,s3],type)
  19.     #################################################
  20.     这里的type的值就是刚才所支持的
  21.     type = 1 只支持键盘
  22.     type = 2 支持键盘+鼠标   
  23.     #################################################
  24.     s1 = ["新游戏",100,0]
  25.     s2 = ["继续游戏",200,150]
  26.     s3 = ["离开游戏",300,200]
  27.     @command_window = Window_Picture_Command.new([s1,s2,s3],2)
  28.     #################################################
  29.   大概就这样了,不明白看范例游戏吧。

  30. =end
  31. #==============================================================================
  32. class Window_Picture_Command < Window_Selectable
  33.   #--------------------------------------------------------------------------
  34.   # ● 初始化对像
  35.   #     width    : 窗口的宽
  36.   #     commands : 命令字符串序列
  37.   #--------------------------------------------------------------------------
  38.   def initialize(commands,type=1)
  39.     # 由命令的个数计算出窗口的高
  40.     super(0, 0, 640, 480)
  41.     @item_max = commands.size
  42.     @commands = commands
  43.     @dash = []
  44.     @sprite = []
  45.     @type = type
  46.     @move_index = self.index
  47.     self.opacity = 0
  48.     self.contents = Bitmap.new(width - 32, @item_max * 32)
  49.     refresh
  50.     self.index = 0
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 刷新
  54.   #--------------------------------------------------------------------------
  55.   def refresh
  56.     self.contents.clear
  57.     for i in 0...@item_max
  58.       draw_picture_item(i, @type)
  59.     end
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 释放
  63.   #--------------------------------------------------------------------------
  64.   def dispose
  65.     super
  66.     for index in @dash
  67.      if @sprite[index] != nil
  68.        @sprite[index].dispose
  69.        @sprite[index].bitmap.dispose
  70.      end
  71.     end
  72.   end  
  73.   #--------------------------------------------------------------------------
  74.   # ● 描绘图片项目
  75.   #     index : 项目编号
  76.   #     type  : 描绘类型
  77.   #     type = 1 只支持键盘
  78.   #     type = 2 双面支持
  79.   #--------------------------------------------------------------------------
  80.   def draw_picture_item(index, type)
  81.     @sprite[index] = Sprite.new
  82.     if @commands[index][0] == nil
  83.       p "图片名设置有误"
  84.     end
  85.     if @commands[index][1] == nil
  86.       p "图片X坐标设置有误"
  87.     end
  88.     if @commands[index][2] == nil
  89.       p "图片Y坐标设置有误"
  90.     end
  91.     bitmap = RPG::Cache.picture(@commands[index][0])
  92.     @sprite[index].bitmap = bitmap
  93.     @sprite[index].x = @commands[index][1]
  94.     @sprite[index].y = @commands[index][2]
  95.     @sprite[index].index = index
  96.     if @sprite[index].index != self.index
  97.       @sprite[index].color = Color.new(0,0,0,100)
  98.     else
  99.       @sprite[index].color = Color.new(0,0,0,0)
  100.     end
  101.     @dash.push(index)
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 刷新图片项目
  105.   #--------------------------------------------------------------------------
  106.   def update_item
  107.     if Mouse.get_mouse_pos != nil
  108.     $mouse_x,$mouse_y = Mouse.get_mouse_pos
  109.     end
  110.     if @type == 2
  111.     for index in @dash
  112.      if @sprite[index] != nil
  113.       top_x = @sprite[index].x
  114.       top_y = @sprite[index].y
  115.       bottom_x = top_x + @sprite[index].bitmap.width
  116.       bottom_y = top_y + @sprite[index].bitmap.height
  117.       if ($mouse_x > top_x) and ($mouse_y > top_y) and
  118.            ($mouse_x < bottom_x) and ($mouse_y < bottom_y)
  119.            self.index = @sprite[index].index
  120.            if @move_index != self.index
  121.            Se.ok
  122.            @move_index = self.index
  123.          end
  124.       end
  125.       if @sprite[index].index != self.index
  126.         @sprite[index].color = Color.new(0,0,0,100)
  127.       else
  128.         @sprite[index].color = Color.new(0,0,0,0)
  129.       end
  130.     end
  131.     end
  132.     elsif @type == 1
  133.      for index in @dash
  134.         if @sprite[index].index != self.index
  135.          @sprite[index].color = Color.new(0,0,0,100)
  136.        else
  137.         @sprite[index].color = Color.new(0,0,0,0)
  138.        end
  139.      end  
  140.     end
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 图片项目无效化
  144.   #     index : 项目编号
  145.   #--------------------------------------------------------------------------
  146.   def disable_item(index)
  147.     @sprite[index].color = Color.new(0,0,0,100)
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 刷新
  151.   #--------------------------------------------------------------------------
  152.   alias window_picture_command_update update
  153.   def update
  154.     window_picture_command_update
  155.     update_item
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 更新光标举行
  159.   #--------------------------------------------------------------------------
  160.   def update_cursor_rect
  161.     if @index < 0
  162.       self.cursor_rect.empty
  163.       return
  164.     end
  165.     row = @index / @column_max
  166.     if row < self.top_row
  167.       self.top_row = row
  168.     end
  169.     if row > self.top_row + (self.page_row_max - 1)
  170.       self.top_row = row - (self.page_row_max - 1)
  171.     end
  172.     cursor_width = self.width / @column_max - 32
  173.     x = @index % @column_max * (cursor_width + 32)
  174.     y = @index / @column_max * 32 - self.oy
  175.     self.cursor_rect.set(x+5000, y, cursor_width, 32)
  176.   end
  177. end
  178. #==============================================================================
  179. # ■ Se
  180. #------------------------------------------------------------------------------
  181. # ■ 音效模块
  182. #==============================================================================
  183. module Se
  184.   def self.ok
  185.     $game_system.se_play($data_system.cursor_se)
  186.   end
  187.   def self.no
  188.     $game_system.se_play($data_system.cancel_se)
  189.   end
  190. end
  191. #==============================================================================
  192. # ■ Sprite
  193. #------------------------------------------------------------------------------
  194. # ■ index 选择光标
  195. #==============================================================================
  196. class Sprite
  197.   attr_accessor :index
  198. end
复制代码


更新脚本:
修正了图片的显示问题
并增加了战斗图片菜单的范例。
其实用法都那样
就图片菜单的X,Y坐标和图片名3个属性拉!
新的范例:http://rpg.blue/upload_program/d ... ��钮_119885581.rar
范例图片有点难看自己换吧!




旧的范例:http://rpg.blue/upload_program/files/图片按钮_99496702.rar



Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

2
发表于 2008-8-18 22:02:03 | 只看该作者
对做华丽游戏的人有用……
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3137
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

3
发表于 2008-8-18 22:03:25 | 只看该作者
三态按钮吗?上次已经做出来了(好吧我承认我是有打击人的嫌疑)
但是……按钮按下去要有感觉!感觉!最简单的x+2,y+2
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
帖子
745
4
 楼主| 发表于 2008-8-18 22:04:50 | 只看该作者
以下引用IamI于2008-8-18 14:03:25的发言:

三态按钮吗?上次已经做出来了(好吧我承认我是有打击人的嫌疑)
但是……按钮按下去要有感觉!感觉!最简单的x+2,y+2

三态按钮?
不知道耶~
只是图片做按钮罢了,几个按钮无所谓。
支持鼠标简单点
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

5
发表于 2008-8-18 22:06:55 | 只看该作者
以下引用★_茄孓于2008-8-18 14:04:50的发言:


以下引用IamI于2008-8-18 14:03:25的发言:

三态按钮吗?上次已经做出来了(好吧我承认我是有打击人的嫌疑)
但是……按钮按下去要有感觉!感觉!最简单的x+2,y+2


三态按钮?
不知道耶~
只是图片做按钮罢了,几个按钮无所谓。
支持鼠标简单点

可以顺便加个音效么…… - -
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
帖子
745
6
 楼主| 发表于 2008-8-18 22:07:32 | 只看该作者
有音效呢。你那边没有么?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3137
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

7
发表于 2008-8-18 22:14:49 | 只看该作者
以下引用★_茄孓于2008-8-18 14:07:32的发言:

有音效呢。你那边没有么?

音效是默认的确认SE
三态按钮指平常一个样子,鼠标移到上面一个样子,按下去一个样子(我没记错吧{/ll})
而这个脚本最后一个是没有的……
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
帖子
745
8
 楼主| 发表于 2008-8-18 22:24:42 | 只看该作者
以下引用IamI于2008-8-18 14:14:49的发言:


以下引用★_茄孓于2008-8-18 14:07:32的发言:

有音效呢。你那边没有么?


音效是默认的Selectable里面继承来的
三态按钮指平常一个样子,鼠标移到上面一个样子,按下去一个样子(我没记错吧)
而这个脚本最后一个是没有的……

了解```三态按钮..
那我看看!
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

9
发表于 2008-8-18 22:25:46 | 只看该作者
http://rpg.blue/viewthread.php?tid=88346
可怜的孩子....{/gg}
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
帖子
745
10
 楼主| 发表于 2008-8-18 22:29:36 | 只看该作者
以下引用yangff于2008-8-18 14:25:46的发言:

http://rpg.blue/viewthread.php?tid=88346
可怜的孩子....

我说yangff```
我觉得我的使用方法比你的简单吧?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-25 03:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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