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

Project1

 找回密码
 注册会员
搜索

美工也要做游戏!窗口间信息传递和位图覆盖的问题!?

查看数: 1587 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-3-20 10:47

正文摘要:

本帖最后由 赤原猎犬 于 2015-3-20 10:49 编辑      经过了1昼夜的努力,我把我的RM菜单改良成了这个样子: 等等? 好像有什么地方不对? ...我的选项呢?我的文字呢?     检 ...

回复

喵呜喵5 发表于 2015-3-20 18:31:19
赤原猎犬 发表于 2015-3-20 12:56
有问题的部分是第66行开始到第121行结束。

#encoding:utf-8

问题:
new_face_respond 这个方法没有调用
@portrait 这个哈希没有初始化
是 $game_party.members 不是 $game_party.member

修改后:
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_MenuStatus
  4. #------------------------------------------------------------------------------
  5. #  2015-3-18这段代码只有我和上帝看得懂
  6. #   2015-3-20现在只有上帝看的懂了...
  7. #   2015-3-20你好,我是上帝(By 喵呜喵5)
  8. #==============================================================================

  9. class Window_MenuStatus < Window_Selectable
  10.   #--------------------------------------------------------------------------
  11.   # ● 定义实例变量
  12.   #--------------------------------------------------------------------------
  13.   attr_reader   :pending_index            # 保留位置(整队用)
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化对象
  16.   #--------------------------------------------------------------------------
  17.   def initialize(x, y)
  18.     super(x, y, window_width, window_height)
  19.     @pending_index = -1
  20.     self.opacity=0
  21.     refresh
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 获取窗口的宽度
  25.   #--------------------------------------------------------------------------
  26.   def window_width
  27.     Graphics.width - 160
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 获取窗口的高度
  31.   #--------------------------------------------------------------------------
  32.   def window_height
  33.     Graphics.height
  34.   end

  35.   #--------------------------------------------------------------------------
  36.   # ● 获取标准的边距尺寸
  37.   #--------------------------------------------------------------------------
  38.   def standard_padding
  39.     return 20
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 获取项目数
  43.   #--------------------------------------------------------------------------
  44.   def item_max
  45.     $game_party.members.size
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 获取项目的高度
  49.   #--------------------------------------------------------------------------
  50.   def item_height
  51.     (height - standard_padding * 2) / 4
  52.   end

  53.   #--------------------------------------------------------------------------
  54.   # ● 获取项目的绘制矩形
  55.   #--------------------------------------------------------------------------
  56.   def item_rect(index)
  57.     rect = Rect.new
  58.     rect.width = 300
  59.     rect.height = 100
  60.     rect.x = index % col_max * (item_width + spacing)
  61.     rect.y = index / col_max * item_height
  62.     rect
  63.   end
  64.   #------------------------------------------
  65.   # * 肖像对应
  66.   #-------------------------------------------
  67.   def set_face_respond(symbol,face)
  68.     @portrait ||= {}
  69.     @portrait[symbol] = face
  70.   end

  71.   #---------------------------------------------
  72.   # * 添加肖像对应!
  73.   #----------------------------------------------
  74.   def new_face_respond
  75.     set_face_respond($game_party.members[0],"face_mainhero")
  76.     set_face_respond($game_party.members[1],"face_nothero")
  77.   end   

  78.   #---------------------------------------------------------------------------
  79.   # *角色肖像绘制
  80.   #----------------------------------------------------------------------------
  81.   def draw_portrait(x,y,enabled,portrait)
  82.     bitmap=Cache.picture(portrait)
  83.     rect=Rect.new(0,0,bitmap.width,bitmap.height)
  84.     contents.blt(x,y,bitmap,rect,enabled ? 255 : translucent_alpha)
  85.   end

  86.   #---------------------------------------------------------------------------
  87.   # * 原始-角色肖像绘制
  88.   #----------------------------------------------------------------------------
  89.   #def draw_portrait(x,y,enabled,portrait)
  90.   #  bitmap=Cache.picture("face_mainhero")
  91.   #  rect=Rect.new(0,0,bitmap.width,bitmap.height)
  92.   #  contents.blt(x,y,bitmap,rect,enabled ? 255 : translucent_alpha)
  93.   #end

  94.   #--------------------------------------------------------------------------
  95.   # ● 绘制简单的状态
  96.   #--------------------------------------------------------------------------
  97.   def draw_actor_simple_status(actor, x, y)
  98.     draw_actor_name(actor,x+100,y-line_height)
  99.     #draw_actor_level(actor,x+70,y)
  100.     #draw_actor_icons(actor,x,y + line_height * 2)
  101.     #draw_actor_class(actor,x+150,y)
  102.     draw_actor_hp(actor,x, y + line_height * 1)
  103.     draw_actor_mp(actor,x ,y + line_height * 2)
  104.   end

  105.   #--------------------------------------------------------------------------
  106.   # ● 绘制项目
  107.   #--------------------------------------------------------------------------
  108.   def draw_item(index)
  109.     actor = $game_party.members[index]
  110.     enabled = $game_party.battle_members.include?(actor)
  111.     rect = item_rect(index)
  112.     draw_item_background(index)
  113.     new_face_respond
  114.     draw_portrait(rect.x,rect.y,enabled,@portrait[$game_party.members[index]])
  115.     draw_actor_simple_status(actor, rect.x+100 , rect.y + 25 )
  116.   end

  117.   #--------------------------------------------------------------------------
  118.   # ● 绘制项目的背景
  119.   #--------------------------------------------------------------------------
  120.   def draw_item_background(index)
  121.     if index == @pending_index
  122.       contents.fill_rect(item_rect(index), pending_color)
  123.     end
  124.   end

  125.   #--------------------------------------------------------------------------
  126.   # ● 按下确定键时的处理
  127.   #--------------------------------------------------------------------------
  128.   def process_ok
  129.     super
  130.     $game_party.menu_actor = $game_party.members[index]
  131.   end

  132.   #--------------------------------------------------------------------------
  133.   # ● 返回上一个选择的位置
  134.   #--------------------------------------------------------------------------
  135.   def select_last
  136.     select($game_party.menu_actor.index || 0)
  137.   end

  138.   #--------------------------------------------------------------------------
  139.   # ● 设置保留位置(整队用)
  140.   #--------------------------------------------------------------------------
  141.   def pending_index=(index)
  142.     last_pending_index = @pending_index
  143.     @pending_index = index
  144.     redraw_item(@pending_index)
  145.     redraw_item(last_pending_index)
  146.   end
  147. end
复制代码

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

赤原猎犬 发表于 2015-3-20 12:56:18
本帖最后由 赤原猎犬 于 2015-3-20 12:57 编辑

有问题的部分是第66行开始到第121行结束。

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_MenuStatus
  4. #------------------------------------------------------------------------------
  5. #  2015-3-18这段代码只有我和上帝看得懂
  6. #   2015-3-20现在只有上帝看的懂了...
  7. #==============================================================================
  8.  
  9. class Window_MenuStatus < Window_Selectable
  10.   #--------------------------------------------------------------------------
  11.   # ● 定义实例变量
  12.   #--------------------------------------------------------------------------
  13.   attr_reader   :pending_index            # 保留位置(整队用)
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化对象
  16.   #--------------------------------------------------------------------------
  17.   def initialize(x, y)
  18.     super(x, y, window_width, window_height)
  19.     @pending_index = -1
  20.     self.opacity=0
  21.     refresh
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 获取窗口的宽度
  25.   #--------------------------------------------------------------------------
  26.   def window_width
  27.     Graphics.width - 160
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 获取窗口的高度
  31.   #--------------------------------------------------------------------------
  32.   def window_height
  33.     Graphics.height
  34.   end
  35.  
  36.   #--------------------------------------------------------------------------
  37.   # ● 获取标准的边距尺寸
  38.   #--------------------------------------------------------------------------
  39.   def standard_padding
  40.     return 20
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 获取项目数
  44.   #--------------------------------------------------------------------------
  45.   def item_max
  46.     $game_party.members.size
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 获取项目的高度
  50.   #--------------------------------------------------------------------------
  51.   def item_height
  52.     (height - standard_padding * 2) / 4
  53.   end
  54.  
  55.   #--------------------------------------------------------------------------
  56.   # ● 获取项目的绘制矩形
  57.   #--------------------------------------------------------------------------
  58.   def item_rect(index)
  59.     rect = Rect.new
  60.     rect.width = 300
  61.     rect.height = 100
  62.     rect.x = index % col_max * (item_width + spacing)
  63.     rect.y = index / col_max * item_height
  64.     rect
  65.   end
  66.   #------------------------------------------
  67.   # * 肖像对应
  68.   #-------------------------------------------
  69.   def set_face_respond(symbol,face)
  70.     @portrait[symbol]=face
  71.   end
  72.  
  73.   #---------------------------------------------
  74.   # * 添加肖像对应!
  75.   #----------------------------------------------
  76.   def new_face_respond
  77.     set_face_respond($game_party.member[0],"face_mainhero")
  78.     set_face_respond($game_party.member[1],"face_nothero")
  79.   end   
  80.  
  81.   #---------------------------------------------------------------------------
  82.   # *角色肖像绘制
  83.   #----------------------------------------------------------------------------
  84.   def draw_portrait(x,y,enabled,portrait)
  85.     bitmap=Cache.picture(portrait)
  86.     rect=Rect.new(0,0,bitmap.width,bitmap.height)
  87.     contents.blt(x,y,bitmap,rect,enabled ? 255 : translucent_alpha)
  88.   end
  89.  
  90.   #---------------------------------------------------------------------------
  91.   # * 原始-角色肖像绘制
  92.   #----------------------------------------------------------------------------
  93.   #def draw_portrait(x,y,enabled,portrait)
  94.   #  bitmap=Cache.picture("face_mainhero")
  95.   #  rect=Rect.new(0,0,bitmap.width,bitmap.height)
  96.   #  contents.blt(x,y,bitmap,rect,enabled ? 255 : translucent_alpha)
  97.   #end
  98.  
  99.   #--------------------------------------------------------------------------
  100.   # ● 绘制简单的状态
  101.   #--------------------------------------------------------------------------
  102.   def draw_actor_simple_status(actor, x, y)
  103.     draw_actor_name(actor,x+100,y-line_height)
  104.     #draw_actor_level(actor,x+70,y)
  105.     #draw_actor_icons(actor,x,y + line_height * 2)
  106.     #draw_actor_class(actor,x+150,y)
  107.     draw_actor_hp(actor,x, y + line_height * 1)
  108.     draw_actor_mp(actor,x ,y + line_height * 2)
  109.   end
  110.  
  111.   #--------------------------------------------------------------------------
  112.   # ● 绘制项目
  113.   #--------------------------------------------------------------------------
  114.   def draw_item(index)
  115.     actor = $game_party.members[index]
  116.     enabled = $game_party.battle_members.include?(actor)
  117.     rect = item_rect(index)
  118.     draw_item_background(index)
  119.     draw_portrait(rect.x,rect.y,enabled,@portrait[$game_party.members[index]])
  120.     draw_actor_simple_status(actor, rect.x+100 , rect.y + 25 )
  121.   end
  122.  
  123.   #--------------------------------------------------------------------------
  124.   # ● 绘制项目的背景
  125.   #--------------------------------------------------------------------------
  126.   def draw_item_background(index)
  127.     if index == @pending_index
  128.       contents.fill_rect(item_rect(index), pending_color)
  129.     end
  130.   end
  131.  
  132.   #--------------------------------------------------------------------------
  133.   # ● 按下确定键时的处理
  134.   #--------------------------------------------------------------------------
  135.   def process_ok
  136.     super
  137.     $game_party.menu_actor = $game_party.members[index]
  138.   end
  139.  
  140.   #--------------------------------------------------------------------------
  141.   # ● 返回上一个选择的位置
  142.   #--------------------------------------------------------------------------
  143.   def select_last
  144.     select($game_party.menu_actor.index || 0)
  145.   end
  146.  
  147.   #--------------------------------------------------------------------------
  148.   # ● 设置保留位置(整队用)
  149.   #--------------------------------------------------------------------------
  150.   def pending_index=(index)
  151.     last_pending_index = @pending_index
  152.     @pending_index = index
  153.     redraw_item(@pending_index)
  154.     redraw_item(last_pending_index)
  155.   end
  156. end


简而言之就是我把每个角色的头像都用自己的方法自行设置了,需要想办法重新把他们挂钩,但是显然效果不理想,报错的位置是在第119行
    draw_portrait(rect.x,rect.y,enabled,@portrait[$game_party.members[index]])
nomethoderror
undefined method'[]'for nil:NilClass
....反正我不知道到底该怎么搞才对
zeldafd 发表于 2015-3-20 11:43:43
請把你那本書的相關SPRITE的Z降低
例如你把建構那本書的SPRITE類實例名為@book
那就
@book.z = 1
之類
我不記得表面文字的Z軸是什麼,所以請自己試一試不同的值=.=:
但改的方面應該就是要改Z軸
一般都是個位數就好
喵呜喵5 发表于 2015-3-20 10:58:23
中文八级阅读理解题……好长的题目描述还都是没用的信息…………

尝试1的做法完全可行,只能推断你是哪里写错了,你不附上代码的话完全无法解答

你最开始图片盖住文字是因为你先描绘了文字,再描绘了图片,顺序反过来就行了

最后附加的那个问题…………不给出你出错的代码我也不知道该怎么给你解释……参考帮助窗口如何获取物品列表窗口选择的物品那部分脚本吧
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-15 22:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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