Project1

标题: (Sprite in Array)'s Bitmap Dispose Trauble? [打印本页]

作者: end55rpg    时间: 2012-5-26 23:09
标题: (Sprite in Array)'s Bitmap Dispose Trauble?
本帖最后由 end55rpg 于 2012-5-26 23:17 编辑

刚刚那帖子太混乱了,重发,顺便答对者2贴同时采纳!
标题即:在数组中的精灵类(sprite)的位图(bitmap)清除(dispose)后,数组(array)全部元素(values)的位图(bitmap)都被清除(dispose)了.
(带英汉互易)= =,不信你们自己看,我工程都做好了: NEWSIDES.rar (240.04 KB, 下载次数: 13)
看在偶铺底图和代码准备完毕情况下旧测试一下把,,,,分不够再ADDDDDDDDDDDD


‘‘──end55rpg于2012-5-26 23:17补充以下内容:

@Wind2010
’’dsu_plus_rewardpost_czw
作者: wbsy8241    时间: 2012-5-27 00:45

作者: IamI    时间: 2012-5-27 06:52
本帖最后由 IamI 于 2012-5-27 06:53 编辑

指针概念认为,对于任何一个大型的对象,其真实的位置不在运算中传递,在各次赋值当中,互相交换的只是这个对象的内存地址,而对象本身没有被拷贝。
说这么一堆废话的意思是,您是否将整个数组的 Bitmap 为方便而设置成了同一个?或者用 Cache 加载了同一张?
如果有,请使用十次 Bitmap.new 方法,不要打 Object#clone 的主意……那玩意对 Bitmap 无效,而且很容易出错。
作者: end55rpg    时间: 2012-5-27 09:51
IamI 发表于 2012-5-27 06:52
指针概念认为,对于任何一个大型的对象,其真实的位置不在运算中传递,在各次赋值当中,互相交换的只是这个 ...

代码如下
1.建立数组
  1. class Spriteset_Map
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对像
  4.   #--------------------------------------------------------------------------
  5.   alias in2 initialize
  6.   def initialize
  7.     # 生成显示端口
  8.     in2
  9.     @viewport1 = Viewport.new(0, 0, 640, 480)
  10.     $array = Array.new(10){Sprite_XXX.new(@viewport1)}  
  11.   end
  12. end
复制代码
2.精灵类:
  1. class Sprite_XXX < RPG::Sprite
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对像
  4.   #--------------------------------------------------------------------------
  5.   def initialize(v)
  6.     super(v)
  7.     self.bitmap = RPG::Cache.picture("screenshot")
  8.     self.x = rand 300
  9.     self.zoom_x = 0.1
  10.     self.zoom_x = 0.3
  11.     self.y = rand(200)
  12.     self.z = 9999
  13.     self.tone = Tone.new(rand(256),rand(255),rand(255))
  14.     self.opacity = 155
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 释放
  18.   #--------------------------------------------------------------------------
  19.   def dispose
  20.     if self.bitmap != nil
  21.       self.bitmap.dispose
  22.     end
  23.     super
  24.   end
  25. end
复制代码
然后$array[0].dispose全部都会消失,怎么改?
作者: orzfly    时间: 2012-5-27 09:58
self.bitmap = Bitmap.new("Graphics/Pictures/screenshot")




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