Project1

标题: - -物品窗口显示图片再一次请求帮忙~~ [打印本页]

作者: 灯笼菜刀王    时间: 2008-7-30 04:09
标题: - -物品窗口显示图片再一次请求帮忙~~
根据亿万星辰前辈的装备大图脚本改的显示物品大图脚本http://rpg.blue/web/htm/news279.htm
先帖自己加的脚本
  1. module RPG
  2. class Item
  3.     def name
  4.       name = @name.split(/@/)[0]
  5.       return name != nil ? name : ''
  6.     end
  7.     def pic_name
  8.       pic_name = @name.split(/@/)[1]
  9.       return pic_name != nil ? pic_name : ""
  10.     end
  11.   end
  12. end
  13. class Window_Itempic < Window_Base
  14. def initialize
  15.    super(0,0,320,416)
  16.    self.contents = Bitmap.new(width-32, height-32)
  17.    @item = nil
  18.    refresh
  19. end
  20. def refresh
  21.    self.contents.clear
  22.    if @item != nil
  23.      bitmap = RPG::Cache.picture(@item.pic_name)
  24.      pic_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  25.      self.contents.blt(0, 0, bitmap, pic_rect)
  26.    end
  27. end
  28. def set_item(item)
  29.     @item = item
  30. end
  31. end
复制代码


根据IamI君的指导~,将刷新部分和set部分分开(其实完全照抄了亿万星辰前辈的装备大图脚本了囧)

然后在Scene_Item中修改
  1. class Scene_Item
  2.   #--------------------------------------------------------------------------
  3.   # ● 主处理
  4.   #--------------------------------------------------------------------------
  5.   def main
  6.     # 生成帮助窗口、物品窗口
  7.     @help_window = Window_Help.new
  8.     @item_window = Window_Item.new
  9.     @item_tu = Window_Itempic.new
  10.     @item_tu.x = 320
  11.     @item_tu.y = 64
  12.     # 关联帮助窗口
  13.     @item_window.help_window = @help_window
  14.     # 生成目标窗口 (设置为不可见・不活动)
  15.     @target_window = Window_Target.new
  16.     @target_window.visible = false
  17.     @target_window.active = false
  18.     # 执行过度
  19.     Graphics.transition
  20.     # 主循环
  21.     loop do
  22.       # 刷新游戏画面
  23.       Graphics.update
  24.       # 刷新输入信息
  25.       Input.update
  26.       # 刷新画面
  27.       update
  28.       # 如果画面切换就中断循环
  29.       if $scene != self
  30.         break
  31.       end
  32.     end
  33.     # 装备过渡
  34.     Graphics.freeze
  35.     # 释放窗口
  36.     @help_window.dispose
  37.     @item_window.dispose
  38.     @target_window.dispose
  39.     ###########################
  40.     @item_tu.dispose
  41.     ###########################
  42.   end
  43.   #################################
  44.   def refresh
  45.     item = @item_window.item
  46.     @item_tu.set_item(item)
  47.   end
  48.   ##################################
  49.   #--------------------------------------------------------------------------
  50.   # ● 刷新画面
  51.   #--------------------------------------------------------------------------
  52.   def update
  53.     # 刷新窗口
  54.     @help_window.update
  55.     @item_window.update
  56.     @target_window.update
  57.     #####################
  58.     @item_tu.refresh
  59.     #####################
  60.     # 物品窗口被激活的情况下: 调用 update_item
  61.     if @item_window.active
  62.       update_item
  63.       return
  64.     end
  65.     # 目标窗口被激活的情况下: 调用 update_target
  66.     if @target_window.active
  67.       update_target
  68.       return
  69.     end
  70.   end
复制代码


可是...这样还是显示不出来...我囧了...按我的理解这样和亿万前辈的应该一样了...可是为什么不能显示大图呢....请问下,我错在哪里~~~

工程:http://rpg.blue/upload_program/files/zb+djdt_97790951.rar [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: nasa123    时间: 2008-7-30 04:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: dbshy    时间: 2008-7-30 04:20
在@item_tu.refresh前家一句refresh
作者: 灯笼菜刀王    时间: 2008-7-30 04:27
以下引用dbshy于2008-7-29 20:20:38的发言:

在@item_tu.refresh前家一句refresh


[本贴由作者于 2008-7-29 20:21:24 最后编辑]


= = 前加?

其实我已经加上了,
#################################
  def refresh
    item = @item_window.item
    @item_tu.set_item(item)
  end
  ##################################
还是要这样写?  refresh.@item_tu.refresh  (@_@)
或者是把它塞到def refresh里面?

作者: dbshy    时间: 2008-7-30 04:29
def update
    # 刷新窗口
    @help_window.update
    @item_window.update
    @target_window.update
    refresh
    #####################
    @item_tu.refresh
    #####################
    # 物品窗口被激活的情况下: 调用 update_item
    if @item_window.active
      update_item
      return
    end
    # 目标窗口被激活的情况下: 调用 update_target
    if @target_window.active
      update_target
      return
    end
  end

请LZ还是理解原理在来编吧
作者: 灯笼菜刀王    时间: 2008-7-30 04:35
以下引用dbshy于2008-7-29 20:29:22的发言:
请LZ还是理解原理在来编吧


= =是可以了....

说实话,我不明白 update和refresh 的区别~~

这个也是我第一次写类似的脚本(-。-其实是因为那个任务活动 + 以为可以画葫芦就行了)

脚本全是按照亿万前辈的原本画葫芦的。(尝试过自己编,可是失败- -)

那,麻烦解释一下update和refresh 的区别好么-。-。
作者: dbshy    时间: 2008-7-30 04:59
懒得打字 = =
自己去看
http://rpg.blue/viewthread.php?tid=79667

或者好好看Window_Gold Window_PlayTime
然后在看SCENEZ中的MAIN 和 UPDATE [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




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