Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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
Flash 用于包含XML数据的列表的自定义cellRenderer_Flash_Actionscript 3_Actionscript - Fatal编程技术网

Flash 用于包含XML数据的列表的自定义cellRenderer

Flash 用于包含XML数据的列表的自定义cellRenderer,flash,actionscript-3,actionscript,Flash,Actionscript 3,Actionscript,我有一个游戏精灵代表一个游戏室最多有3名玩家,它的工作正常。并且希望基于来自套接字的XML数据,用这些游戏的填充列表组件 我准备了一个简单的测试用例来演示我的问题- ListTest.fla(其库中应具有列表组件): 屏幕截图: 正如您看到的,一个独立的游戏显示正常,但作为列表组件中的cellRenderer,它失败了-我不知道如何设置列表项的id 请告诉我如何修理它 谢谢,, 亚历克斯 更新: public function set data(d:Object):void {

我有一个游戏精灵代表一个游戏室最多有3名玩家,它的工作正常。并且希望基于来自套接字的XML数据,用这些游戏的填充列表组件

我准备了一个简单的测试用例来演示我的问题-

ListTest.fla(其库中应具有列表组件):

屏幕截图

正如您看到的,一个独立的游戏显示正常,但作为列表组件中的cellRenderer,它失败了-我不知道如何设置列表项的id

请告诉我如何修理它

谢谢,, 亚历克斯

更新

 public function set data(d:Object):void {
       _data = d;
       id = d.id;
   }
正如克劳斯建议的那样,现在一切正常,但是我如何获得用户的ID和姓名呢?当我在上述方法中设置断点时,我看到d.user只是一个空字符串“”

  • 代替Game.as中的trace语句,放置:
    id=d.id

  • 您可能只想将游戏节点传递到数据提供者:var games:XML=; var games:XML = <games/>; games.appendChild(xml.game); var dp:DataProvider = new DataProvider(games); appendChild(xml.game); var dp:DataProvider=新的DataProvider(游戏)

  • 如果希望访问:var games:Array=[]; 对于每个(XML.game中的var g:XML){games.push({id:g.@id,users:g.user});} var dp:DataProvider=新的DataProvider(游戏);然后您可以像这样访问用户:var users:XMLList=d.user; var users:XMLList = d.user; for each(var u:XML in users) { trace(u.@id, u.@name); } 对于每个(用户中的var u:XML){ 跟踪(u.@id,u.@name); }


  • 非常感谢。我在debugger中跟踪了集合数据,它的d参数实际上是一个对象,而不是XML。Flash似乎将遍历dataProvider XML的所有一级子项,并为每个子项创建一个对象,其中属性为属性(子项也为属性,但它们将是空字符串)。然而,我的新问题是,我需要访问每个游戏的子项用户,但是d.user只是一个空字符串:-(如果您想访问子对象,可能需要将XML预解析为一个对象数组,该数组保存数据提供程序中所需的数据,并传递该数组而不是XML。感谢您回来回答这个问题 var games:XML = <games/>; games.appendChild(xml.game); var dp:DataProvider = new DataProvider(games); var games:Array = []; for each(var g:XML in xml.game) { games.push({ id: g.@id, users: g.user }); } var dp:DataProvider = new DataProvider(games); var users:XMLList = d.user; for each(var u:XML in users) { trace(u.@id, u.@name); }