NoticeCtrl.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. cc.Class({
  2. extends: cc.BaseClass,
  3. properties: {
  4. m_MsgBg: cc.Sprite,
  5. m_LabMsg: cc.Label
  6. },
  7. ctor: function () {
  8. this.m_MsgMap = new Object();
  9. this.m_TurnArr = new Array();
  10. this.m_bFrist = true;
  11. this.m_bPlayTurn = false;
  12. },
  13. start: function () {
  14. //设置定时
  15. // this.m_MsgBg.enabled = false;
  16. this.UpdateMsg();
  17. this.schedule(this.UpdateMsg, 120);
  18. // this.schedule(this.CheckMsgLine, 5);
  19. },
  20. UpdateMsg: function () {
  21. var Arr = new Array();
  22. for (var i in this.m_MsgMap) Arr.push(i);
  23. var webUrl = window.PHP_HOME + '/UserFunc.php?GetMark=8&Arr=' + JSON.stringify(Arr);
  24. WebCenter.GetData(webUrl, null, function (data) {
  25. var Ud = JSON.parse(data);
  26. for (var i in Ud.New) {
  27. this.m_MsgMap[i] = new Array();
  28. this.m_MsgMap[i].Rate = Ud.New[i].Rate * 1000; //分钟 ->毫秒
  29. this.m_MsgMap[i].Msg = Ud.New[i].Msg;
  30. this.m_MsgMap[i].LPT = 0; //last play time
  31. }
  32. for (var i in Ud.Del) {
  33. delete this.m_MsgMap[Ud.Del[i]];
  34. }
  35. // if (this.m_TurnArr.length == 0) this.CheckMsgLine();
  36. if(Object.keys(this.m_MsgMap).length > 0 && (this.m_bFrist || this.m_TurnArr.length == 0)) {
  37. this.m_bFrist = false;
  38. this.CheckMsgLine();
  39. // this.unschedule(this.CheckMsgLine);
  40. // this.schedule(this.CheckMsgLine, 10);
  41. }
  42. }.bind(this));
  43. },
  44. CheckMsgLine: function () {
  45. var Data = new Date().getTime();
  46. var TempArr = new Array();
  47. for (var i in this.m_MsgMap) {
  48. if (Data - this.m_MsgMap[i].LPT > this.m_MsgMap[i].Rate) {
  49. this.m_TurnArr.push(i);
  50. this.m_MsgMap[i].LPT = Data;
  51. }
  52. }
  53. //if(!this.m_MsgBg.enabled ) this.ShowMsg();
  54. if (!this.m_bPlayTurn && this.m_TurnArr.length > 0) this.ShowMsg();
  55. },
  56. ShowMsg: function () {
  57. var MsgStr = null;
  58. while (this.m_TurnArr.length > 0 && MsgStr == null) {
  59. var msgInfo = this.m_MsgMap[this.m_TurnArr.shift()];
  60. if (msgInfo) MsgStr = msgInfo.Msg;
  61. }
  62. if (MsgStr == null) {
  63. this.m_bPlayTurn = false;
  64. this.CheckMsgLine();
  65. //this.m_MsgBg.enabled = false;
  66. return;
  67. }
  68. this.m_bPlayTurn = true;
  69. //this.m_MsgBg.enabled = true;
  70. this.m_LabMsg.node.stopAllActions();
  71. this.m_LabMsg.string = MsgStr;
  72. this.m_LabMsg.node.x = (this.$('Mark').width);
  73. this.scheduleOnce(function() {
  74. var act = cc.sequence(cc.moveTo(0, cc.v2(this.$('Mark').width, 0)), cc.moveTo((this.m_LabMsg.node.width + this.$('Mark').width) / 160, cc.v2(-this.m_LabMsg.node.width, 0)));
  75. var callback = cc.callFunc(this.ShowMsg.bind(this))
  76. this.m_LabMsg.node.runAction(cc.sequence(act, cc.delayTime(10), callback));
  77. }.bind(this), 0.0001);
  78. },
  79. });