Project1
标题:
关于$data_items的子方法调用出错,求助
[打印本页]
作者:
Phil
时间:
2010-9-3 11:09
提示:
作者被禁止或删除 内容自动屏蔽
作者:
goahead
时间:
2010-9-3 11:17
提示:
作者被禁止或删除 内容自动屏蔽
作者:
Phil
时间:
2010-9-3 11:32
提示:
作者被禁止或删除 内容自动屏蔽
作者:
goahead
时间:
2010-9-3 11:42
提示:
作者被禁止或删除 内容自动屏蔽
作者:
Phil
时间:
2010-9-3 11:51
提示:
作者被禁止或删除 内容自动屏蔽
作者:
八云紫
时间:
2010-9-3 11:54
def draw_item(e)
stone = @stone[e]
num = $game_party.item_number(stone.id)
self.contents.font.color = normal_color
x = 4
y = e *32
rect = Rect.new(x,y,200,32)
draw_icon(stone.icon_index, x, y+4, true)
self.contents.draw_text(x+30,y,192,32, stone.name)
self.contents.draw_text(x+224,y,16,32,"X",1)
self.contents.draw_text(x+242,y,24,32,num.to_s,1)
end
复制代码
作者:
Phil
时间:
2010-9-3 12:57
提示:
作者被禁止或删除 内容自动屏蔽
作者:
八云紫
时间:
2010-9-3 13:38
本帖最后由 铃仙·优昙华院·因幡 于 2010-9-3 13:42 编辑
回复
Phil
的帖子
我测试过了,正常。
QQ截图未命名.png
(40.62 KB, 下载次数: 39)
下载附件
保存到相册
2010-9-3 13:42 上传
这个是你写的脚本的运行截图~~~
作者:
Phil
时间:
2010-9-3 14:07
提示:
作者被禁止或删除 内容自动屏蔽
作者:
八云紫
时间:
2010-9-3 14:38
本帖最后由 铃仙·优昙华院·因幡 于 2010-9-3 14:47 编辑
回复
Phil
的帖子
我分析下你的错误出现的原因吧。
先看看这句:
@stone = []
for i in 1...$data_items.size
@stone.push($data_items[i])
end
复制代码
这里知道从1开始计数的说,掠过等于 0 的情况。
-----------------------
if @stone.size > 0
self.contents = Bitmap.new(200,row_max * 32)
for i in [email]
[email protected]
[/email]
draw_item(i)
end
复制代码
这里使用的是缓存数组 @stone 的序号 i 当做 draw_item 方法的参数。
------------------------------
def draw_item(e)
stone = @stone[e]
num = $game_party.item_number(stone.id)
self.contents.font.color = normal_color
x = 4
y = e *32
rect = Rect.new(x,y,200,32)
复制代码
到这里没啥问题。
-----------------------------
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 就好。
作者:
Phil
时间:
2010-9-3 15:38
提示:
作者被禁止或删除 内容自动屏蔽
作者:
Phil
时间:
2010-9-3 15:40
提示:
作者被禁止或删除 内容自动屏蔽
作者:
goahead
时间:
2010-9-3 15:41
提示:
作者被禁止或删除 内容自动屏蔽
作者:
Phil
时间:
2010-9-3 16:12
提示:
作者被禁止或删除 内容自动屏蔽
作者:
八云紫
时间:
2010-9-3 16:19
#==============================================================================
# 武器炼化模块定义
#==============================================================================
module LH
max_stone = 10
max_weapen = 30
weapon_hash = {}
end
#==============================================================================
# 标题窗口
#==============================================================================
class Window_LH_Title < Window_Base
#--------------------------------------------------------------------------
# * 物件初始化
#--------------------------------------------------------------------------
def initialize
super(150, 0, 244, 64)
self.contents = Bitmap.new(width-32,height-32)
refresh
end
#--------------------------------------------------------------------------
# * 更新內容顯示
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 30
self.contents.draw_text(-12,0,self.width,30,"武器炼化",1)
end
end
#==============================================================================
# 矿石选择窗口
#==============================================================================
class Window_LH_Stone < Window_Selectable
#--------------------------------------------------------------------------
# * 物件初始化
#--------------------------------------------------------------------------
def initialize
super(0,64,272,208)
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * 更新內容顯示
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.clear
end
@stone = []
for i in 1...$data_items.size
@stone.push($data_items[i])
end
if @stone.size > 0
self.contents = Bitmap.new(200,row_max * 32)
for i in
[email protected]
draw_item(i)
end
else
self.contents = Bitmap.new(width-32,32)
self.contents.draw_text(0,0,200,32,"目前没有可以炼化的元素",0)
self.index = -1
end
end
#--------------------------------------------------------------------------
# * 繪製條目
#--------------------------------------------------------------------------
def draw_item(e)
stone = @stone[e]
num = $game_party.item_number(stone.id)
self.contents.font.color = normal_color
x = 4
y = e *32
rect = Rect.new(x,y,200,32)
e += 1
draw_icon(stone.icon_index, x, y+4, true)
self.contents.draw_text(x+30,y,192,32, stone.name)
self.contents.draw_text(x+224,y,16,32,"X",1)
self.contents.draw_text(x+242,y,24,32,num.to_s,1)
end
end
#==============================================================================
# ** Scene_LH
#------------------------------------------------------------------------------
# 這個類用來显示武器炼化系统。
#==============================================================================
class Scene_LH < Scene_Base
#--------------------------------------------------------------------------
# * 初始化
#--------------------------------------------------------------------------
def initialize
end
#--------------------------------------------------------------------------
# * 程式开始
#--------------------------------------------------------------------------
def start
super
create_menu_background
@tw = Window_LH_Title.new
@sw = Window_LH_Stone.new
end
#--------------------------------------------------------------------------
# ● 结束处理
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@tw.dispose
@sw.dispose
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new # 程式終止
end
@tw.update
@sw.update
end
#--------------------------------------------------------------------------
# ● 更新命令窗口
#--------------------------------------------------------------------------
end
复制代码
LZ 无视我我之前给的脚本了~~~
作者:
wangswz
时间:
2010-9-3 16:30
本帖最后由 wangswz 于 2010-9-3 16:36 编辑
@stone.push($data_items
)
为什么弄个新数组 不直接用$data_items?
作者:
Phil
时间:
2010-9-3 16:31
提示:
作者被禁止或删除 内容自动屏蔽
作者:
Phil
时间:
2010-9-3 16:33
提示:
作者被禁止或删除 内容自动屏蔽
作者:
八云紫
时间:
2010-9-3 16:33
应该是 @stone.push($data_items[i])
的吧~~~
作者:
Phil
时间:
2010-9-3 16:37
提示:
作者被禁止或删除 内容自动屏蔽
作者:
wangswz
时间:
2010-9-3 16:38
为什么我复制回帖之后[i]就变成格式符号了。。
斜体为啥要 i /i
作者:
Phil
时间:
2010-9-3 16:44
提示:
作者被禁止或删除 内容自动屏蔽
作者:
八云紫
时间:
2010-9-3 16:50
$data_items 是数组, 0 是 nil ,剩下的是 RPG::Item 类的实例
作者:
Phil
时间:
2010-9-3 16:57
提示:
作者被禁止或删除 内容自动屏蔽
作者:
goahead
时间:
2010-9-3 17:00
提示:
作者被禁止或删除 内容自动屏蔽
作者:
冰舞蝶恋
时间:
2010-9-3 17:05
天哪,晕啦~哪位高手教一下偶这个脚本盲啊~~看了好多教程反而更晕= =
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1