Project1

标题: 如何改变contents.draw_text的内容? [打印本页]

作者: CR~    时间: 2015-1-16 21:01
标题: 如何改变contents.draw_text的内容?
本帖最后由 hys111111 于 2015-1-17 22:35 编辑

我在
  1. Window_MenuStatus的20行左右做了修改。。
  2.   def refresh
  3.     self.contents.clear
  4.     @item_max = $game_party.actors.size
  5.     for i in 0...$game_party.actors.size
  6.       x = 64
  7.       y = i * 160
  8.       actor = $game_party.actors[i]
  9.       draw_actor_graphic(actor, x - 40, y + 80)
  10.       draw_actor_name(actor, x, y)
  11.       draw_actor_level(actor, x, y + 32)
  12.       draw_actor_state(actor, x + 90, y + 32)
  13.       draw_actor_exp(actor, x, y + 64)
  14.       draw_actor_hp(actor, x + 236, y + 32)
  15.       draw_actor_sp(actor, x + 236, y + 64)
  16.       draw_actor_class(actor, x + 264, y)
  17.     end
  18.   end
复制代码
问题就是,,
      如果我想加一句contents.draw_text(x+144, y, 120, 32, '内容')
那么怎么能让他的内容能变?就像角色的职业那样。
比如,一号角色显示A,二号角色就显示B,三号角色就显示C
当1号开关打开的时候,
一号角色改为显示D
作者: CR~    时间: 2015-1-16 21:04
饿。。还有
draw_actor_class(actor, x + 264, y)显示的内容,颜色要怎么改?
作者: taroxd    时间: 2015-1-16 21:23
本帖最后由 taroxd 于 2015-1-16 21:24 编辑

1. 方法就像角色的职业那样。'内容' 这个东西并不一定要用字符串字面量,也可以用变量或者*方法的返回值*的
2. 修改 contents 的 font 属性。比如 contents.font.color = Color.new(233,233,233,233)
作者: chd114    时间: 2015-1-17 15:17
contents.draw_text(x+144, y, 120, 32, actor.class_name)就是显示角色职业名字
作者: Thylakoid    时间: 2015-1-18 00:06
本帖最后由 Thylakoid 于 2015-1-18 15:36 编辑

不知道我理解得对不对,是不是这个意思。
这个“内容”是新创的,不是数据库中自带的项目,而且对于每个角色,这个内容还是特定的。
如果是这样的话,我能想到的办法:

方法一、用case……when……end式的条件分歧来处理。直接在脚本里把这个“内容”特定地对应每个角色。比如
  1. case $game_party.actors[i].id #当前队员id
  2. when 1 #当前队员是1号角色
  3. contents.draw_text(x+144, y, 120, 32, '内容1')  #显示1号角色对应的“内容1”
  4. when 2 #当前队员是2号角色
  5. contents.draw_text(x+144, y, 120, 32, '内容2')  #显示2号角色对应的“内容2”
  6. 以此类推,总共有多少可以加入队伍的角色就列举多少,中间也可以插入开关的判断。
  7. end
复制代码
方法二、利用数据库自带的项目投机取巧一下。比如你总共有10个可以入队的角色,那么就可以把10以上的角色位置拿来用。比如在数据库中,把11~20号角色的名字对应写成“内容1~10”。这样一来,11号角色的名字就对应1号角色状态窗口里的“内容1”,12号角色的名字就对应2号角色状态窗口里的“内容2”,以此类推。然后就可以省去列举的麻烦,直接在脚本里用
  1. a = $game_party.actors[i].id
  2. contents.draw_text(x+144, y, 120, 32, $game_actors[a+10].name)
复制代码
就可以了,当然中间也可以加入开关判断。




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