Project1

标题: 請問如何以腳本,使圖片灰階化顯示? [打印本页]

作者: a747266    时间: 2007-6-17 13:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: a747266    时间: 2007-6-17 13:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 美兽    时间: 2007-6-17 21:28
bitmap对象没有直接的灰度属性,实现起来比较消耗资源。

不清楚LZ想要灰化什么图片,若是战斗者图片的话,

则在Spriteset_Battle类的
    # 生成天候
    @weather = RPG::Weather.new(@viewport1)

前面加上,
    @actor_sprites.each{|i| i.tone.gray = 255 }   
则战斗者图片就被灰化了。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: a747266    时间: 2007-6-17 21:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: 美兽    时间: 2007-6-17 21:53
以下引用a747266于2007-6-17 13:42:15的发言:

感謝你的解答

比較耗資源就沒辦法了...
本來是想在選單中,在選擇角色時,
該角色的戰鬥圖會明亮化,而其他角色灰化
類似A-story那樣
但是遊戲中會加入的角色蠻多的,所以不能用同一種方法


可以啊,
把角色图像描绘在新建的sprite上,
脱离原来的Window的contents,
如此就不存在资源浪费之忧。

作者: a747266    时间: 2007-6-17 22:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: a747266    时间: 2007-6-18 08:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: 美兽    时间: 2007-6-19 01:56
覆盖Window_MenuStatus类,仅是范例。

  1. #==============================================================================
  2. # ■ Window_MenuStatus
  3. #------------------------------------------------------------------------------
  4. #  显示菜单画面和同伴状态的窗口。
  5. #==============================================================================

  6. class Window_MenuStatus < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化目标
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 480, 480)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     @actor_img = Array.new   
  14.     for i in 0...$game_party.actors.size
  15.         actor = $game_party.actors[i]
  16.         @actor_img.push Sprite.new
  17.         bit = RPG::Cache.character(actor.character_name, actor.character_hue)
  18.         cw = bit.width / 4
  19.         ch = bit.height / 4
  20.         src_rect = Rect.new(0, 0, cw, ch)
  21.         @actor_img[i].bitmap = Bitmap.new(cw,ch)
  22.         @actor_img[i].bitmap.blt(0, 0, bit, Rect.new(0,0,cw,ch))        
  23.         @actor_img[i].x = 122 + 64      
  24.         @actor_img[i].y = 48 + i * 116      
  25.         @actor_img[i].z = self.z + 1  
  26.     end  
  27.     refresh
  28.     self.active = false
  29.     self.index = -1
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 刷新
  33.   #--------------------------------------------------------------------------
  34.   def refresh
  35.     self.contents.clear
  36.     img_update   
  37.     @item_max = $game_party.actors.size
  38.     for i in 0...$game_party.actors.size
  39.       x = 64
  40.       y = i * 116
  41.       actor = $game_party.actors[i]
  42.       #draw_actor_graphic(actor, x - 40, y + 80)
  43.       draw_actor_name(actor, x, y)
  44.       draw_actor_class(actor, x + 144, y)
  45.       draw_actor_level(actor, x, y + 32)
  46.       draw_actor_state(actor, x + 90, y + 32)
  47.       draw_actor_exp(actor, x, y + 64)
  48.       draw_actor_hp(actor, x + 236, y + 32)
  49.       draw_actor_sp(actor, x + 236, y + 64)
  50.     end
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 刷新光标矩形
  54.   #--------------------------------------------------------------------------
  55.   def update_cursor_rect
  56.     img_update
  57.     if @index < 0
  58.       self.cursor_rect.empty
  59.     else
  60.       self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
  61.     end
  62.   end
  63.   
  64.   def img_update
  65.       for i in 0...$game_party.actors.size
  66.           if i == @index
  67.              @actor_img[i].tone.gray = 0
  68.           else   
  69.              @actor_img[i].tone.gray = 255            
  70.           end
  71.       end   
  72.   end

  73.   def dispose
  74.      super
  75.      @actor_img.each{|i| i.dispose}
  76.   end
  77.   
  78. end
复制代码

作者: a747266    时间: 2007-6-19 05:28
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1