查看: 5216|回复: 25

[已经解决] 关于$data_items的子方法调用出错,求助

[复制链接]
头像被屏蔽
梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-19
回帖
36
发表于 2010-9-3 11:09:48 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
梦石
0
星屑
50
在线时间
21 小时
注册时间
2007-7-3
回帖
570
发表于 2010-9-3 11:17:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-19
回帖
36
 楼主| 发表于 2010-9-3 11:32:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
21 小时
注册时间
2007-7-3
回帖
570
发表于 2010-9-3 11:42:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-19
回帖
36
 楼主| 发表于 2010-9-3 11:51:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

神隐的主犯

梦石
0
星屑
553
在线时间
271 小时
注册时间
2008-2-22
回帖
7534

贵宾

发表于 2010-9-3 11:54:13 | 显示全部楼层

  1. def draw_item(e)
  2.     stone = @stone[e]
  3.     num = $game_party.item_number(stone.id)
  4.     self.contents.font.color = normal_color
  5.     x = 4
  6.     y = e *32
  7.     rect = Rect.new(x,y,200,32)
  8.     draw_icon(stone.icon_index, x, y+4, true)   
  9.     self.contents.draw_text(x+30,y,192,32, stone.name)
  10.     self.contents.draw_text(x+224,y,16,32,"X",1)
  11.     self.contents.draw_text(x+242,y,24,32,num.to_s,1)
  12.   end
复制代码

《天空之城 —— 破碎的命运》
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-19
回帖
36
 楼主| 发表于 2010-9-3 12:57:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

神隐的主犯

梦石
0
星屑
553
在线时间
271 小时
注册时间
2008-2-22
回帖
7534

贵宾

发表于 2010-9-3 13:38:16 | 显示全部楼层
本帖最后由 铃仙·优昙华院·因幡 于 2010-9-3 13:42 编辑

回复 Phil 的帖子

我测试过了,正常。
    QQ截图未命名.png

这个是你写的脚本的运行截图~~~
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-19
回帖
36
 楼主| 发表于 2010-9-3 14:07:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

神隐的主犯

梦石
0
星屑
553
在线时间
271 小时
注册时间
2008-2-22
回帖
7534

贵宾

发表于 2010-9-3 14:38:23 | 显示全部楼层
本帖最后由 铃仙·优昙华院·因幡 于 2010-9-3 14:47 编辑

回复 Phil 的帖子

我分析下你的错误出现的原因吧。

先看看这句:
  1. @stone = []
  2. for i in 1...$data_items.size
  3.   @stone.push($data_items[i])
  4. end
复制代码
这里知道从1开始计数的说,掠过等于 0 的情况。
-----------------------
  1. if @stone.size > 0
  2.       self.contents = Bitmap.new(200,row_max * 32)
  3.       for i in [email]0...@stone.size[/email]
  4.         draw_item(i)
  5.       end
复制代码
这里使用的是缓存数组 @stone 的序号 i 当做 draw_item 方法的参数。
------------------------------
  1. def draw_item(e)
  2.     stone = @stone[e]
  3.     num = $game_party.item_number(stone.id)
  4.     self.contents.font.color = normal_color
  5.     x = 4
  6.     y = e *32
  7.     rect = Rect.new(x,y,200,32)
复制代码
到这里没啥问题。
-----------------------------
  1. self.contents.draw_icon($data_items[e].icon_index, x, y+4, enabled = true)  
复制代码
这里问题就来了, 出错地方有三处。
1. draw_icon 方法是定义在 Window_Base 里的,不是 Bitmap 里。
2. e 是序号,是从0开始的,但是 $data_items 的 0 是 nil 呀,之前知道掠过0 ,这里为什么不去注意下呢?
3. enabled = true 直接填写 true 就好。
   

点评

不会,估计是被 RGSS 当成未定义变量来处理吧。和 C 有点点类似,一个是 nil ,一个是随机内容~~  发表于 2010-9-3 15:51
啊列~~看到...了……意外意外~~~  发表于 2010-9-3 15:50
$data_items[$data_items.size]必须是nil(很奇怪rgss中不会报数组越界)  发表于 2010-9-3 15:48
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部