Этот ответ является наиболее вероятным, используя предоставленную вами небольшую информацию.
Исходя из того, что контекст захватывает местоположение, вполне вероятно, что вы взаимодействуете с какой-то серверной технологией (то есть базой данных, полной координат).
Чтобы достичь этого, вы должны использовать URLLoader
.
Когда вы инициализируете экземпляр URLLoader
и пытаетесь собрать информацию от третьей стороны, запрошенная информация будет получена в то время, которое асинхронно . Это означает, что функция, ожидающая вызова, когда флэш-память получает данные, которые вам нужны, может быть вызвана в любом месте в ближайшем будущем, но не сразу.
Вот эксперимент:
var data:Object = null;
var loader:URLLoader;
function test():void
{
loader = new URLLoader();
var request:URLRequest = new URLRequest("https://projectavian.com/files/example.php");
loader.load(request);
loader.addEventListener(Event.COMPLETE, _done);
stage.addEventListener(Event.ENTER_FRAME, _check);
}
function _done(e:Event):void
{
data = e.target.data;
trace(data);
loader.removeEventListener(Event.COMPLETE, _done);
stage.removeEventListener(Event.ENTER_FRAME, _check);
}
function _check(e:Event):void
{
trace(data);
}
test();
trace(data); // This will always be null even after all the work above.
Если вы запустите это, вы заметите, что data
всегда изначально null
.
Мое предположение состоит в том, что вашему Locator.locate()
требуется некоторое время для сбора необходимой информации, а затем присваивается значение тому, что Locator.loc.getCity()
возвращает.