Project1

标题: 呼,。。一个快速attr图像的东西类似于attr_accessor的产物! [打印本页]

作者: end55rpg    时间: 2012-5-19 22:44
标题: 呼,。。一个快速attr图像的东西类似于attr_accessor的产物!
搞了半天这eval错误真难找啊!!不过终于没BUG了!
调用方案:attr_bitmap :变量名
用途:用此变量建立sprite-bitmap。如何书写变量名?
类似于bitmap(参数)的两种方式:
①变量名__宽_高
②变量名__文件名
完毕!
脚本如下:
  1. ###############################################################################
  2. #代码部分,不可删除!by end66rpg
  3. ###############################################################################
  4. module RPG
  5.   module Cache
  6.     def self.character(*args)
  7.       filename = [*args][0]
  8.       if [*args].size == 1
  9.         self.load_bitmap("Graphics/Characters/", filename)
  10.       else
  11.         hue = [*args][1]
  12.       end
  13.       if hue == nil
  14.         self.load_bitmap("Graphics/Characters/", filename)
  15.       else
  16.       self.load_bitmap("Graphics/Characters/", filename, hue)
  17.       end
  18.     end
  19.   end
  20. end

  21. def attr_bitmap *args
  22.   attr_accessor *args
  23.   ki = []
  24.   [*args].each{|a|
  25.   a = a.to_s
  26.   a=a.split("__")
  27.   a[1].gsub!(/_/){","}
  28.   begin
  29.     eval("b=[#{a[1]}]")
  30.     eval("b = #{a[1]}")
  31.     b
  32.   rescue
  33.     b = a[1].to_s
  34.   end
  35.   b.index(",") ? path = %w|Bitmap.new| : path = %w^RPG::Cache.picture RPG::Cache.character^
  36.   id=0
  37.   b.index(",") ? b : b = "'"+b+"'"
  38.   begin
  39.     eval"@#{a[0]} = RPG::Sprite.new"
  40.     eval"@#{a[0]}.bitmap = #{path[id]}(#{b})"
  41.   rescue
  42.     id += 1
  43.     retry unless id == path.size
  44.     print"没有找到#{b}。"
  45.   end
  46.     }
  47.   end
  48. ###############################################################################
  49. #测试部分,删除!
  50. ###############################################################################
  51. class B
  52.   #attr_bitmap :sprite__QQ#显示名字为QQ的图(从character和picture中搜索!)
  53.   attr_bitmap :sprite2__640_480#建立矩形图
  54.   #print"测试!变量:#{@sprite}\n#{@sprite2}"
  55. end
  56. ###############################################################################
  57. #www.66rpg.com
  58. ###############################################################################
复制代码
好累。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我要糖。。。

作者: Luciffer    时间: 2012-5-19 23:20
你叫一个脚本盲的我是想怎样TwT。。。
作者: sai90306    时间: 2012-5-19 23:39
本帖最后由 sai90306 于 2012-5-19 23:40 编辑

同問 要怎麼用呢?
不知道我有沒有理解錯誤@@
是把圖片的載入事先寫成變量 然後要用到的時候直接從變量中取得嗎?
作者: orzfly    时间: 2012-5-20 06:58
filename = [*args][0]
写成
filename = args[0]
就好。

另外attr_bitmap还是标准的方法啊……为什么不支持多参数挤在一起呢
def attr_bitmap(sym, width, height)
然后不用eval
可以用
s = Sprite.new
s.bitmap = ......
self.instance_variable_set :"@#{sym}", s
作者: 灵魂の补给    时间: 2012-5-20 07:42
orzfly 发表于 2012-5-20 06:58
filename = [*args][0]
写成
filename = args[0]

姨,应该是可以多参数的...
还是你厉害..就用1个eval= =~
作者: hys111111    时间: 2012-5-20 08:26
13.      if hue == nil

14.        self.load_bitmap("Graphics/Characters/", filename)

15.      else

16.      self.load_bitmap("Graphics/Characters/", filename, hue)



晕了……




30.    eval("b=[#{a[1]}]")

31.    eval("b = #{a[1]}")


还是晕……
作者: end55rpg    时间: 2012-5-20 08:46
hys111111 发表于 2012-5-20 08:26
13.      if hue == nil

14.        self.load_bitmap("Graphics/Characters/", filename)

= =~o
偶要糖= =
作者: 真空包装    时间: 2012-5-20 08:52
我的用户组不能在群组评分
楼主辛苦了
作者: feizhaodan    时间: 2012-5-20 10:33
可以别再召唤我了么亲= =b
作者: c248611    时间: 2012-6-22 10:34
请问只是什么脚本嗯?

作者: end55rpg    时间: 2012-6-22 14:24
c248611 发表于 2012-6-22 10:34
请问只是什么脚本嗯?

可以方便编程的代码,其实没什么




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