Project1

标题: 戰鬥中視窗問題 [打印本页]

作者: ms0688987    时间: 2010-8-7 20:10
标题: 戰鬥中視窗問題
本帖最后由 ms0688987 于 2010-8-14 19:31 编辑

技能視窗+道具視窗+幫助視窗

要怎麼用圖片當skin呢???????
作者: tree52    时间: 2010-8-7 20:18
再解释一下好么?没看明白,想做成什么样子。
作者: ms0688987    时间: 2010-8-7 20:27
內建是用windows_skin是吧

我想把它用成圖片的取代視窗

某個RMXP範例遊戲
就是用圖片"小窗口"來當戰鬥指令的視窗

想要把戰鬥技能跟道具瀏覽的視窗改成圖片
作者: tree52    时间: 2010-8-7 20:37
回复 ms0688987 的帖子


    哦!这样子啊,我暂时无解,不好意思……也等待下大家的答复。
作者: 六祈    时间: 2010-8-7 20:41
参考Scene_Title的做法
作者: 逸豫    时间: 2010-8-7 20:42
是说背景用图片同时皮肤透明么- -
在所有的需要加背景的窗口的initialize方法最下方写:
self.opacity = 0
@sprite = Sprite.new
@sprite.bitmap = Bitmap.new("图片地址")
@sprite.z = 999
@sprite.visible = self.visible

并在下方追加方法:
追加方法:
def visible=(v)
super
@sprite.visible = v
end
def dispose
super
@sprite.dispose
end
作者: tree52    时间: 2010-8-7 20:47
回复 逸豫 的帖子


        哦,原来是这样子呀!嗯,我试试看……
作者: 逸豫    时间: 2010-8-7 21:26
  1. #==============================================================================
  2. # ■ Window_Item
  3. #------------------------------------------------------------------------------
  4. #  物品画面、战斗画面、显示浏览物品的窗口。
  5. #==============================================================================

  6. class Window_Item < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 64, 640, 416)
  12.     @column_max = 2
  13.     refresh
  14.     self.index = 0
  15.     # 战斗中的情况下将窗口移至中央并将其半透明化
  16.     if $game_temp.in_battle
  17.       self.y = 64
  18.       self.height = 256
  19.       self.back_opacity = 160
  20.     end
  21.     self.opacity = 0
  22.     @sprite = Sprite.new
  23.     @sprite.bitmap = Bitmap.new("Graphics/Pictures/BackGround_Item")
  24.     #@sprite.z = 999
  25.   end
  26.   def dispose
  27.     @sprite.dispose
  28.     super
  29.   end
  30.   def visible=(v)
  31.     @sprite.visible = v
  32.     super
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 获取物品
  36.   #--------------------------------------------------------------------------
  37.   def item
  38.     return @data[self.index]
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 刷新
  42.   #--------------------------------------------------------------------------
  43.   def refresh
  44.     if self.contents != nil
  45.       self.contents.dispose
  46.       self.contents = nil
  47.     end
  48.     @data = []
  49.     # 添加报务
  50.     for i in 1...$data_items.size
  51.       if $game_party.item_number(i) > 0
  52.         @data.push($data_items[i])
  53.       end
  54.     end
  55.     # 在战斗中以外添加武器、防具
  56.     unless $game_temp.in_battle
  57.       for i in 1...$data_weapons.size
  58.         if $game_party.weapon_number(i) > 0
  59.           @data.push($data_weapons[i])
  60.         end
  61.       end
  62.       for i in 1...$data_armors.size
  63.         if $game_party.armor_number(i) > 0
  64.           @data.push($data_armors[i])
  65.         end
  66.       end
  67.     end
  68.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  69.     @item_max = @data.size
  70.     if @item_max > 0
  71.       self.contents = Bitmap.new(width - 32, row_max * 32)
  72.       for i in 0...@item_max
  73.         draw_item(i)
  74.       end
  75.     end
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 描绘项目
  79.   #     index : 项目编号
  80.   #--------------------------------------------------------------------------
  81.   def draw_item(index)
  82.     item = @data[index]
  83.     case item
  84.     when RPG::Item
  85.       number = $game_party.item_number(item.id)
  86.     when RPG::Weapon
  87.       number = $game_party.weapon_number(item.id)
  88.     when RPG::Armor
  89.       number = $game_party.armor_number(item.id)
  90.     end
  91.     if item.is_a?(RPG::Item) and
  92.        $game_party.item_can_use?(item.id)
  93.       self.contents.font.color = normal_color
  94.     else
  95.       self.contents.font.color = disabled_color
  96.     end
  97.     x = 4 + index % 2 * (288 + 32)
  98.     y = index / 2 * 32
  99.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  100.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  101.     bitmap = RPG::Cache.icon(item.icon_name)
  102.     opacity = self.contents.font.color == normal_color ? 255 : 128
  103.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  104.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  105.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  106.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 刷新帮助文本
  110.   #--------------------------------------------------------------------------
  111.   def update_help
  112.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  113.   end
  114. end
复制代码
这是物品窗口
貌似没必要去修改z呢- -
作者: ms0688987    时间: 2010-8-7 21:27
逸豫大

呃...不用透明
純粹是把原本的視窗換成圖片

那個...修改位置能詳細講一下嘛

還有追加方法是...怎麼一回事
作者: ms0688987    时间: 2010-8-7 21:34
時差4分鐘  汗...

感謝逸豫大
作者: ms0688987    时间: 2010-8-8 15:53
出現問題了

主要是增加22~34行
因為不是在$game_temp.in_battle之內
造成Menu中的Item也會出現圖片

如果放到$game_temp.in_battle之中
Menu中的Item雖然不會出現
但是返回的時候顯示@sprite.dispose這行有問題

另一個問題
戰鬥中幫助視窗怎麼把它改成圖片呢?
應該也會跟上面問題一樣吧,變成跟Menu有關聯
作者: 逸豫    时间: 2010-8-12 17:51
@sprite.dispose if $game_temp.in_battle

其他窗口如同上面的窗口
恩……大概就是initialize方法吧,还有dispose visible方法一并追加上去
作者: ms0688987    时间: 2010-8-12 22:26
明天試試看
作者: ms0688987    时间: 2010-8-13 19:52
還是搞不出  
命令視窗+Help改成圖片
參考了alestian_story還是不行
作者: ms0688987    时间: 2010-8-14 13:19
本帖最后由 ms0688987 于 2010-8-14 19:21 编辑

指令欄終於改成圖片了...可是指令文字顏色怎麼改?




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