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

Project1

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

[已经过期] 关于图片选择项的做法

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
21 小时
注册时间
2007-8-5
帖子
18
跳转到指定楼层
1
发表于 2011-2-4 18:47:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想做个两个选项的选择项   用2张图片来做选项    大概就是两张图片一左一右  停留在哪个选项上  那个选项的图片能有一层闪烁效果   我自己试着用事件做了看看  但是弄的乱七八糟的    我不太会用脚本  也想尽量用事件做出来  求教有事件高人指导下嘛

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

2
发表于 2011-2-4 18:51:59 | 只看该作者
  1. #==============================================================================
  2. # ■ Window_Picture_Command
  3. #------------------------------------------------------------------------------
  4. #    创建一个图片按钮的窗口类。
  5. #==============================================================================
  6. class Window_Picture_Command < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     width    : 窗口的宽
  10.   #     commands : 命令字符串序列
  11.   #--------------------------------------------------------------------------
  12.   def initialize(commands,type=1)
  13.     # 由命令的个数计算出窗口的高
  14.     super(0, 0, 640, 480)
  15.     # self.z = 9999
  16.     @item_max = commands.size
  17.     @commands = commands
  18.     @dash = []
  19.     @sprite = []
  20.     @type = type
  21.     @move_index = self.index
  22.     self.opacity = 0
  23.     self.contents = Bitmap.new(width - 32, @item_max * 32)
  24.     refresh
  25.     self.index = 0
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 刷新
  29.   #--------------------------------------------------------------------------
  30.   def refresh
  31.     self.contents.clear
  32.     for i in 0...@item_max
  33.       draw_picture_item(i, @type)
  34.     end
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 释放
  38.   #--------------------------------------------------------------------------
  39.   def dispose
  40.     super
  41.     for index in @dash
  42.      if @sprite[index] != nil
  43.        @sprite[index].dispose
  44.        @sprite[index].bitmap.dispose
  45.      end
  46.     end
  47.   end  
  48.   #--------------------------------------------------------------------------
  49.   # ● 描绘图片项目
  50.   #     index : 项目编号
  51.   #     type  : 描绘类型
  52.   #     type = 1 只支持键盘
  53.   #     type = 2 双面支持
  54.   #--------------------------------------------------------------------------
  55.   def draw_picture_item(index, type)
  56.     @sprite[index] = Sprite.new
  57.     if @commands[index][0] == nil
  58.       p "图片名设置有误"
  59.     end
  60.     if @commands[index][1] == nil
  61.       p "图片X坐标设置有误"
  62.     end
  63.     if @commands[index][2] == nil
  64.       p "图片Y坐标设置有误"
  65.     end
  66.     bitmap = RPG::Cache.picture("../Commands/" + @commands[index][0])
  67.     @sprite[index].bitmap = bitmap
  68.     @sprite[index].x = @commands[index][1]
  69.     @sprite[index].y = @commands[index][2]
  70.     # @sprite[index].z = 999999
  71.     @sprite[index].index = index
  72.     if @sprite[index].index != self.index
  73.       @sprite[index].color = Color.new(0,0,0,100)
  74.     else
  75.       @sprite[index].color = Color.new(0,0,0,0)
  76.     end
  77.     @dash.push(index)
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 刷新图片项目
  81.   #--------------------------------------------------------------------------
  82.   def update_item
  83.    if @type == 2
  84.     for index in @dash
  85.      if @sprite[index] != nil
  86.       top_x = @sprite[index].x
  87.       top_y = @sprite[index].y
  88.       bottom_x = top_x + @sprite[index].bitmap.width
  89.       bottom_y = top_y + @sprite[index].bitmap.height
  90.       if ($mouse_x > top_x) and ($mouse_y > top_y) and
  91.            ($mouse_x < bottom_x) and ($mouse_y < bottom_y)
  92.            self.index = @sprite[index].index
  93.            if @move_index != self.index
  94.            Se.ok
  95.            @move_index = self.index
  96.          end
  97.       end
  98.       if @sprite[index].index != self.index
  99.         @sprite[index].color = Color.new(0,0,0,100)
  100.       else
  101.         @sprite[index].color = Color.new(0,0,0,0)
  102.       end
  103.     end
  104.     end
  105.     elsif @type == 1
  106.      for index in @dash
  107.         if @sprite[index].index != self.index
  108.          @sprite[index].color = Color.new(0,0,0,100)
  109.        else
  110.         @sprite[index].color = Color.new(0,0,0,0)
  111.        end
  112.      end  
  113.     end
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 图片项目无效化
  117.   #     index : 项目编号
  118.   #--------------------------------------------------------------------------
  119.   def disable_item(index)
  120.     @sprite[index].color = Color.new(0,0,0,100)
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 刷新
  124.   #--------------------------------------------------------------------------
  125.   alias window_picture_command_update update
  126.   def update
  127.     window_picture_command_update
  128.     update_item
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 更新光标举行
  132.   #--------------------------------------------------------------------------
  133.   def update_cursor_rect
  134.     if @index < 0
  135.       self.cursor_rect.empty
  136.       return
  137.     end
  138.     row = @index / @column_max
  139.     if row < self.top_row
  140.       self.top_row = row
  141.     end
  142.     if row > self.top_row + (self.page_row_max - 1)
  143.       self.top_row = row - (self.page_row_max - 1)
  144.     end
  145.     cursor_width = self.width / @column_max - 32
  146.     x = @index % @column_max * (cursor_width + 32)
  147.     y = @index / @column_max * 32 - self.oy
  148.     self.cursor_rect.set(x+5000, y, cursor_width, 32)
  149.   end
  150. end
  151. #==============================================================================
  152. # ■ Se
  153. #------------------------------------------------------------------------------
  154. # ■ 音效模块
  155. #==============================================================================
  156. module Se
  157.   def self.ok
  158.     $game_system.se_play($data_system.cursor_se)
  159.   end
  160.   def self.no
  161.     $game_system.se_play($data_system.cancel_se)
  162.   end
  163. end
  164. #==============================================================================
  165. # ■ Sprite
  166. #------------------------------------------------------------------------------
  167. # ■ index 选择光标
  168. #==============================================================================
  169. class Sprite
  170.   attr_accessor :index
  171. end
复制代码
事件……长篇大论呢,还是脚本吧。

点评

楼主似乎没说是在地图上用?  发表于 2011-2-4 19:25
这个...如果要在地图显示出来恐怕对LZ说有点难度...  发表于 2011-2-4 19:09
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
72
在线时间
673 小时
注册时间
2006-10-3
帖子
1795

开拓者

3
发表于 2011-2-4 20:21:30 | 只看该作者
如LZ所愿,事件版奉上。

这个有可能有些缀余成分,几年前的那个我忘记我咋写的了...那个是5个选项。

不过这个不能闪烁,如果要闪烁的话,应该也可以,那就比较复杂了。LZ可以在此基础上进行修改,实现自己想要的功能。

NEWTEST.rar

204.77 KB, 下载次数: 390

点评

[惊现.]  发表于 2011-2-4 20:51
( ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ ω ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้【看猫君玩,我也搞一只】)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
21 小时
注册时间
2007-8-5
帖子
18
4
 楼主| 发表于 2011-2-5 17:53:55 | 只看该作者
由于我做的是AVG。。所以。。肯定是在地图上的。。

点评

请看板凳啊  发表于 2011-2-5 20:11
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-28 14:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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