从diffrent对象错误调用ds_list

时间:2016-04-16 04:30:28

标签: game-maker gml

我创建了一个文本框对象,并在其创建事件中创建了像

这样的列表
lines = ds_list_create();

在文本框的步骤事件中我使用ds_list_add(lines, "line one"); 它工作正常。

现在我有一个不同的对象试图调用ds_list_add(Textbox.lines, "line from diff object");

但是在运行时它会在读取之前给出关于var未设置的错误。我也尝试改为global.list = ds_list_create();但问题仍然存在。

有人可以解释如何从不同的对象中调用ds_list

1 个答案:

答案 0 :(得分:0)

您可以像对待一样调用ds_list_*函数。只是,您必须确保函数所指的数据结构确实存在。

我尝试了以下测试目的。创建两个对象objTextBoxobjOther,并按如下方式设置其事件。

对象objTextbox

  

创建活动
  list = ds_list_create();

     

按'空格'事件
  var str = get_string("I'm objTextbox:","");
  ds_list_add(list,str);

     

绘制事件
  for (var i=0;i<ds_list_size(list);i++)
  draw_text(10,10+15*i,string(ds_list_find_value(list,i)));

对象objOther:

  

按'Shift'事件:
  var str = get_string("I'm objOther:","");
  ds_list_add(objTextbox.list,str);

现在将它们添加到房间,并确保要创建的第一个对象是objTextbox,这是创建ds_list的对象。运行

在处理数据结构时,请务必确保在使用数据结构之前创建它们。