0

これを行うためのより良い方法があるかどうかはわかりません。もしあれば教えてください。しかし、現在、名前が含まれるコンボ ボックスのリストがあります。

コンボ ボックスは stu1、stu2、stu3 などから 63 まであり、allStudents MovieClip に保持されます。

for(var i = 0; i < allStudents.length; i++)
{
    var newTempStudent:ComboBox = allStudents.getChildAt(i);

    newTempStudent.dataProvider.addItem({label: fullName, data:fullName});
    newTempStudent.getChildAt(i).dataProvider.sortOn("label");
    newTempStudent.getChildAt(i).selectedItem = allStudents.getChildAt(i).getItemAt(i);

}

基本的に私はしようとしています:

同じ dataProvider から更新する 63 個のコンボ ボックスすべてを取得し、

それらをアルファベット順に並べ替え、

次に、各生徒に選択されたデフォルトを設定します (stu1 は dataProvider(0) を表示し、stu2 は dataProvider(1) をデフォルトの選択として表示する必要があります)。

私が得ているエラーは次のとおりです。

シーン 1、レイヤー「レイヤー 1」、フレーム 1、83 行目 1118: 静的なタイプの flash.display:DisplayObject を持つ値が、おそらく無関係なタイプの fl.controls:ComboBox に暗黙的に強制されます。

今、私はそれが表示オブジェクトであり、コンボボックスコマンドを実行しているムービークリップであるため、それを取得していると仮定していますが、これ自体を行う方法がわかりません。

もともとは dataGrid でこれを行うつもりでしたが、dataGrid を出席用の checkBoxes にリンクしようとしたときに複雑になりすぎました。

どんな助けでも大歓迎です!

4

1 に答える 1

0

このコードを試してください:

for(var i = 0; i < allStudents.length; i++)
{
    var newTempStudent:ComboBox = allStudents.getChildAt(i) as ComboBox;

    newTempStudent.dataProvider.addItem({label: fullName, data:fullName});
    newTempStudent.getChildAt(i).dataProvider.sortOn("label");
    newTempStudent.getChildAt(i).selectedItem = allStudents.getChildAt(i).getItemAt(i) as ComboBox;

}

getChildAt() は DisplayObject を返すため、ComboBox としてキャストする必要があります。

于 2013-04-21T23:22:29.717 に答える