У вас здесь много условий для гонки. Многие из этих событий могут происходить в относительно случайное время по отношению друг к другу. , , Вы должны думать асинхронно. То есть не может быть предположения , что какой-либо объект существует. Например, в Document.init()
вы проверяете, существует ли spawnArea
, но почти гарантировано, что в этот момент это не так, и вы никогда не проверяете его снова.
Не внося каких-либо конкретных изменений, я могу порекомендовать общее решение. Для любого объекта (objB
), который вы хотите загрузить после загрузки другого объекта (objA
), создайте objB
в обработчике objA
ADDED_TO_STAGE
. Простым примером будет:
var objA:Whatever;
var objB:WhateverElse;
[...]
objA = new Whatever();
objA.addEventListener(Event.ADDED_TO_STAGE, objAAddedHnd);
[...]
public function objAAddedHnd(event:Event)
{
// remove the event, if no longer needed:
objA.removeEventListener(Event.ADDED_TO_STAGE, objAAddedHnd);
objB = new WhateverElse();
objB.addEventListener(Event.ADDED_TO_STAGE, objBAddedHnd);
}
[...]
public function objBAddedHnd(event:Event)
{
// remove the event, if no longer needed:
objB.removeEventListener(Event.ADDED_TO_STAGE, objBAddedHnd);
// and so on . . .
}
На данный момент, это показывает, что вам нужно будет планировать график создания объекта.