Project1

标题: [Cache类问题]关于bitmap [打印本页]

作者: 九靈    时间: 2013-8-23 00:23
标题: [Cache类问题]关于bitmap
本帖最后由 九靈 于 2013-8-23 00:26 编辑

源代码
RUBY 代码复制
  1. @Cache={}
  2.     def self.load_bitmap(folder_name, filename, hue = 0)
  3.       path = folder_name + filename
  4.       if not @cache.include?(path) or @cache[path].disposed?
  5.         if filename != ""
  6.           @cache[path] = Bitmap.new(path)
  7.         else
  8.           @cache[path] = Bitmap.new(32, 32)
  9.         end
  10.       end
  11.        if hue == 0
  12.         @cache[path]
  13.       else

问题:
第7、8行的
else
@cache[path] = Bitmap.new(32, 32)
用意何在?
如果 filename = "" 不理他不行吗?
非要加个 @cache[path] = Bitmap.new(32, 32)
而且 32*32 是......有特殊意义吗?
   
作者: 英顺的马甲    时间: 2013-8-23 00:43
本帖最后由 英顺的马甲 于 2013-8-23 00:44 编辑

来个假设吧
  1. s = Sprite.new
  2. s.bitmap = RPG::Cache.picture("")
复制代码
当filename为""的时候不去理会的话这段脚本就会出错,
因为它不会返回一个bitmap的类。
至于为啥是32*32没啥意义,别去纠结了==
作者: 九靈    时间: 2013-8-23 01:13
英顺的马甲 发表于 2013-8-23 00:43
来个假设吧当filename为""的时候不去理会的话这段脚本就会出错,
因为它不会返回一个bitmap的类。
至于为啥 ...

谢谢!
也就是说
else
          @cache[path] = Bitmap.new(32, 32)
是为了让 Scene_Title 类的 @sprite.bitmap 存在而设计的是吗?
因为后面有个 @sprite.bitmap.dispose
作者: SuperMario    时间: 2013-8-23 08:01
地空图块引用的就是这个,用32*32好像是效率最高的
作者: 九靈    时间: 2013-8-23 13:22
那在这里@cache[path] = Bitmap.new(32, 32)的用意是为了防止异常发生
何不用 1*1 ?
好像 1*1 效率更高
至于地图块...不知道为什么会说到地图块= =
这里是 标题画面不是?
作者: kuerlulu    时间: 2013-8-23 13:58
32*32确实是一个图块的大小,某些窗口类里面也使用了Bitmap做一个没用的32*32的空图片然后可以使用Bitmap的一些功能比如绘制文字draw_text
作者: satgo1546    时间: 2013-8-23 14:20
九靈 发表于 2013-8-23 13:22
那在这里@cache = Bitmap.new(32, 32)的用意是为了防止异常发生
何不用 1*1 ?
好像 1*1 效率更高

用1×1的远景图(平铺)直接后果是卡死电脑不偿命,所以要32×32,节约大量的绘制时间:
32×32的远景图绘制次数为20×15=600次;1×1的远景图绘制次数为640×480=307200……




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