AS3在影片剪辑中选择一个组合框

时间:2013-04-21 23:09:04

标签: actionscript-3 combobox movieclip dataprovider

我不确定是否有更好的方法可以做到这一点,如果有,请告诉我。但是现在,我有一个包含名称的组合框列表。

组合框是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隐式强制值:显示对象可能不相关的类型fl.controls:ComboBox。

现在我假设我得到的是因为它看起来是影片剪辑,它是显示对象并执行组合框命令,但我不知道如何做到这一点。

最初我打算用dataGrid做这个,但是当我试图将dataGrid链接到checkBoxes以便出席时,它变得太复杂了。

非常感谢任何和所有帮助!

1 个答案:

答案 0 :(得分: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。