Project1

标题: 使用”draw_text使用\n换行符换行“脚本按F12错误SystemStackError [打印本页]

作者: rt6543ew    时间: 2017-7-13 21:06
标题: 使用”draw_text使用\n换行符换行“脚本按F12错误SystemStackError
错误内容stack level too deep
  1. class Bitmap
  2.   alias :draw_text2 :draw_text unless defined? draw_text2
  3.   def draw_text(*args)
  4.     case  args.size
  5.     when 2
  6.       rect = args[0]
  7.       text = args[1].split("\n")
  8.       align = 0
  9.     when 3
  10.       rect = args[0]
  11.       text = args[1].split("\n")
  12.       align = args[2]%3
  13.     when 5
  14.       rect = Rect.new(*(args[0,4]))
  15.       text = args[4].split("\n")
  16.       align = 0
  17.     when 6
  18.       rect = Rect.new(*(args[0,4]))
  19.       text = args[4].split("\n")
  20.       align = args[5]%3
  21.     else
  22.       raise ArgumentError,"错误的参数个数(#{args.size} to 2,3,5,6)."
  23.     end
  24.     return if text.empty?
  25.     wmax = [text.map{|t| self.text_size(t).width}.max,rect.width].min
  26.     h = self.text_size(text[0]).height
  27.     hmax = [h*text.size,rect.height].min
  28.     y = rect.y+(rect.height-hmax)/2
  29.     x = align==0 ? rect.x : align==2 ? rect.x+rect.width-wmax : rect.x+(rect.width-wmax)/2
  30.     text.each_with_index{|t,i|
  31.       draw_text2(x,y+i*h,wmax,h,t,align)
  32.     }
  33.     self
  34.   end
  35. end
复制代码


原发布帖中有人报告过这个错误,作者给出的意见是第二行最后加unless defined?: draw_text2,但这么弄会报错,见https://rpg.blue/forum.php?mod=v ... &extra=page%3D2
已经按照上头这个帖子的方法修改过,于是又出了这个错
我知道这个错误好像是重定义时方法名重复,但我不知道怎么改。。。。。。
作者: fux2    时间: 2017-7-13 21:29
alias :draw_text2 :draw_text unless $@
即可




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