我有:
A类:具有属性“data:ArrayCollection”。它是我的数据源(数据提供者)并具有位图。
类B:有一个A实例(称为“Ainst”)并调用以下方法:C.init(Ainst.data)。将数据提供程序传递给Object C。
类C:具有数据提供者“数据”的引用(因为“init”方法)。它将arrayCollection显示为Images:Image.source = data.getItemAt(0)。
但C永远不会更新其图像,也就是说,数据绑定不适用于此方案。我把[Bindable]元标记放在所有属性甚至类中。
A类:
public class A{ [Bindable]public var data:ArrayCollection; }
B级:
public class B{ [Bindable]public var Ainst:A; public var Cinst:C; public function init(){ Cinst = new C(); Cinst.init(A.data) } }
C类:包含3个项目(位图)的图像菜单
<s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:local="*"
horizontalAlign="center"
paddingTop="10"
paddingBottom="10"
gap="10">
<fx:Script>
<![CDATA[
[Bindable] public var _images:ArrayCollection;
public function init( images:ArrayCollection ):void{
_images = images;
}
]]>
</fx:Script>
<ms:Image id="PreviousButton" smoothBitmapContent="true" width="55" height="55" source="@Embed(source='/../figures/upArrow.png')"/>
<ms:Image id="TopItem" smoothBitmapContent="true" maintainAspectRatio="true" x="12.5" source="{_images.getItemAt(0)}" />
<ms:Image id="MiddleItem" smoothBitmapContent="true" maintainAspectRatio="true" x="12.5" source="{_images.getItemAt(1)}"/>
<ms:Image id="BottomItem" smoothBitmapContent="true" maintainAspectRatio="true" x="12.5" source="{_images.getItemAt(3)}"/><!-- getItemAt(2).image -->
<ms:Image id="NextButton" smoothBitmapContent="true" width="55" height="55" source="@Embed(source='/../figures/downArrow.png')"/>
</s:VGroup>
有什么想法?谢谢。
答案 0 :(得分:1)
你的问题是函数getItemAt(_images.getItemAt(0))是不可绑定的。
答案 1 :(得分:0)
查看您的课程A
:
public class A{
[Bindable]
public var data:ArrayCollection;
}
此处的属性data
不是静态的。所以它与A
的实例相关,但与A
本身无关。现在看一下B
的构造函数:
public function init(){
Cinst = new C();
Cinst.init(A.data);
}
及其现场声明:
[Bindable]
public var Ainst:A;
正如你在一行中看到的那样
Cinst.init(A.data);
您将data
称为静态属性。你应该使用:
public function init(){
Cinst = new C();
Cinst.init(Ainst.data);
}
代替。
请保留ActionScript naming and coding conventions。将语句放在单独的行中,并使用小写字母开始标识符。它可以让您更轻松地阅读代码。