Video.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. import SDK, { NodeAction } from "../SDK";
  8. import Utils from "../tools/Utils";
  9. const {ccclass, property} = cc._decorator;
  10. @ccclass
  11. export default class Video extends cc.Component {
  12. private _videoAd = null;
  13. private _config;
  14. private _isVideo;
  15. private _loadVideo;
  16. private _callBacks;
  17. private _fail;
  18. public init(config){
  19. this._config = config;
  20. this._isVideo = config.videoAdEnable > 0;
  21. Utils.instance.log('创建Video广告')
  22. this.initRewardVideo();
  23. }
  24. private initRewardVideo(){
  25. let self = this;
  26. let rewardvideoCode = this._config.videoAdCode;
  27. Utils.instance.log("-------激励视频创建----- "+rewardvideoCode);
  28. this._videoAd = qg.createRewardedVideoAd({
  29. posId:rewardvideoCode
  30. })
  31. this._videoAd.load();
  32. this._videoAd.onError(err => {
  33. Utils.instance.log("激励视频广告加载失败"+ JSON.stringify(err));
  34. self.scheduleOnce(()=>{
  35. self.initRewardVideo();
  36. },4);
  37. self._loadVideo = false;
  38. });
  39. this._videoAd.onLoad(function() {
  40. Utils.instance.log('激励视频加载成功')
  41. self._loadVideo = true;
  42. })
  43. this._videoAd.onClose(function(res) {
  44. self._loadVideo = false;
  45. if (res && res.isEnded) {
  46. Utils.instance.log('激励视频广告完成,发放奖励')
  47. SDK.Instance.reportLog(NodeAction.VIDEO_CLOSE,"激励视频广告完成,发放奖励");
  48. if(self._callBacks){
  49. self._callBacks();
  50. }
  51. } else {
  52. Utils.instance.log('激励视频广告取消关闭,不发放奖励')
  53. SDK.Instance.reportLog(NodeAction.VIDEO_CLOSE,"激励视频广告取消关闭,不发放奖励");
  54. if(self._fail){
  55. self._fail();
  56. }
  57. }
  58. self._callBacks = null;
  59. self._fail = null;
  60. self.loadRewardVideo();
  61. })
  62. }
  63. private loadRewardVideo(){
  64. if( this._videoAd){
  65. this._videoAd.load();
  66. }else{
  67. this.initRewardVideo();
  68. }
  69. }
  70. public showRewardVideo(callBacks: Function,fail:Function,noAd:Function){
  71. this._callBacks = callBacks;
  72. this._fail = fail;
  73. if(this._isVideo){
  74. if(this._videoAd){
  75. if(this._loadVideo){
  76. this._videoAd.show();
  77. SDK.Instance.reportLog(NodeAction.VIDEO_SHOW,"激励视频广告展示");
  78. }else{
  79. if(noAd){
  80. noAd();
  81. noAd = null;
  82. }
  83. this.loadRewardVideo();
  84. }
  85. }else{
  86. if(noAd){
  87. noAd();
  88. noAd = null;
  89. }
  90. this.initRewardVideo();
  91. }
  92. }
  93. }
  94. }