2つの関連するComboBox(大陸と国)があります。大陸のComboBoxが変更されると、特定のURLからXMLを要求します。そのXMLを受け取ったら、ComboBoxの国のDataProviderを次のように変更します。
public function displayCountryArray( items:XMLList ):void
{
this.resellersCountryLoader.alpha = 0;
this.resellersCountry.dataProvider = items;
this.resellersCountry.dispatchEvent( new ListEvent( ListEvent.CHANGE ) );
}
ListEvent.CHANGEをディスパッチするのは、別のComboBoxを変更するために使用するためです。そのため、それ(および1行目)は無視してください。
したがって、私の問題はこれです。最初の大陸から「ASIA」を選択すると、コンボボックスのDATAが更新されます(最初のITEMは「23countries」というラベルのアイテムであるためわかります)。コンボをクリックすると、国が表示されます。
ここで、「アフリカ」を選択すると、最初の項目が表示され、ComboBoxが閉じられます。次に、それをクリックすると、国はまだアジアの国です。とにかく、リスト内のアイテムをクリックすると、リストは正しく更新され、また、正しい情報が含まれます(他のComboBoxに影響します)。したがって、唯一の問題は、表示リストが更新されないことです。
この関数では、これらのアプローチを試しました
XMLListをXMLCollection、さらにはArrayCollectionに変換する
this.resellersCountry.invalidateDisplayList();を追加します。
DATA_CHANGEやUPDATE_COMPLETEのようなイベントをトリガーすることはあまり意味がないことは知っていますが、私は少し必死になりました。
3.0.0 SDKを使用した場合、これは発生しなかったことに注意してください。
私が愚かなら申し訳ありませんが、フレックスイベントは私を殺しています。