2014-02-09 30 views
0

*您好!我需要在列表组件中显示的dataProvider上仅填充100个项目。即使物品超过500甚至1000个,我只需要100个物品,首先打开所有物品,然后填充剩下的物品以完成100个物品,然后放置在DataProvider上。 使用ActionScript 3.0(闪存CC):如何限制数据提供者接收到的项目数量AS3

UPDATE:基本上,我需要的是:我有一个视频聊天应用闪光灯,所以当有数百个用户的应用由于列表组件填充数百变慢项目(用户),因此我希望列表中至少有100个用户优先考虑流式直播视频的用户。是否有意义? :)谢谢 - 亚历刚才编辑
*

代码:

function syncEventHandler(event:SyncEvent){ 
     list1.removeAll(); 

      for (var i in users_so.data){ 

       if (users_so.data[i] != null) 
         { 
          var clientObj = users_so.data[i]; 
       //if user is streaming add it first then complete 100 with the rest. 
          list1.addItem({label:clientObj.UserName}); 
         } 


      } 
    } 

感谢您抽出宝贵时间,这一个!

+0

这取决于该数据来自理想,如果你从服务器获取这些数据(通过GET/a webservice/etc),服务器实现应该为你提供只需要100个项目的选项。如果这不是一个选项(你无法控制服务器端部分),那么可以有两个DataProvider对象。一种是提取全部数据(例如全部500或100),另一种只存储对100个条目的引用。实际上,一旦你拉出数据,你可以将它存储到一个有价值的对象类型数组中,并在需要时使用100个引用更新一个DataProvider。 –

+0

...听起来像分页是你需要的 –

+0

基本上,我需要的是:我在Flash中有一个videochat应用程序,所以当有数百个用户时,由于list组件填充了数百个项目(用户),所以应用程序变得很慢,所以我希望列表中至少有100个用户优先给用户流媒体直播视频。是否有意义? :)谢谢 – Alex

回答

0

我不知道你的意图是什么,但你可以通过实现像这样一个全球性的反限制的数据提供者的项目数:

function syncEventHandler(event:SyncEvent) 
{ 
    list1.removeAll(); 
    counter = 0; 
    for (var i in users_so.data) 
    { 

     if (users_so.data[i] != null) 
     { 
      if(counter < 100) 
      { 
       var clientObj = users_so.data[i]; 
       //if user is streaming add it first then complete 100 with the rest. 
       list1.addItem({label:clientObj.UserName}); 
       counter ++; 
      } 
      else 
      { 
       break; 
      } 
     } 

    } 
} 
+0

嗨,我试过你的代码,但有些缺失,例如: 'if(clientObj.webcamLive == true){list1.addItem({label:clientObj.UserName}); counter ++ }' – Alex