Project1

标题: 一个 Window Base 的问题 [打印本页]

作者: slick    时间: 2008-9-20 00:54
以下引用迅雷進于2008-9-19 0:59:00的发言:


本贴悬赏额度如下:VIP:0   积分:100   


如果出现了这个 Error Msg 是代表什么意思呢?
请前辈们指教~   


使用一个已经释放了的窗口。
把你的问题工程发给我看看,我邮箱[email protected]
作者: trentswd    时间: 2008-9-20 01:05
套一层if……if !self.disposed?
【别打……】
作者: 殲滅天使·玲    时间: 2008-9-20 02:09
昨天改窗口好象也遇到了这个问题
但是不记得是什么问题了..
迅雷君工程如果不大 传一个上来 ,顺便也想练习一下.
作者: 迅雷進    时间: 2008-9-20 09:52
以下引用殲滅天使·玲于2008-9-19 18:09:40的发言:

昨天改窗口好象也遇到了这个问题
但是不记得是什么问题了..
迅雷君工程如果不大 传一个上来 ,顺便也想练习一下.

工程太大,
放不出的说… {/gg} {/gg}
这是小弟脚本的其中一段。

  1. class Window_BattleStatus < Window_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 公開インスタンス変数
  4.   #--------------------------------------------------------------------------
  5.   attr_reader   :item_max                 # 項目数
  6.   #--------------------------------------------------------------------------
  7.   # ● 初始化对像
  8.   #--------------------------------------------------------------------------
  9. def initialize
  10.    super(320 - $game_party.actors.size*80, 320, 160*$game_party.actors.size, 160)
  11.    @w = []
  12.    for i in 0..$game_party.actors.size-1
  13.      @w[i] = Window_Base.new(320 - $game_party.actors.size*80 + i*160,320,160,160)
  14.      @w[i].back_opacity = 0
  15.    end
  16.    self.opacity = 160
  17.    self.contents = Bitmap.new(width - 32, height - 32)
  18.    @level_up_flags = [false, false, false, false]
  19.    @item_max = $game_party.actors.size
  20.    # スプライトを作成
  21.    @sprite = Sprite.new
  22.    # スプライトの座標を定義
  23.    @sprite.x = self.x + 16
  24.    @sprite.y = self.y + 16
  25.    @sprite.z = self.z + 16
  26.    @sprite.bitmap = self.contents.dup
  27.    refresh
  28.    refresh_words
  29. end
  30.   #--------------------------------------------------------------------------
  31.   # ● 解放
  32.   #    alias : dispose_Active_Battle_Status
  33.   #--------------------------------------------------------------------------
  34.   alias :dispose_Active_Battle_Status :dispose
  35.   def dispose
  36.    super
  37.    for w in @w
  38.      w.dispose
  39.    end
  40.     # 元の処理を実行
  41.     dispose_Active_Battle_Status
  42.     # スプライトを解放
  43.     @sprite.bitmap.dispose
  44.     @sprite.dispose
  45.   end
复制代码


小弟想应该是 w in @w, w.dispose 那里出现了问题,
但是研究了很久还是不懂得如何修改… {/ll} {/ll}
作者: 殲滅天使·玲    时间: 2008-9-20 10:04
技术不到家啊..
这样实在不懂如何去除错..
那样 迅雷君 你试看把脚本都复制到新的一个工程里然后 传看?
作者: 迅雷進    时间: 2008-9-20 10:12
以下引用殲滅天使·玲于2008-9-20 2:04:06的发言:

技术不到家啊..
这样实在不懂如何去除错..
那样 迅雷君 你试看把脚本都复制到新的一个工程里然后 传看?

不行,
因为在整合的过程曾经修改了原装脚本,
由于当初修改的时候没有打上记号导致现在忘记了是修改了哪一个…
所以无法独立弄到新的一个工程去…… {/dk} {/dk}
作者: 灯笼菜刀王    时间: 2008-9-20 10:21
- -,要对脚本动手术前最好备份下......

话说,按给的这段脚本,好象没什么有问题的地方....

for w in @w
   w.dispose
end
这段本身没错,@w是个数组,它之前加载了
for i in 0..$game_party.actors.size-1
     @w = Window_Base.new(320 - $game_party.actors.size*80 + i*160,320,160,160)
     @w.back_opacity = 0
   end
这么一些东西...

那段只是将它包含的窗口循环释放而已~~~
下面的dispose_Active_Battle_Status是执行alias命令之前的方法,也就是原来的dispose。
然后再下面对精灵进行释放....没什么问题嘛....

不过,我想不通为什么这个脚本要给dispose使用别名....按我的理解好象是无意义的- -~~

嘛...我对脚本除错无能~~~

建议整段脚本都帖出来吧...至少可以联系上下文....
作者: 最後一滴淚    时间: 2008-9-20 14:44
Data中的scripts重叠到新的工程中..在放上来..这样别人可以看你里面的脚本....
作者: dbshy    时间: 2008-9-20 21:48
你贴的那段没错 = =

其实你应该帖WINDOW_BASE 或者放工程

最近没时间,等高手帮你解决吧
作者: 殲滅天使·玲    时间: 2008-9-20 21:51
以下引用dbshy于2008-9-20 13:48:09的发言:

你贴的那段没错 = =

其实你应该帖WINDOW_BASE 或者放工程

最近没时间,等高手帮你解决吧


难的看到dbshy大又再次在提问出现...最近好少看到哦..
这个问题..没工程真的很难推断出错在什么地方而..
把数据库的scripts文件复制到新的工程看看吧?
作者: 迅雷進    时间: 2008-9-20 22:24
自我屏幕
作者: dbshy    时间: 2008-9-20 22:31
  alias :dispose_Active_Battle_Status :dispose
  def dispose
   super
   for w in @w
     w.dispose
   end
    # 元の処理を実行
    dispose_Active_Battle_Status
    # スプライトを解放
    @sprite.bitmap.dispose
    @sprite.dispose
  end


把dispose_Active_Battle_Status
注释掉就可以了 = =bb
作者: 迅雷進    时间: 2008-9-20 22:36
以下引用dbshy于2008-9-20 14:31:41的发言:
把dispose_Active_Battle_Status
注释掉就可以了 = =bb

原来就这么简单而易啊? {/ll} {/ll}
前辈,
其实为什么这样做就可以了呢? {/gg} {/gg}
作者: dbshy    时间: 2008-9-20 22:48
原因是在 Bitmap 类和 Sprite 类中,释放掉的在释放就会出错
前面一个SUPER 后面 再一个就出错了 >_< [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 迅雷進    时间: 2008-9-20 22:53
以下引用dbshy于2008-9-20 14:48:26的发言:

原因是在 Bitmap 类和 Sprite 类中,释放掉的在释放就会出错
前面一个SUPER 后面 再一个就出错了 >_<

原来如此~
感谢前辈的指教啊! {/ll} {/ll}
作者: 迅雷進    时间: 2009-6-12 08:00
标题: 一个 Window Base 的问题


如果出现了这个 Error Msg 是代表什么意思呢?
请前辈们指教~ {/gg} {/gg} [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~




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