通过P2P Flex发送ArrayCollections



我有一个关于P2P与flex的问题。当使用P2P在两个应用程序之间传递数据时。我得到以下错误:

 warning: unable to bind to property 'piece' on class 'Object' (class is not an IEventDispatcher)


我花了几天时间用谷歌试图找到一个解决方案,但我不能摆脱这个错误。我试过使用ObjectUtils,直接赋值,并在括号内创建一个新的ArrayCollection与ObjectUtils,仍然无法解决问题。


代码用途:
,->两个用户通过P2P连接
,-> 第一个用户可以操作图片(存储在数组集合中的对象)。
,-> 第一个用户向第二个用户
发送更新的ArrayCollection(包含更改的图片),-> 第二个用户的ArrayCollection被更新,现在看到被操纵的图片

就我对Flex的了解而言(对它相当陌生),我正确地绑定了需要绑定的东西。使用弹出窗口和跟踪,我能够看到来自ArrayCollection的数据被正确复制,但它只是不想显示。


下面是我的一些代码片段:

[Bindable]
public var taken:ArrayCollection = new ArrayCollection ([
    new picLayout(1,'sky.png'),
    new picLayout(2,'bird.png')
    ])
public function receiveSomeData(pass:ArrayCollection):void
{   
    // Want to replace current version of variable "taken" with
    // the one passed in using P2P
    this.taken= new ArrayCollection(pass.source);
}
public function sendSomeData(free:ArrayCollection):void
{   
    sendStream.send("receiveSomeData",free);
}
<s:Button click="sendSomeData(taken)" label="Update" />

感谢您的帮助和时间!

我弄清楚了问题是什么,以及如何解决它-部分感谢这些页面:
无法绑定警告:类不是一个IEventDispatcher
Flex警告:无法绑定属性'foo'on class 'Object'(类不是一个IEventDispatcher)

我知道信息被成功地发送到另一个对等体,但问题是对象在 ArrayCollection中没有被绑定。

我对这个问题的解决方案如下:

  • 创建一个循环发送ArrayCollection中的每个对象以及索引,该索引告诉您正在流式传输的ArrayCollection中的哪个值

  • 现在,因为你是"流"的数据,覆盖当前的ArrayCollection,使用setItemAt()函数与第一个字段作为"新ObjectProxy(passsedobject)"和第二个字段作为 passsedindex (注):ObjectProxy()函数强制传递的对象是可绑定


下面是更新后的代码片段:

[Bindable]
public var takenPics:ArrayCollection = new ArrayCollection ([
    new picLayout(1,'sky.png'),
    new picLayout(2,'bird.png')
    ])
private function sendSomeData(data:Object, index:int):void
{   
    sendStream.send("receiveSomeData",data,index);
}
private function receiveSomeData(passedPic:Object,ix:int):void
{   
    // ObjectProxy needed to force a bindable object
    takenPics.setItemAt(new ObjectProxy(passedPic),ix);
}
public function sendPictures():void
{
    // ix < 2 because size of ArrayCollection is 2
    for (var ix:int = 0; ix<2; ix++)
        sendSomeData(takenPics[ix],ix);
}

相关内容

  • 没有找到相关文章

最新更新