此答案是使用什麼小您提供的信息的最佳猜測。
根據捕獲位置的上下文,很可能您正在與某些服務器端技術(即充滿座標的數據庫)進行通信。
要達到此目的,您必須使用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()
回報。
你確定locate();方法不會超過1幀? (例如1/25秒)你聽任何event.complete或event.located?代碼如何查看locate()函數內部? – 2012-02-13 17:31:55
您可以跟蹤Locator.loc而不是Locator.loc.getCity()。問題可能在getCity中。 – Kodiak 2012-02-13 17:44:33
粘貼你的locate()和getCity()請。 – 2012-02-13 17:54:58