0

「CityModule」という Document クラスと、「City」クラスのアセットがあります。以下はそれぞれのcoeです。何らかの理由で、CityModule から City クラスの静的変数にアクセスできません。

CityModule.as:

package {

  public class CityModule extends MovieClip {

      public function CityModule() {

          var buildings:Array = City.getBuildings(); //gives error

      }
    }
  }
}

都市名:

package {

import flash.display.MovieClip;

public class City extends MovieClip {

    private static var _buildings:Array = [
        {className:'City.Generic1', type:'generic'},
        {className:'City.Generic2', type:'generic'},
        {className:'City.Generic3', type:'generic'}
    ];

    public function City(){
        //empty
    }

    public static function getBuildings():Array{
        return _buildings;
    }
  }
}

これを行うと、「おそらく未定義のメソッド getBuildings への呼び出し」エラーが発生します。City のインスタンスをインスタンス化すると、すべての public/getter/setter が問題なく表示されます。しかし、静的は機能していません...

4

1 に答える 1

0

CityModuleにMovieClipのインポートがありません。

次のコードは、FlashDevelopでコンパイルされます。

//CityModule.as
package  
{
    import flash.display.MovieClip;
    public class CityModule extends MovieClip
    {
        public function CityModule() 
        {
            var buildings:Array = City.getBuildings(); //gives error
        }
    }
}

//City.as
package {

import flash.display.MovieClip;

public class City extends MovieClip {

    private static var _buildings:Array = [
        {className:'City.Generic1', type:'generic'},
        {className:'City.Generic2', type:'generic'},
        {className:'City.Generic3', type:'generic'}
    ];

    public function City(){
        //empty
    }

    public static function getBuildings():Array{
        return _buildings;
    }
  }
}


//Main.as
package 
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite 
    {

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point

            var c:CityModule = new CityModule();
        }

    }

}
于 2012-06-17T03:33:29.533 に答える