Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex/AS3:通过引用属性进行数据绑定_Apache Flex_Actionscript 3_Data Binding - Fatal编程技术网

Apache flex Flex/AS3:通过引用属性进行数据绑定

Apache flex Flex/AS3:通过引用属性进行数据绑定,apache-flex,actionscript-3,data-binding,Apache Flex,Actionscript 3,Data Binding,我有: A类:具有属性“data:ArrayCollection”。它是我的数据源(数据提供程序)并具有位图 类B:有一个实例A(称为“Ainst”)并调用以下方法:C.init(Ainst.data)。将数据提供程序传递给对象C 类C:具有数据提供程序“data”的引用(因为“init”方法)。它将arrayCollection显示为图像:Image.source=data.getItemAt(0) 但C从不更新其映像,也就是说,数据绑定不适用于此方案。我在所有属性甚至类中都添加了[Binda

我有:

A类:具有属性“data:ArrayCollection”。它是我的数据源(数据提供程序)并具有位图

类B:有一个实例A(称为“Ainst”)并调用以下方法:C.init(Ainst.data)。将数据提供程序传递给对象C

类C:具有数据提供程序“data”的引用(因为“init”方法)。它将arrayCollection显示为图像: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项(位图)的图像菜单



有什么想法吗?谢谢

您的问题是函数getItemAt(\u images.getItemAt(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);
您将
数据
作为静态属性引用。你应使用:

public function init(){ 
    Cinst = new C(); 
    Cinst.init(Ainst.data);
}
相反


请保留ActionScript。将语句放在单独的行中,标识符以小写字母开头。它允许阅读代码更容易。< /P>请提供代码以了解细节。在ActionScript之前,你使用了什么编程语言?C++、C、java、C等。问题是我在同一个论坛的盒子里写下了所有的东西。抱歉,谢谢您的时间,但此代码是作为伪代码提供的。所以这不是问题所在。我认为问题在于,当数组更改时,我无法获取绑定事件。@Manel,停止使用伪代码并显示真实代码?不管你在做什么,它看起来都太复杂了。好吧,对不起,但是原始类真的很大。。。我已经找到了解决办法,稍后我会给大家一个解释。它与更新ArrayCollectionno、no时的克隆位图有关。请看以下内容:“但是,数据绑定表达式myAC.getItemAt(0)当数组元素更改时触发。因此,当您单击按钮1时,text2文本控件将更新,而text1则不会更新。当使用数组元素作为数据绑定表达式的源时,您应该在绑定表达式中使用ArrayCollection.getItemAt()方法。“发件人:
public function init(){ 
    Cinst = new C(); 
    Cinst.init(Ainst.data);
}