вызвать ds_list из-за ошибки другого объекта

Я создал объект текстового поля, и в его событии создания он создает список, например

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 из другого объекта.


person user6211929    schedule 16.04.2016    source источник
comment
Создан ли объект текстового поля перед вторым объектом, в который вы пытались добавить новые строки? (настройки комнаты - порядок экземпляра). И сколько экземпляров текстового поля у вас есть?   -  person Dmi7ry    schedule 16.04.2016


Ответы (1)


Вы можете вызывать функции ds_list_* точно так же, как и вы. Просто вы должны убедиться, что структуры данных, на которые ссылается функция, действительно существуют.

Я попробовал следующее для целей тестирования. Создайте два объекта, objTextBox и objOther, и установите их события следующим образом.

Для объекта 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. Бегать.

Имея дело со структурами данных, всегда проверяйте, были ли они созданы, прежде чем работать с ними.

person liggiorgio    schedule 18.04.2016