这些行看起来不正确:
array.addItem(new BitmapImage().source="/assets/appLogo.png");
array.addItem(new BitmapImage().source="/assets/companyLogo.png");
它似乎在做的是创建一个新的 BitMapImage 并在其上设置源属性。您添加到数组中的项目不会是分配的结果吗?或者——听起来你得到了——实际的源值。如果你想要一个 BitMapImages 数组,你可以像这样创建它:
var tempImage :BitMapImage = new BitmapImage()
tempImage.source="/assets/appLogo.png"
array.addItem(tempImage);
tempImage = new BitmapImage()
tempImage.source="/assets/companyLogo.png"
array.addItem(tempImage);
但是,除非您构建一个知道如何显示它的自定义 itemRenderer,否则 List 将不知道如何处理 BitmapImage:
<s:List dataProvider="array">
<s:itemRenderer>
<s:ItemRenderer dataChange="onDataChange()">
<fx:Script>
protected function onDataChange():void{
this.removeChild(data);
this.addChild(data as BitMapImage);
}
</fx:Script>
</s:ItemRenderer>
</s:itemRenderer>
</s:List>
但是,我怀疑拥有一个表示源的字符串数组然后在渲染器中创建 BitMapImage 会更有益。如果您不打算一次使用所有 BitMapImage 组件,则无需创建大量 BitMapImage 组件。有点像这样:
array.addItem("/assets/appLogo.png");
array.addItem("/assets/companyLogo.png");
<s:List dataProvider="array">
<s:itemRenderer>
<s:ItemRenderer dataChange="onDataChange()">
<fx:Script>
protected function onDataChange():void{
this.bitMapImage = data;
}
</fx:Script>
<s:BitMapImage id="bitMapImage" />
</s:ItemRenderer>
</s:itemRenderer>
</s:List>