0

トグルスイッチを無効にしてジオロケーションルーチンを停止しようとしています...

geo が新しい Geolocation に設定されている場合、null オブジェクト エラーが発生します -- ここで何が欠けていますか?

        private function gogeo():void
        {
            if (Geolocation.isSupported)
            {
                var geo:Geolocation = new Geolocation();
                geo.setRequestedUpdateInterval(2000);
                geo.addEventListener(GeolocationEvent.UPDATE, geolocationUpdateHandler);
            }
            else
            {
                trace("No geolocation support.");
            }   
        }



        private function geolocationUpdateHandler(event:GeolocationEvent):void
        {
            trace("lat:" + event.latitude.toString() + " - ");
            trace("long:" + event.longitude.toString() + "° - ");
            trace("Accuracy:" + event.horizontalAccuracy.toString() + " m");

        }
        protected function toggleswitch1_changeHandler(event:Event):void
        {

            if (toggleswitch1.selected == false) {
            trace("The function should STOP"); 

            geo.removeEventListener(GeolocationEvent.UPDATE, geolocationUpdateHandler);
            geo = null;

        } else {
            trace("The function should RESTART");

            geo = new Geolocation();
            geo.addEventListener(GeolocationEvent.UPDATE, geolocationUpdateHandler);
        }
        }
4

1 に答える 1

1

関数の外部で地理を定義します。

private var geo:GeoLocation;

private function gogeo():void
{
    if (Geolocation.isSupported)
    {
        geo = new Geolocation();
        geo.setRequestedUpdateInterval(2000);
        geo.addEventListener(GeolocationEvent.UPDATE, geolocationUpdateHandler);
    }
    else
    {
        trace("No geolocation support.");
    }   
}

変数は「スコープ」内でのみ使用可能です-例:関数内で変数を定義すると、その関数内からのみ使用可能になります

編集:

geoをグローバルとして定義するには:

アプリのトップレベル(つまり、メインのmxmlファイル)に、パブリック宣言を追加します。

public var geo:GeoLocation;

次に、以下を使用してアプリのどこからでもアクセスできます。

(FlexGlobals.topLevelApplication as MyAppClass).geo

単なる「ジオ」の代わりに; ここで、MyAppClassはアプリの名前です(つまり、メインのmxmlクラスの名前)。

于 2013-02-01T20:41:09.137 に答える