announcement.ts 2.4 KB

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