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

Project1

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

[已经解决] 图片选项脚本的一些问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
1083 小时
注册时间
2013-3-29
帖子
2394
跳转到指定楼层
1
发表于 2015-7-12 22:23:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
附件:
图片选项.rar (1.44 MB, 下载次数: 114)
打开菜单:

无异状
指向选项:

红圈的地方有原来的痕迹……
移开选项:

又有选中时的图片残留着……怎么解决?
相关脚本:
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ 图片选项(修改Window_Selectable 和 Window_Command)by 只有金刚心
  4. #  (不支持鼠标)
  5. #------------------------------------------------------------------------------
  6. # 使用方法:按照VA默认的在窗口添加指令的原方法add_command,多填写上参数就可以了。
  7. # 新增参数:
  8. # usepic - 是否使用图片,如果使用图片,则填写true,反正false
  9. # usepic的参数默认false,即不存在图片时使用VA默认的文字指令
  10. # pic- 默认显示图片,默认nil
  11. # over_pic - 当正在选择时的图片,即光标移动上去的图片,默认nil
  12. # overd - 是否已经选择,无需填写
  13. # 例如:add_command("新游戏", :new_game, true, nil, true, "图片1.png", "图片2.png")
  14. #==============================================================================
  15.  
  16. class Window_Selectable < Window_Base
  17.   #--------------------------------------------------------------------------
  18.   # ● 处理光标的移动
  19.   #--------------------------------------------------------------------------
  20.   def process_cursor_move
  21.     return unless cursor_movable?
  22.     last_index = @index
  23.     cursor_down (Input.trigger?(:DOWN))  if Input.repeat?(:DOWN)
  24.     cursor_up   (Input.trigger?(:UP))    if Input.repeat?(:UP)
  25.     cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
  26.     cursor_left (Input.trigger?(:LEFT))  if Input.repeat?(:LEFT)
  27.     cursor_pagedown   if !handle?(:pagedown) && Input.trigger?(:R)
  28.     cursor_pageup     if !handle?(:pageup)   && Input.trigger?(:L)
  29.  
  30.     #★★当光标移动时重新绘制指令★★
  31.     if @index != last_index
  32.     Sound.play_cursor
  33.     #重置指令的参数overd为false
  34.     move_overd_pic?(last_index)
  35.     draw_all_items
  36.     end
  37.  
  38.   end
  39.  
  40.   #--------------------------------------------------------------------------
  41.   # ● 更新光标
  42.   #--------------------------------------------------------------------------
  43.   def update_cursor
  44.     if @cursor_all
  45.       cursor_rect.set(0, 0, contents.width, row_max * item_height)
  46.       self.top_row = 0
  47.     elsif @index < 0
  48.       cursor_rect.empty
  49.     else
  50.  
  51.       #★★更新图片指令★★
  52.       if pic_or_text(@index) == true
  53.         cursor_rect.empty
  54.         overd_pic?(@index)
  55.         redraw_item(@index)
  56.       #保留原来的光标
  57.       else
  58.       ensure_cursor_visible
  59.       cursor_rect.set(item_rect(@index))
  60.       end
  61.  
  62.     end
  63.   end
  64.  
  65.   #★★图片指令函数★★  
  66.   def pic_or_text(index)
  67.   end
  68.   def overd_pic(index)
  69.   end
  70.  
  71. end  
  72.  
  73. class Window_Command < Window_Selectable
  74.  
  75.   #★★添加指令★★
  76.   #(保留原指令:name-指令名称,symbol-对应的符号,enabled-有效状态的标志,ext-任意的扩展数据)
  77.   #(新增参数usepic-是否使用图片,pic-默认显示图片,over_pic-当正在选择时的图片,overd-是否已经选择)
  78.   def add_command(name, symbol, enabled = true, ext = nil, usepic = false, pic = nil, over_pic = nil,overd = false)
  79.     @list.push({:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext,:usepic=>usepic, :pic=>pic, :over_pic=>over_pic, :overd=>overd})
  80.   end
  81.  
  82.   #★★绘制图片指令★★
  83.   def draw_item(index)
  84.     #绘制图片指令
  85.     if @list[index][:usepic] == true && @list[index][:pic] != nil
  86.       if @list[index][:over_pic] != nil  && @list[index][:overd] == true
  87.         @bitmap = Cache.picture(@list[index][:over_pic])
  88.       else
  89.         @bitmap = Cache.picture(@list[index][:pic])
  90.       end
  91.     rect = Rect.new(0, 0, @bitmap.width, @bitmap.height)
  92.     #图片指令的坐标参照文字指令
  93.     contents.blt(index % col_max * (item_width + spacing), index / col_max * item_height, @bitmap, rect)
  94.     @bitmap.dispose
  95.     #保留原来的文字指令
  96.     else
  97.     change_color(normal_color, command_enabled?(index))
  98.     draw_text(item_rect_for_text(index), command_name(index), alignment)
  99.     end  
  100.   end
  101.  
  102.   #★★判断使用图片还是文字★★
  103.   def current_usepic?
  104.     current_data ? current_data[:usepic] : false
  105.   end
  106.  
  107.   def pic_or_text(index)
  108.     return current_usepic?
  109.   end
  110.  
  111.   #★★判断光标是否移动到图片上★★
  112.   def move_overd_pic?(index)
  113.     @list[index][:overd] = false
  114.   end
  115.  
  116.   def overd_pic?(index)
  117.     @list[index][:overd] = true
  118.   end
  119.  
  120. end

RUBY 代码复制
  1. class Window_MenuCommand < Window_Command
  2.   def add_main_commands
  3.     add_command(Vocab::status, :status, true, nil, true, "MENUNOTE", "MENUNOTE_1")
  4.   end

坑的进度如上                                                                                                        点击↑

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

2
发表于 2015-7-13 17:15:27 | 只看该作者
在你给的工程 35行 上插一句
  1. contents.clear
复制代码

评分

参与人数 2星屑 +1 梦石 +1 收起 理由
VIPArcher + 1
冷峻逸 + 1 认可答案

查看全部评分


  -fk: -azogi:
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-23 22:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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