查看: 1746|回复: 1

[已经过期] 有关Window_BattleStatus的修改问题

[复制链接]
梦石
0
星屑
50
在线时间
59 小时
注册时间
2015-12-24
回帖
36
发表于 2016-3-4 00:14:24 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 RyanBern 于 2016-3-4 13:09 编辑

主要功能,人物站位、状态栏和战斗选项根据该职业的【前卫 中卫 后卫】改变坐标,目前效果如下:
工程截图001.jpg 工程截图002.png

有三个问题:一、其实人物状态栏并没有实现单独窗口,我就是画了一个640*480的透明窗口然后在这之上调整了contents的坐标而已。还是想问怎么实现单独的四个窗口呢~~试过在initialize方法里面添加循环妄图建立四套坐标,但是游戏会被刷爆掉。
二、
[pre lang="Ruby"]
#==============================================================================
# ■ Window_BattleStatus
#------------------------------------------------------------------------------
#  显示战斗画面同伴状态的窗口。
#==============================================================================

class Window_BattleStatus < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @level_up_flags = [false, false, false, false]
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # ● 设置升级标志
  #     actor_index : 角色索引
  #--------------------------------------------------------------------------
  def level_up(actor_index)
    @level_up_flags[actor_index] = true
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.opacity=0
    self.contents.clear
    self.contents.font.size = 10
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      position = $data_classes[actor.class_id].position
      actor_x=0
      actor_y=0
      case position
      when 0
        actor_x = 410
        actor_y = i*100+20
      when 1
        actor_x = 495
        actor_y = i*100+20
      when 2
        actor_x = 580
        actor_y = i*100+20
      end
      draw_actor_name(actor, actor_x-50, actor_y)
      draw_actor_hp_bar(actor,actor_x-50+11,actor_y+10+15,56 )
      draw_actor_hp(actor, actor_x-50, actor_y+15, 40)
      draw_actor_sp_bar(actor,actor_x-50+11,actor_y+30+10,56 )
      draw_actor_sp(actor, actor_x-50, actor_y+30, 40)
      if @level_up_flags
        self.contents.font.color = normal_color
        self.contents.draw_text(actor_x-50, actor_y+50, 120, 32, "LEVEL UP!")
      else
        draw_actor_state(actor, actor_x-50, actor_y+50)
      end
    end
  end
end[/pre]
这是我在Window_BattleStatus下的改动(其余地方实现方式大同小异)~~我觉得这个循环可能是没放对地方,给我的感觉是占用资源非常大,鼠标放在游戏窗口内会不停闪烁~~~求告知原因

三、
示意图001.png
这个示意图是我才是我想实现的战斗站位~~大概意思就是:每个角色被分配坐标的时候会查看相同位置上的角色数,然后选择合适的站位。(不知道表达清楚了没~~)我的想法是在Game_Actor中的screen_y方法中加一个参数,但做到这里就蒙逼了~~~求指点~~。

点评

幽灵:谁才是幽灵  发表于 2016-3-4 11:08
梦石
0
星屑
50
在线时间
59 小时
注册时间
2015-12-24
回帖
36
 楼主| 发表于 2016-3-4 18:49:49 | 显示全部楼层
多谢某位大神帮我编辑帖子~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部