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

Project1

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

[已经过期] 第三次问这个问题……多余的箭头……

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
653
在线时间
2658 小时
注册时间
2010-6-28
帖子
1361

开拓者

跳转到指定楼层
1
发表于 2011-7-11 19:33:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

如图,使用了沉影不弃的箭头式Window_Selectable窗体和sideview2.6约束汉化横版,在使用技能和物品时会多出来一个箭头。请问如何去除?

Lv3.寻梦者

梦石
0
星屑
1095
在线时间
226 小时
注册时间
2010-4-16
帖子
87
2
发表于 2011-7-11 21:24:20 | 只看该作者
恩……可不可以给出脚本呢?
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
653
在线时间
2658 小时
注册时间
2010-6-28
帖子
1361

开拓者

3
 楼主| 发表于 2011-7-12 09:00:57 | 只看该作者
as853484572 发表于 2011-7-11 21:24
恩……可不可以给出脚本呢?
  1. #==============================================================================
  2. # 箭头式Window_Selectable窗体 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 功能说明: 更改默认Window_Selectable窗体的样式为箭头式
  5. # 使用说明: ① 复制脚本,插入到Main之前
  6. #           ② 制作箭头的动画文件命名为"cursor_arrow",存放到Graphics\System
  7. #              目录下,动画格式为纵向顺序动画,帧数不限,大小不限
  8. #              对动画文件不明白,请参考范例所附的两个动画文件
  9. #           ③ 参数设定在脚本第16行到29行
  10. #              ★其中16行"箭头动画的帧数"为必设项,请务必正确填写
  11. #==============================================================================
  12. class Window_Selectable < Window_Base
  13.   #--------------------------------------------------------------------------
  14.   # ○ 参数设定
  15.   #--------------------------------------------------------------------------
  16.   # ★ 箭头动画的帧数(必设项)
  17.   ARROW_FRAME = 3
  18.   # 箭头动画的速度 (取值范围: 1 ~ 游戏最大帧数)
  19.   ANIMATION_SPEED = 50
  20.   # 项目描绘横向缩进(通常为箭头动画宽度的一半)
  21.   INDENT = 12
  22.   # 箭头横向位置微调
  23.   X_ADJ = 2
  24.   # 箭头纵向位置微调
  25.   Y_ADJ = 0
  26.   # 自定义选择框颜色1
  27.   COLOR1 = Color.new(0, 0, 0, 0)
  28.   # 自定义选择框颜色2
  29.   COLOR2 = Color.new(255, 255, 255, 0)
  30.   #--------------------------------------------------------------------------
  31.   # ○ 常量
  32.   #--------------------------------------------------------------------------
  33.   CURSOR_WAIT = 4                  # 光标缓冲
  34.   #--------------------------------------------------------------------------
  35.   # ● 初始化对象
  36.   #     x       : 窗口的 X 坐标
  37.   #     y       : 窗口的 Y 坐标
  38.   #     width   : 窗口的宽
  39.   #     height  : 窗口的高
  40.   #     spacing : 与项目横向并立的空间
  41.   #--------------------------------------------------------------------------
  42.   def initialize(x, y, width, height, spacing = 32)
  43.     @item_max = 1
  44.     @column_max = 1
  45.     @index = -1
  46.     @spacing = spacing
  47.     super(x, y, width, height)
  48.     create_cursor_rect
  49.     create_cursor_arrow
  50.     # 动画帧
  51.     @arrow_index = 0
  52.     # 动画频率
  53.     @animation_count = 0
  54.     # 光标缓冲
  55.     @cursor_count = 0
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ○ 释放
  59.   #--------------------------------------------------------------------------
  60.   def dispose
  61.     @cursor_rect.dispose
  62.     @cursor_arrow.dispose
  63.     super
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ○ 生成光标选区
  67.   #--------------------------------------------------------------------------
  68.   def create_cursor_rect
  69.     @cursor_rect = Sprite.new
  70.     # 隐藏
  71.     @cursor_rect.visible = false
  72.     @cursor_rect.bitmap = Bitmap.new(self.width + 16, self.height)
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ○ 生成光标箭头
  76.   #--------------------------------------------------------------------------
  77.   def create_cursor_arrow
  78.     # 预读取
  79.     bitmap = Cache.system("cursor_arrow")
  80.     @arrow_width = bitmap.width
  81.     @arrow_height = bitmap.height / ARROW_FRAME
  82.     bitmap.dispose # 释放
  83.    
  84.     @cursor_arrow = Sprite.new
  85.     # 隐藏
  86.     @cursor_arrow.visible = false
  87.     @cursor_arrow.bitmap = Bitmap.new(@arrow_width, @arrow_height)
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ○ 描绘光标
  91.   #--------------------------------------------------------------------------
  92.   def set_cursor_rect(rect)
  93.     # 满宽
  94.     rect.width += 32
  95.     @cursor_rect.bitmap.clear
  96.     @cursor_rect.bitmap.gradient_fill_rect(rect, COLOR1, COLOR2)
  97.     # viewport判断
  98.     unless self.viewport == nil
  99.       @cursor_rect.viewport = self.viewport
  100.       @cursor_arrow.viewport = self.viewport
  101.     end
  102.     # 可视性同步判断
  103.     @cursor_rect.visible = (self.openness == 255 && self.visible)
  104.     @cursor_arrow.visible = (self.openness == 255 && self.visible && self.active)
  105.     # 光标无效时返回
  106.     return unless @cursor_rect.visible
  107.     # 光标跟随选项
  108.     @cursor_rect.x = self.x  - 8
  109.     @cursor_rect.y = self.y  + 16
  110.     @cursor_rect.z = self.z + 1
  111.     @cursor_arrow.x = @cursor_rect.x + rect.x + X_ADJ
  112.     @cursor_arrow.y = @cursor_rect.y + rect.y + Y_ADJ
  113.     @cursor_arrow.z = @cursor_rect.z + 1
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ○ 光标子类 更新箭头
  117.   #--------------------------------------------------------------------------
  118.   def update_cursor_arrow
  119.     # 动画频率计数
  120.     @animation_count += 1
  121.     # 化速度
  122.     if @animation_count > (Graphics.frame_rate - ANIMATION_SPEED)
  123.       @animation_count = 0
  124.       # 动画帧控制
  125.       @arrow_index < (ARROW_FRAME - 1) ? @arrow_index += 1 : @arrow_index = 0
  126.       # 描绘
  127.       bitmap = Cache.system("cursor_arrow")
  128.       rect = Rect.new(0, @arrow_index*@arrow_height, @arrow_width, @arrow_height)
  129.       @cursor_arrow.bitmap.clear
  130.       @cursor_arrow.bitmap.blt(0, 0, bitmap, rect)
  131.       bitmap.dispose # 释放
  132.     end
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 获取项目要描画的矩形
  136.   #     index : 项目编号
  137.   #--------------------------------------------------------------------------
  138.   def item_rect(index)
  139.     rect = Rect.new(0, 0, 0, 0)
  140.     # 预留箭头宽度
  141.     rect.width = (contents.width + @spacing) / @column_max - @spacing - INDENT
  142.     # 窗体边框
  143.     rect.width -= 4
  144.     rect.height = WLH
  145.     # 调整坐标
  146.     rect.x = index % @column_max * (rect.width + @spacing) + INDENT
  147.     # 窗体边框
  148.     rect.x += 4
  149.     rect.y = index / @column_max * WLH
  150.     return rect
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 更新光标
  154.   #--------------------------------------------------------------------------
  155.   def update_cursor
  156.     if @index < 0                   # 光标的位置不满 0 的情况下
  157.       # 光标无效
  158.       @cursor_rect.visible = false
  159.       @cursor_arrow.visible = false
  160.     else                            # 光标的位置为 0 以上的情况下
  161.       row = @index / @column_max    # 获取现在的行数
  162.       if row < top_row              # 如果显示的行在最顶行之前
  163.         self.top_row = row          # 则将最顶行向现在行滚动
  164.       end
  165.       if row > bottom_row           # 如果显示的行在末尾行之后
  166.         self.bottom_row = row       # 则将末尾行向现在行滚动
  167.       end
  168.       rect = item_rect(@index)      # 获取被选择项目的矩形
  169.       rect.y -= self.oy             # 如果矩形与滚动位置重合
  170.       # 光标缓冲
  171.       @cursor_count += 1
  172.       return if @cursor_count < CURSOR_WAIT
  173.       # 更新光标
  174.       set_cursor_rect(rect)
  175.       # 更新箭头
  176.       update_cursor_arrow
  177.     end
  178.     # 清空光标缓冲
  179.     @cursor_count = 0 if @cursor_rect.visible == false
  180.   end
  181. end
  182. #==============================================================================
  183. # ■ Window_Equip
  184. #------------------------------------------------------------------------------
  185. #  装备画面、显示角色现在装备的物品的窗口。
  186. #==============================================================================
  187. class Window_Equip < Window_Selectable
  188.   #--------------------------------------------------------------------------
  189.   # ● 刷新
  190.   #--------------------------------------------------------------------------
  191.   def refresh
  192.     self.contents.clear
  193.     @data = []
  194.     for item in @actor.equips do @data.push(item) end
  195.     @item_max = @data.size
  196.     self.contents.font.color = system_color
  197.     if @actor.two_swords_style
  198.       self.contents.draw_text(INDENT+4, WLH * 0, 92, WLH, Vocab::weapon1)
  199.       self.contents.draw_text(INDENT+4, WLH * 1, 92, WLH, Vocab::weapon2)
  200.     else
  201.       self.contents.draw_text(INDENT+4, WLH * 0, 92, WLH, Vocab::weapon)
  202.       self.contents.draw_text(INDENT+4, WLH * 1, 92, WLH, Vocab::armor1)
  203.     end
  204.     self.contents.draw_text(INDENT+4, WLH * 2, 92, WLH, Vocab::armor2)
  205.     self.contents.draw_text(INDENT+4, WLH * 3, 92, WLH, Vocab::armor3)
  206.     self.contents.draw_text(INDENT+4, WLH * 4, 92, WLH, Vocab::armor4)
  207.     draw_item_name(@data[0], 92, WLH * 0)
  208.     draw_item_name(@data[1], 92, WLH * 1)
  209.     draw_item_name(@data[2], 92, WLH * 2)
  210.     draw_item_name(@data[3], 92, WLH * 3)
  211.     draw_item_name(@data[4], 92, WLH * 4)
  212.   end
  213. end

  214. #==============================================================================
  215. # ■ Window_Message
  216. #------------------------------------------------------------------------------
  217. #  显示文章的信息窗口。
  218. #==============================================================================
  219. class Window_Message < Window_Selectable
  220.   #--------------------------------------------------------------------------
  221.   # ● 更新光标
  222.   #--------------------------------------------------------------------------
  223.   def update_cursor
  224.     if @index >= 0
  225.       x = $game_message.face_name.empty? ? 0 : 112
  226.       y = ($game_message.choice_start + @index) * WLH
  227.       rect = Rect.new(x + 16, y, contents.width - x - 16, WLH)
  228.       # 更新光标
  229.       set_cursor_rect(rect)
  230.       # 更新箭头
  231.       update_cursor_arrow
  232.     else
  233.       # 光标无效
  234.       @cursor_rect.visible = false
  235.       @cursor_arrow.visible = false
  236.     end
  237.   end
  238. end
复制代码

                 无从有中来,有从无中生。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 06:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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