我不确定是否有更好的方法可以做到这一点,如果有,请告诉我。但是现在,我有一个包含名称的组合框列表。
组合框是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以便出席时,它变得太复杂了。
非常感谢任何和所有帮助!
答案 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。