Marquee.ts 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. // Learn TypeScript:
  2. // - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
  3. // Learn Attribute:
  4. // - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
  5. // Learn life-cycle callbacks:
  6. // - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
  7. const { ccclass, property } = cc._decorator;
  8. @ccclass
  9. export default class Marquee extends cc.Component {
  10. @property([cc.Label])
  11. public labelArr: cc.Label[] = [];
  12. public nameArr: string[] = ["惠", "球球", "似水流年", "lalalalalala", "sajk44582", "MjTc626", "Lzg19890603", "WDD200102", "wxsfsdg032",
  13. "隔壁老王123", "ssa112233", "sb123", "aode19990203",
  14. "只求一份安定", "无可置疑", "一生承诺", "简单灬爱", "别在我面前犯贱", "没有背景丶只有背影", "丶猫猫er",
  15. "越疯癫的女人、心越脆弱", "开心的笨小孩", "虚张声势丶", "相见不如怀念", "海阔天空", "焚心劫",
  16. "迷路的男人", "虚伪了的真心", "回忆未来", "米兰", "野兽之美", "雁過藍天", "泡泡龙",
  17. "tina", "为爱放弃", "花菲", "可儿", "志平", "非想", "生命一旅程", "杰克", "大朋友",
  18. "|宝贝雪儿|", "Jessie", "﹎﹎F魚&uot;", "大棒", "灵兰若梦", "锦瑟幽心", "冰城",
  19. "文远", "阿红", "我是傻A", "蛰伏", "Davidchan", "tomath", "天涯",
  20. "森舟电商肖森舟", "搁浅", "Honeyヽ", "似曾相识", "可可妈", "莲波仙子", "bibe", "小棉", "金色", "谢震宇", "袭夜风", "海藻",
  21. "wei", "超越梦想", "曾琦", "眼镜", "kk2288", "strom98", "lin", "平凡", "蔡仁傑", "小宝贝",
  22. "纯洁的半烟", "千里之外", "峰回路转", "白帆", "唯独钟情于你", "温柔一脚", "要烦", "尘梦如烟", "鱼一直下",
  23. "summer@", "碧荷叶", "6月", "贱狗", "小小", "思静", "梦朦", "英英", "落叶知秋", "淤淤", "无语", "Mr丶小华",
  24. "shiyibin", "Liu.J.H", "椰风", "随意", "今生你做伴", "莫名的青春", "日久见人心", "相知相惜",
  25. "最迷人的危险", "请在乎我1秒", "爱你心口难开", "怀念最初", "命运不堪浮华", "蝶恋花", "漫长的人生", "浮殇年华", "花容月貌",
  26. "li_19820506", "wahaha0203", "kekekekaka", "diu_mu123", "hkhjkasdajk",];
  27. /**钱的数目 */
  28. public moneyNumArr: number[] = [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,
  29. 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,
  30. 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  31. 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
  32. 100, 100, 100, 100, 100, 100,
  33. 200, 200, 200, 200,
  34. 300, 300,
  35. 500];
  36. // LIFE-CYCLE CALLBACKS:
  37. // onLoad () {}
  38. start() {
  39. // this.initMarquee();
  40. }
  41. onEnable() {
  42. this.initMarquee();
  43. }
  44. onDisable() {
  45. this.cancelMarquee()
  46. }
  47. // update (dt) {}
  48. /**初始化 */
  49. initMarquee() {
  50. this.middleLabelIndex = 1;
  51. for (var i = 0; i < this.labelArr.length; i++) {
  52. let label = this.labelArr[i];
  53. label.string = this.getRewardInfo();
  54. }
  55. console.log("this.labelArr ", this.labelArr)
  56. this.startMarquee();
  57. }
  58. /** */
  59. getRewardInfo(): string {
  60. let name: string = "";
  61. let nameIndex = Math.floor(Math.random() * this.nameArr.length);
  62. name = this.codeName(this.nameArr[nameIndex]);
  63. let time = 1 + Math.floor(Math.random() * 10);
  64. let moneyNumIndex = Math.floor(Math.random() * this.moneyNumArr.length);
  65. let moneyNum: number = this.moneyNumArr[moneyNumIndex];
  66. let rewardInfo: string = `${name}在${time}分钟前成功提现${moneyNum}元`
  67. return rewardInfo;
  68. }
  69. /**给名字加密 */
  70. codeName(name: string): string {
  71. let codeName: string = "";
  72. let nameLength: number = name.length;
  73. if (name.length == 2) {
  74. codeName = name[0] + "*";
  75. }
  76. else if (name.length == 3) {
  77. codeName = name[0] + "*" + name[2];
  78. }
  79. else {
  80. for (var i = 0; i < nameLength; i++) {
  81. let namaChar = name[i];
  82. if (i == (name.length - 3) || i == (name.length - 2)) {
  83. namaChar = "*";
  84. }
  85. codeName += namaChar;
  86. }
  87. }
  88. return codeName;
  89. }
  90. public middleLabelIndex: number = 0;
  91. /** */
  92. interval_marquee: number = null;
  93. /** */
  94. startMarquee(time: number = 300, delayTime: number = 600) {
  95. let opacitySpeed: number = ((255 - 120) / time) * 20;
  96. let scaleSpeed: number = (0.2 / time) * 20;
  97. let moveDisSpeed: number = (40 / time) * 20;
  98. let curTime: number = 0;
  99. let curDelayTime: number = 0;
  100. let ifDelay: boolean = false;
  101. this.interval_marquee = setInterval(() => {
  102. if (!ifDelay) {
  103. let perIndex = this.middleLabelIndex - 1;
  104. if (perIndex < 0) {
  105. perIndex += 4;
  106. }
  107. let perLabel: cc.Label = this.labelArr[perIndex];
  108. let curLabel = this.labelArr[this.middleLabelIndex];
  109. let nextIndex = this.middleLabelIndex + 1;
  110. if (nextIndex > 3) {
  111. nextIndex -= 4;
  112. }
  113. let nextLabel: cc.Label = this.labelArr[nextIndex];
  114. let lastIndex = this.middleLabelIndex + 2;
  115. if (lastIndex > 3) {
  116. lastIndex -= 4;
  117. }
  118. let lastLabel: cc.Label = this.labelArr[lastIndex];
  119. if (this.middleLabelIndex == 3) {
  120. // this.cancelMarquee();
  121. // console.log("perLabel.node", perLabel.node);
  122. // console.log("curLabel.node", curLabel.node);
  123. // console.log("nextLabel.node", nextLabel.node);
  124. // console.log("lastNode.node", lastLabel.node);
  125. // console.log("lastNode.node", lastIndex);
  126. }
  127. curTime += 20;
  128. perLabel.node.y += moveDisSpeed;
  129. curLabel.node.y += moveDisSpeed;
  130. curLabel.node.scale -= scaleSpeed;
  131. curLabel.node.opacity -= opacitySpeed;
  132. nextLabel.node.y += moveDisSpeed;
  133. nextLabel.node.scale += scaleSpeed;
  134. nextLabel.node.opacity += opacitySpeed;
  135. lastLabel.node.y += moveDisSpeed;
  136. if (curTime >= time) {
  137. perLabel.node.y = -80;
  138. perLabel.string = this.getRewardInfo()
  139. ifDelay = true;
  140. }
  141. }
  142. else {
  143. curDelayTime += 20;
  144. if (curDelayTime >= delayTime) {
  145. ifDelay = false;
  146. curDelayTime = 0;
  147. curTime = 0;
  148. this.middleLabelIndex++;
  149. if (this.middleLabelIndex > 3) {
  150. this.middleLabelIndex = 0;
  151. }
  152. }
  153. }
  154. }, 20)
  155. }
  156. cancelMarquee() {
  157. if (this.interval_marquee) {
  158. clearInterval(this.interval_marquee);
  159. this.interval_marquee = null;
  160. }
  161. }
  162. }