Как говорится в вашем сообщении об ошибке: creatureBody
- это nil
, и вы пытаетесь вызвать его.Вы не можете сделать это.Рассмотрим этот фрагмент вашего кода:
if hasParent == 1 then
creature =
{
creatureTitle = parent.creatureTitle;
size = parent.size;
speed = parent.speed;
x = xCoordinates;
y = yCoordinates;
creatureBody = display.newCircle(xCoordinates, yCoordinates, radiusCircle);
creatureBody:setFillColor(parent);
}
else
creature =
{
creatureTitle = creatureIterator;
creatureIterator = creatureIterator + 1;
size = 1;
speed = 1;
x = xCoordinates;
y = yCoordinates;
creatureBody = display.newCircle(xCoordinates, yCoordinates, radiusCircle);
creatureBody:setFillColor(red, green, blue);
}
end
Когда вы звоните setFillColor
, в локальной или глобальной области не доступно ни одного creatureBody
, и это ожидается, поскольку он нигде не определен в предоставленном коде..
Вы можете исправить это, например, выдвинув вызов конструктора круга:
local creatureBody = display.newCircle(xCoordinates, yCoordinates, radiusCircle)
creature =
{
creatureTitle = creatureIterator;
creatureIterator = creatureIterator + 1;
size = 1;
speed = 1;
x = xCoordinates;
y = yCoordinates;
creatureBody = creatureBody;
body:setFillColor(red, green, blue);
}
Обратите внимание, что возвращаемые значения setFillColor
будут вставлены в creature
.Это действительно заставляет меня задаться вопросом, является ли это желаемым поведением.
Пожалуйста, обратитесь к Справочному руководству Lua §3.4.9 , если у вас есть проблемы с пониманием, почему creatureBody
недоступен или почему setFillColor
возврат будет вставлен в creature
.