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

Project1

 找回密码
 注册会员
搜索

关于状态图标化

查看数: 2208 | 评论数: 9 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-4-22 05:57

正文摘要:

用的是以下脚本 问题是当它的y坐标在上面能把图标都显示出来 但是再把y坐标向下改,图标只显示出一半,已经超出了它能显示的范围 这个怎么改? 问题浏览图: 脚本: RUBY 代码复制#===== ...

回复

芯☆淡茹水 发表于 2013-4-23 18:50:36
本帖最后由 芯☆淡茹水 于 2013-4-23 18:51 编辑
亿万星辰 发表于 2013-4-23 16:56
55行这里有问题
    self.contents.blt(296 + 13 * state_size ,36 + 89 ,bitmap, Rect.new(0, 0, 12, 12), ...


话说都看见啦,

还有个地方有问题:


if state_size >= width / 1     
   break   
end

照上面的话可同时显示 120 个图标~~~
所以觉得应该是这样:

if state_size >= width / 24 - 1
    break   
end

建议LZ把完整脚本发上来,方便查看和更改

点评

其实关于这个参数,还不如直接改成可显示的图标数量更直观……  发表于 2013-4-23 19:38

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 感谢回答

查看全部评分

亿万星辰 发表于 2013-4-23 16:56:14
55行这里有问题
    self.contents.blt(296 + 13 * state_size ,36 + 89 ,bitmap, Rect.new(0, 0, 12, 12), opacity)
应该是坐标以角色的x和y来做一个整体的移动
      self.contents.blt(x + 24 * state_size ,y ,bitmap, Rect.new(0, 0, 24, 24), opacity)
弗雷德 发表于 2013-4-23 16:19:30


晓狼是要这个效果么?
问题出在48行附近
  1. # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)
  2. self.contents.blt(x + 12 * state_size , y , bitmap, Rect.new(0, 0, 12, 12), opacity)
复制代码
这里X的间隔以及描绘的区域都是12,所以只能画出一半,你把12都改成24就成了。横轴X的间隔你自己看着弄吧。
  1. # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)
  2. self.contents.blt(x + 24 * state_size , y , bitmap, Rect.new(0, 0, 24, 24), opacity)
复制代码
弗雷德 发表于 2013-4-23 10:14:36
不知道为啥你的脚本俺复制不了,
你全局搜索一下你使用过draw_actor_state这个方法的地方,然后把draw_actor_state这个方法里的坐标改一下。

这两天心情很差,所以昨天没心情看,不好意思。

点评

还是显示一半的图标  发表于 2013-4-23 12:53
心情不好?怎么了?安慰熊叔...  发表于 2013-4-23 12:22
紫英晓狼1130 发表于 2013-4-23 03:38:15
芯☆淡茹水 发表于 2013-4-22 22:01
觉得 Window_Base 里面的定义应该是这样:

那请问怎样改图标的坐标?
芯☆淡茹水 发表于 2013-4-22 22:01:28
觉得 Window_Base 里面的定义应该是这样:
  1. class Window_Base < Window
  2.   def draw_actor_state(actor, x, y, width = 120)
  3.   state_size = 0  
  4.   for state in actor.states   
  5.     # 图标数量超出宽度就中断循环   
  6.     if state_size >= width / 24 - 1 # 宽 120 ,用 24X24 图标的话,可同时显示 5 个。   
  7.       break   
  8.     end   
  9.     # 此状态不带图标就跳过   
  10.     if !ICON_STATE_IDS.include?(state)      
  11.       next   
  12.     end   
  13.     bitmap = RPG::Cache.icon($data_states[state].name + "_sta.png")   
  14.     if actor.states_turn[state] >= $data_states[state].hold_turn/2      
  15.       opacity = 255   
  16.     else      
  17.       opacity = 100   
  18.     end   
  19.      # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)   
  20.      self.contents.blt(x + 24 * state_size , y, bitmap, Rect.new(0, 0, 24, 24), opacity)   
  21.      state_size += 1  
  22.     end
  23.   end
  24. end
复制代码
芯☆淡茹水 发表于 2013-4-22 21:43:39
本帖最后由 芯☆淡茹水 于 2013-4-22 21:45 编辑

你改坐标可能改错地方了,
第 55 行:self.contents.blt(296 + 13 * state_size ,36 + 89 ,bitmap, Rect.new(0, 0, 12, 12), opacity)
那个 Rect.new(0, 0, 12, 12) 不是改坐标的,把它改回来:Rect.new(0, 0, 24, 24)
坐标是这两个: x =  296 + 13 * state_size
                      y =  36 + 89

(怎么没用传送过来的x,y?)
美丽晨露 发表于 2013-4-22 21:24:54
不好意思,我还真的不懂
我爱吴悦淇 发表于 2013-4-22 18:19:48
把整个窗体发上来吧!
@弗雷德
第55行,看到没。。。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-6-26 08:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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