今回も、このサンプルを使います。
前回のエントリーでコンボボックスに、それぞれ「nameエレメント」と、「part属性」をデータプロバイダとして設定しました。
コンボボックスの、どの値(セル)が選択されているかは「コンボボックスインスタンス.selectedItem」で参照できるので、
nameCmb.addEventListener(Event.CHANGE , nameSelectHandler);
/*----------------------------------------------
■nameSelectHandler
■概要
nameCmbから、エレメントを選択すると、選択されたエレメントをselectedTxtAreaに表示し
当該エレメントをsetected_xmlに代入する
----------------------------------------------*/
function nameSelectHandler(event:Event):void{
var selectedNodeName:String = event.target.selectedItem.data.toString();
setected_xml = new XMLList(test_xml.member.(name == selectedNodeName) );
selectedTxtArea.text = setected_xml;
}
コンボボックスの、選ばれているセルが変更された際に発行されるイベント「CHANGEイベント」で、新しく選ばれたセルが保持している「data」プロパティを取得した値により、「test_xml」から抽出しています。
「part属性」で抽出する場合は
setected_xml = new XMLList(test_xml.member.(@part == selectedNodepart) );
こうなります。
「ActionScript3.0でXML XMLの基本的な使い方」の応用ですね。
因みに、ひとつのパートに2人(ツインギター)や、一人の人間が複数パート(ギター&ボーカル)なんてケースも存在するため、抽出したデータは、XMLListクラスを利用します。
仮に、XMLクラスを使用した場合、抽出されたエレメントが単一ならば問題ないのですが、複数のエレメントが抽出された場合、ランタイムエラーが発生します。




コメントする