ExportList.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import { PlatformManager } from "../../../platforms/PlatformManager";
  2. import UI_Export001 from "../../../ui/WXSExport/UI_Export001";
  3. import UI_Export002 from "../../../ui/WXSExport/UI_Export002";
  4. import UI_Export004 from "../../../ui/WXSExport/UI_Export004";
  5. export default class ExportList
  6. {
  7. private list:fgui.GList;
  8. private scrollDirection:number=0;
  9. private count:number=20;
  10. private itemRenderFunction:Function;
  11. private itemClick:Function;
  12. private datas:any[];
  13. private isForward:boolean;
  14. /**
  15. * 导出列表
  16. * @param list
  17. * @param scrollDirection 0横向滚动 1纵向滚动
  18. * @itemRenderFunction function(data,index,item);
  19. * @itemClick function(item);
  20. */
  21. constructor(list:fgui.GList,scrollDirection:number=0,itemRenderFunction:Function=null,itemClick:Function=null){
  22. this.list=list;
  23. this.list.itemRenderer=this.ItemRender.bind(this);
  24. this.itemClick=itemClick
  25. this.itemRenderFunction=itemRenderFunction;
  26. this.scrollDirection=scrollDirection;
  27. this.list.on(fgui.Event.CLICK_ITEM,this.ItemClickHandler,this);
  28. }
  29. Refresh(count:number=20):void{
  30. this.count=count;
  31. this.datas=PlatformManager.getRandomPageAd(count);
  32. this.list.numItems=this.datas.length;
  33. this.isForward=true;
  34. }
  35. private ItemRender(index:number,obj:fgui.GObject):void{
  36. let data:any=this.datas[index];
  37. if(this.itemRenderFunction!=null){
  38. this.itemRenderFunction(data,index,obj);
  39. }else{
  40. let icon:fgui.GLoader;
  41. if(obj instanceof UI_Export001){
  42. let ui:UI_Export001=obj as UI_Export001;
  43. ui.m_txtName.text=data.name;
  44. icon=ui.m_groupIcon;
  45. }else if(obj instanceof UI_Export002){
  46. let ui:UI_Export002=obj as UI_Export002;
  47. ui.m_txtName.text=data.name;
  48. icon=ui.m_groupIcon;
  49. }else if(obj instanceof UI_Export004){
  50. let ui:UI_Export004=obj as UI_Export004;
  51. icon=ui.m_groupIcon;
  52. }
  53. obj.data=data;
  54. icon.url=data.icon;
  55. // cc.assetManager.loadRemote(data.icon,(err:Error,texture:cc.Texture2D)=>{
  56. // if(icon.texture==null){
  57. // icon.texture=new cc.SpriteFrame();
  58. // }
  59. // icon.texture.setTexture(texture);
  60. // });
  61. }
  62. }
  63. private ItemClickHandler(item:fgui.GObject):void{
  64. if(this.itemClick!=null){
  65. this.itemClick(item);
  66. }
  67. }
  68. private lastIsDragged:boolean;
  69. private isTouch:boolean;
  70. private touchTime:number;
  71. Tick(dt:number):void{
  72. if(this.lastIsDragged!=this.list.scrollPane.isDragged){
  73. //用户拖拽结束
  74. if(this.lastIsDragged){
  75. this.touchTime=cc.sys.now();
  76. }else{
  77. this.isTouch=true;
  78. }
  79. }
  80. this.lastIsDragged=this.list.scrollPane.isDragged;
  81. if(this.isTouch==true){
  82. if(this.lastIsDragged==false){
  83. let curTime:number=cc.sys.now();
  84. if(curTime-this.touchTime>1000){
  85. this.isTouch=false;
  86. }
  87. }
  88. return;
  89. }
  90. //横向
  91. if(this.scrollDirection==0){
  92. if(this.isForward){
  93. if(this.list.scrollPane.isRightMost){
  94. this.isForward=false;
  95. }
  96. this.list.scrollPane.scrollRight(0.1);
  97. }else{
  98. if(this.list.scrollPane.posX==0){
  99. this.isForward=true;
  100. }
  101. this.list.scrollPane.scrollLeft(0.1);
  102. }
  103. }else{//纵向
  104. if(this.isForward){
  105. if(this.list.scrollPane.isBottomMost){
  106. this.isForward=false;
  107. }
  108. this.list.scrollPane.scrollDown(0.1);
  109. }else{
  110. if(this.list.scrollPane.posY==0){
  111. this.isForward=true;
  112. }
  113. this.list.scrollPane.scrollUp(0.1);
  114. }
  115. }
  116. }
  117. }