【问题标题】:FLEX - adding items to s:list from recieved data from socketFLEX - 从套接字接收到的数据将项目添加到:列表
【发布时间】:2011-08-17 15:05:06
【问题描述】:

我的 MXML 中有 s:list 组件和一个不同的操作脚本文件,它执行与服务器的套接字连接。 每次用户连接到服务器时,我都会通过发送端口字符串(每个用户的端口)向所有客户端发送服务器中更新的用户。 现在,当数据到达客户端(到动作脚本文件 SocketData 函数)时,我希望将其作为项目添加到 MXML 文件中的 s:List 中。 我该怎么做?叫什么?

【问题讨论】:

    标签: apache-flex actionscript-3


    【解决方案1】:

    您是否只需要这样做:

    list.dataProvider = resultsFromSocketCall;
    

    更新:根据 Alon 使用绑定的请求提供更多信息。

    创建一个 Bindable 变量,我将使用 ArrayCollection:

    [Bindable]
    public var myCollection : ArrayCollection;
    

    将其绑定到列表中的dataProvider:

    <s:List dataProvider="{myCollection}" />
    

    当您从套接字调用中获取结果时;你可以这样做:

    myCollection = resultsFromSocketCall;
    

    【讨论】:

    • List 是一个 MXML spark 组件 ,如何将 socket 的结果绑定到它?
    • @alon 我更新了我的答案以演示如何通过绑定来做到这一点。虽然,我不确定你为什么在这种情况下使用绑定。
    【解决方案2】:

    在处理套接字连接的 AS3 类中创建一个 Bindable ArrayCollection 属性。将套接字调用的结果存储在此ArrayCollection 中。然后,在 MXML 中,将此属性从您使用的实例绑定到您的 &lt;s:List&gt; 上的 dataprovider 属性。

    【讨论】:

    • 这行得通,但是 dataprovider 包含对象数组,每个对象有 5 个数据成员,我想用对象数据表示 s:List 中的每一行,例如:第 1 行:TableId:1 TableName: myfirstable MaxPlayers: 4 MinRank: 10 PasswordProtected: Yes
    • @Alon - 一种选择是为列表编写自定义项目渲染器,然后您可以显示每个项目的所有这些内容并对其进行格式化。否则,听起来您可能对DataGrid 更感兴趣。然而,这可能需要您将数组转换为对象,以便条目具有键(例如,tableIDtableNamemaxPlayers、等)。
    猜你喜欢
    • 2021-12-23
    • 2021-01-27
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多