Я согласен с утверждениями о том, что это, вероятно, плохая идея, и цикл while определенно не сработает в ActionScript. Однако могут существовать законные причины для того, что вы пытаетесь сделать. Только вы можете предотвратить плохой код. Вместо того, чтобы судить, я просто получу ответ на ваш вопрос.
Сначала я сделаю предположение, что вы действительно хотите отслеживать свойство, и по какой-то причине API для этого объекта не отправляет событие при изменении этого свойства. Я делаю это предположение, потому что, если у вас есть событие, я предполагаю, что вы просто используете событие.
Итак ... у вас есть объект weirdXmlObj со свойством загружен , который по умолчанию равен false , но переходит к true , когда XML загружен.
В этом случае, с небольшими изменениями, код, размещенный CookieOfFortune, фактически будет работать. Вам не понадобится функция loadCompleteEventHandler (которая так или иначе никогда не была присоединена), и в обработчике таймера вы просто проверите if (weirdXmlObj.loaded) и затем выполните ветвление, как вам бы того хотелось.
Ах, но может быть и более простой способ, в зависимости от того, что вы делаете.
Если у вас есть экранный объект под рукой. (то есть что-то, что имеет смысл, а не какой-то случайный объект.) Вы можете присоединить свой код к событию EnterFrame стадии вместо использования таймера.
myDisplayObject.stage.addEventListner (Event.ENTER_FRAME, frameEnterHandler);
Несколько вещей, о которых следует знать:
На самом деле вам даже не нужно переходить на уровень сцены, все экранные объекты поддерживают событие EnterFrame, но это хорошее место для подключения прослушивателя событий.
Вы действительно должны сводить к минимуму все вызовы функции. В частности, действительная функция frameEnterHandler не должна делать ничего больше, чем проверка if (weirdXmlObj.loaded) .