【Adobe AIR】子コンポーネントのオブジェクトを取得

すべての記事はhttp://metroit.hatenablog.jp/に移動しました。
2019/11/05にはアクセスできなくなります。

以前、Adobe Airで子コンポーネントのオブジェクトを取得するテストプログラムを作ってた。
残しとこう!

 

SampleGetChildComponent
 ┗src
   ┣Base
   ┃ ┗Window
   ┃   ┗BaseWindowedApplication.as
   ┣SampleGetChildComponent.mxml
   ┗SampleGetChildComponent-app.xml

 

SampleGetChildComponent.mxml

<?xml version="1.0" encoding="utf-8"?>
<this:BaseWindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:this="Base.Window.*">
    <mx:Button x="10" y="10" label="ボタン" id="Button1"/>
    <mx:Label x="74" y="12" text="ラベル" id="Label1"/>
    <mx:Button x="10" y="102" label="オブジェクトの一覧を取得" id="Button2" click="putComponentList()"/>
    
    <mx:XMLList id="componentList"/>
    <mx:DataGrid x="10" y="132" id="grid" dataProvider="{componentList}">
        <mx:columns>
            <mx:DataGridColumn headerText="クラス名" dataField="className"/>
            <mx:DataGridColumn headerText="ID" dataField="objectId"/>
        </mx:columns>
    </mx:DataGrid>
</this:BaseWindowedApplication>

 

BaseWindowedApplication.as

package Base.Window
{
    import mx.core.WindowedApplication;
    
    public class BaseWindowedApplication extends WindowedApplication
    {
        public function BaseWindowedApplication()
        {
            super();
        }
        
        public function putComponentList():void {
            var componentList:XMLList = new XMLList();
            
            var child:Object = null;
            var nodes:XML = null;
            for (var i:int = 0; i < childDescriptors.length; i++) {        //子オブジェクトの件数分
                child = childDescriptors[i];                            //子オブジェクトの取得
                //Alert.show(child.type + "\n" + child.id);                //子オブジェクトのクラスタイプとidを出力
                var component:XML = new XML(
                    <List>
                        <className>{child.type}</className>
                        <objectId>{child.id}</objectId>
                    </List>
                    );
                componentList += component;
            }
            
            this.document.componentList = componentList;
        }
    }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です