[RemoteClass]メタタグ
[RemoteClass]を定義したクラスはmxmlcによって
というコードが「_xxx_FlexInit-generated.as」というファイルに
生成されます。第1引数がリモートクラスの文字列で、第2引数がASのクラスになります。
「-services services-config.xml」と
コンパイラオプションを定義しなくてもこのコードは生成されます。
このコードによってクラス定義に「alias」属性が追加されます。
クラス定義の取得方法としては
スタンダードにクラス名(文字列)から取得する方法として
上記は ApplicationDomain が同じでないと取得できませんが
では、ApplicationDomain が違っても取得可能です。
ApplicationDomainが違う場合というのはSWFLoaderや
ModuleLoaderなどでありえます。
[RemoteClass]メタタグで定義した「別名(alias)」で
クラス定義を取得することも可能です。
また、インスタンス化されたオブジェクトからクラス情報を取得するには
のようにします。
クラス情報から[RemoteClass]メタタグで定義した「別名(alias)」を
取得することもできます。
サンプルを作りましたので実際のコードはこちらを参考にしてください。
RemoteClassSample
flash.net.registerClassAlias( "cflib.org.pepe.FooA", org.pepe.HogeA )
というコードが「_xxx_FlexInit-generated.as」というファイルに
生成されます。第1引数がリモートクラスの文字列で、第2引数がASのクラスになります。
「-services services-config.xml」と
コンパイラオプションを定義しなくてもこのコードは生成されます。
このコードによってクラス定義に「alias」属性が追加されます。
クラス定義の取得方法としては
スタンダードにクラス名(文字列)から取得する方法として
flash.utils.getDefinitionByName("org.pepe.HogeA")
上記は ApplicationDomain が同じでないと取得できませんが
flash.system.applicationDomain.getDefinition("org.pepe.HogeA")
では、ApplicationDomain が違っても取得可能です。
ApplicationDomainが違う場合というのはSWFLoaderや
ModuleLoaderなどでありえます。
[RemoteClass]メタタグで定義した「別名(alias)」で
クラス定義を取得することも可能です。
flash.net.getClassByAlias("cflib.org.pepe.FooA")
また、インスタンス化されたオブジェクトからクラス情報を取得するには
var hoge:HogeA = new HogeA();
var className:String = getQualifiedClassName(hoge);
var cls:Class = getDefinitionByName(className) as Class;
var className:String = getQualifiedClassName(hoge);
var cls:Class = getDefinitionByName(className) as Class;
のようにします。
クラス情報から[RemoteClass]メタタグで定義した「別名(alias)」を
取得することもできます。
describeType(cls).@alias.toString()
サンプルを作りましたので実際のコードはこちらを参考にしてください。
RemoteClassSample
この記事にコメントはありません。
[コメントの追加]