announcement.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { _decorator, Component, Node, Size, SpringJoint2D, Sprite, SpriteFrame, UITransform } from 'cc';
  2. import { base_ui } from '../fw/base_ui';
  3. import { tools } from '../tools';
  4. import { http } from '../http';
  5. import { config } from '../config';
  6. import { GameManager } from '../GameManager';
  7. import { ClientEvent } from '../lib/clientEvent';
  8. import { userDataManager } from '../manager/userDataManager';
  9. const { ccclass, property } = _decorator;
  10. @ccclass('announcement')
  11. export class announcement extends base_ui {
  12. @property(Node) btn_close:Node = null
  13. @property(Node) empty:Node = null
  14. @property(Node) content_img:Node = null
  15. protected start(): void {
  16. this.onButtonListen(this.btn_close, ()=>{
  17. this.close()
  18. })
  19. GameManager.requestDelay(()=>{
  20. this.requestBulletin()
  21. })
  22. }
  23. private requestBulletin() {
  24. http.get(config.STATIC_API.bulletin, (err,d)=>{
  25. if(!err){
  26. let data = JSON.parse(d)
  27. if(data.code===config.status.SUCCESS){
  28. let img_url = data.content.img_url
  29. if(img_url.length<=0) {
  30. this.empty.active = true
  31. } else {
  32. tools.loadRemoteImg(img_url, (r)=>{
  33. this.showContentImg(r.sf)
  34. })
  35. this.setRead()
  36. }
  37. }
  38. } else{
  39. console.log("err bulletin",err)
  40. }
  41. })
  42. }
  43. private showContentImg(sf:SpriteFrame) {
  44. if(sf==null||sf==undefined) {
  45. this.empty.active = true
  46. return
  47. }
  48. this.empty.active = false
  49. let img_width = this.content_img.getComponent(UITransform).contentSize.width
  50. let bili = sf.width / sf.height
  51. let img_height = img_width / bili
  52. let img_size = new Size(img_width, img_height)
  53. this.content_img.getComponent(UITransform).setContentSize(img_size)
  54. this.content_img.getComponent(Sprite).spriteFrame = sf
  55. }
  56. private setRead() {
  57. if(userDataManager.user_red_dot_data.bulletin_red_dot==0) {
  58. return
  59. }
  60. GameManager.requestUserSetReadRedDot(config.RED_DOT_TYPE.announcement, ()=>{
  61. userDataManager.user_red_dot_data.bulletin_red_dot = 0
  62. ClientEvent.dispatchEvent(config.UI_EVENT.UPDATE_RED_DOT_STATUS,config.RED_DOT_TYPE.announcement)
  63. })
  64. }
  65. }