GameInit.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. // Learn cc.Class:
  2. // - https://docs.cocos.com/creator/manual/en/scripting/class.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. cc.Class({
  8. extends: cc.Component,
  9. properties: {
  10. car_park: cc.Prefab,
  11. car_run: cc.Prefab,
  12. car_runs_area: cc.Node,
  13. car_park_area: cc.Node,
  14. coin_buy:cc.Label,
  15. },
  16. // LIFE-CYCLE CALLBACKS:
  17. onLoad () {
  18. //关闭多点触摸
  19. cc.macro.ENABLE_MULTI_TOUCH = false;
  20. //开启碰撞检测
  21. // cc.director.getCollisionManager().enabled = true;
  22. //设置初始金币
  23. this.InitCoin(300);
  24. this.InitCars();
  25. this.InitCarPrice();
  26. this.initAd();
  27. if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  28. this.initCocosAnalystic('WECHAT');
  29. } else if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
  30. this.initCocosAnalystic('TT');
  31. }
  32. },
  33. initAd(){
  34. let self = this;
  35. if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  36. Share.WX_TOP_SHARE();
  37. self.init_wechat_Ad();
  38. }else if(cc.sys.platform === cc.sys.BYTEDANCE_GAME){
  39. self.init_tt_ad();
  40. } else {
  41. // dialog.getChildByName('Button').getChildByName('分享').active = false;
  42. // this.androidad();
  43. }
  44. },
  45. initCocosAnalystic(Platform) {
  46. cocosAnalytics.init({
  47. appID: "669708646", // 游戏ID
  48. version: "1.0.0", // 游戏/应用版本号
  49. storeID: Platform, // 分发渠道
  50. engine: "cocos", // 游戏引擎
  51. });
  52. cocosAnalytics.enableDebug(false);
  53. // 开始登陆
  54. cocosAnalytics.CAAccount.loginStart({
  55. channel: Platform, // 获客渠道,指获取该客户的广告渠道信息
  56. });
  57. // 登陆成功
  58. cocosAnalytics.CAAccount.loginSuccess({
  59. userID: '1',
  60. age: 1, // 年龄
  61. sex: 1, // 性别:1为男,2为女,其它表示未知
  62. channel: Platform, // 获客渠道,指获取该客户的广告渠道信息
  63. })
  64. },
  65. InitCarPrice () {
  66. let coin_buy_num = Storage.Get_storage(Storage.GameMessageType.buy_coin)
  67. if (coin_buy_num == 0) {
  68. coin_buy_num = 100;
  69. }
  70. // console.log(coin_buy);
  71. this.coin_buy.string = coin_buy_num;
  72. },
  73. InitCars() {
  74. let car_list_str = Storage.Get_storage(Storage.GameMessageType.cars_own);
  75. if (car_list_str == 0) {
  76. Global.endinit = true;
  77. return;
  78. }
  79. Global.endinit = false;
  80. var car_list = car_list_str.split(",");//以逗号为分割点
  81. var self = this;
  82. let i = 0;
  83. this.schedule(function () {
  84. let addnode = this.AddCarPark(car_list[i]);
  85. addnode.getComponent("CarBindRunAndPark").Bind(this.AddCarsRun(car_list[i]));
  86. i++;
  87. MyAudio.PlayEffect_initcar();
  88. if (i == car_list.length) {
  89. Global.endinit = true;
  90. //定义一个一秒一次的计时器,来计算自动合并
  91. // self.schedule(self.updateCarImage, 10);
  92. }
  93. }, 0.2, car_list.length - 1, 0.5);
  94. Global.MaxCarLevel = Math.max(...car_list);
  95. },
  96. InitCoin(num) {
  97. if (Storage.Get_storage(Storage.GameMessageType.coin) == 0) {
  98. Storage.Set_storage(Storage.GameMessageType.coin,num);
  99. }
  100. },
  101. AddCarsRun(level) {
  102. let node_run = cc.instantiate(this.car_run);
  103. node_run.getChildByName("number_pic").getChildByName("level_number").getComponent(cc.Label).string = level;
  104. let pic_url = Global.Cars[level].car_run_pic
  105. cc.resources.load(pic_url, cc.SpriteFrame, function (err, spriteFrame) {
  106. node_run.getComponent(cc.Sprite).spriteFrame = spriteFrame;
  107. });
  108. node_run.parent = this.car_runs_area;
  109. //更新每秒收益值
  110. cc.find("Canvas/Main/Items/coin_bg/Coin_own").getComponent("Coin_refresh").Coin_refresh_per_circle();
  111. return node_run;
  112. },
  113. AddCarPark(level) {
  114. let node_park = cc.instantiate(this.car_park);
  115. node_park.getChildByName("car_parking_pic").getChildByName("number").getComponent(cc.Label).string = level;
  116. let pic_url = Global.Cars[level].car_park_pic
  117. cc.resources.load(pic_url, cc.SpriteFrame, function (err, spriteFrame) {
  118. node_park.getChildByName("car_parking_pic").getComponent(cc.Sprite).spriteFrame = spriteFrame;
  119. });
  120. node_park.parent = this.car_park_area;
  121. return node_park;
  122. },
  123. /*
  124. 合并升级之后偶现等级和图片对不齐,定时10秒更新一下
  125. */
  126. updateCarImage() {
  127. let nodelist = this.car_park_area.children;
  128. // let node_need_update = 0;
  129. // var self = this;
  130. for (let i in nodelist) {
  131. let level_node = Number(nodelist[i].getChildByName('car_parking_pic').getChildByName('number').getComponent(cc.Label).string);
  132. //更新停車pic
  133. //nodelist[i].getChildByName('car_parking_pic').getChildByName('number').getComponent(cc.Label).string = level;
  134. cc.resources.load(Global.Cars[level_node].car_park_pic, cc.SpriteFrame, function (err, spriteFrame) {
  135. nodelist[i].getChildByName('car_parking_pic').getComponent(cc.Sprite).spriteFrame = spriteFrame;
  136. //更新每秒收益值
  137. //cc.find("Canvas/Main/role/Stop_cars/car_park").getComponent("CarManager").AfterCarAddOrMerge();
  138. //Global.toast("免费将" +level_node+ "级车升级为" + level + "级车!");
  139. });
  140. }
  141. },
  142. init_wechat_Ad(){
  143. // 创建激励视频广告实例,提前初始化
  144. let videoAd = wx.createRewardedVideoAd({
  145. adUnitId: 'adunit-05909f15fccafeaf'
  146. })
  147. videoAd.onLoad(() => {
  148. console.log('激励视频 广告加载成功');
  149. Global.wechatvideoid = videoAd;
  150. })
  151. videoAd.onError(err => {
  152. console.log(err);
  153. videoAd.load();
  154. })
  155. videoAd.onClose(res => {
  156. // 用户点击了【关闭广告】按钮
  157. // 小于 2.1.0 的基础库版本,res 是一个 undefined
  158. if (res && res.isEnded || res === undefined) {
  159. if (Global.outlinereward != -1) {
  160. let icon = Storage.Get_storage(Storage.GameMessageType.coin);
  161. Storage.Set_storage(Storage.GameMessageType.coin, Number(icon) + Global.outlinereward);
  162. Global.outlinereward = -1;
  163. self.node.getComponent('collect_coin_anim').onPlayCoinAni(self.node);
  164. } else {
  165. // 正常播放结束,可以下发游戏奖励
  166. cc.find('Canvas/Main/role/Stop_cars/Add_Car').getComponent('CarAddPark').AddCarToPark();
  167. }
  168. }
  169. else {
  170. Global.toast('播放中途退出,未获得奖励!')
  171. // 播放中途退出,不下发游戏奖励
  172. }
  173. cc.find("Canvas/Main/Dialog").active = false;
  174. cc.find("outline/outlinereward").active = false;
  175. })
  176. //插屏广告
  177. // 定义插屏广告
  178. let interstitialAd = null
  179. // 创建插屏广告实例,提前初始化
  180. if (wx.createInterstitialAd) {
  181. interstitialAd = wx.createInterstitialAd({
  182. adUnitId: 'adunit-64dcfc5de4ce7fc1'
  183. })
  184. Global.interstitialAd = interstitialAd;
  185. }
  186. //创建格子广告
  187. const customAd = wx.createCustomAd({
  188. adUnitId: 'adunit-6bd755b0b0ab3dbb',
  189. style: {
  190. left: 10,
  191. top: 175,
  192. width: 375 // 用于设置组件宽度,只有部分模板才支持,如矩阵格子模板
  193. }
  194. })
  195. customAd.onError(err => console.log(err))
  196. customAd.show()
  197. .catch(err => console.log(err))
  198. .then(() => Global.CocosAnalysticCustomEvent('ShowNativeAd', true))
  199. },
  200. init_tt_ad(){
  201. var self = this;
  202. //banner
  203. const { windowWidth, windowHeight } = tt.getSystemInfoSync();
  204. const targetBannerAdWidth = 200;
  205. const BannerAd = tt.createBannerAd({
  206. adUnitId: 'bj8542ejfif02f8qnm',
  207. adIntervals: 30,
  208. style: {
  209. verticalAlign: "bottom",
  210. horizontalAlign: "center",
  211. width: windowWidth,
  212. top: windowHeight - 100, // 根据系统约定尺寸计算出广告高度
  213. },
  214. });
  215. Global.bannerAd = BannerAd;
  216. BannerAd.onResize(res => {
  217. BannerAd.style.top = windowHeight - res.height;
  218. BannerAd.style.left = (windowWidth - res.width) / 2; // 水平居中
  219. });
  220. BannerAd.onLoad(() => {
  221. console.log('banner加载成功');
  222. BannerAd.hide();
  223. // try {
  224. // BannerAd.show();
  225. // } catch (error) {
  226. // console.log(error);
  227. // };
  228. })
  229. //插页
  230. const InterstitialAd = tt.createInterstitialAd({
  231. adUnitId: '2mqt6ck3nl7jkd8kcg'
  232. });
  233. Global.interstitialAd = InterstitialAd;
  234. //激励视频
  235. const videoAd = tt.createRewardedVideoAd({
  236. adUnitId: "7mco5sm6co5ci28fj4",
  237. // multiton: true,
  238. // multitonRewardMsg: ['更多奖励1', '更多奖励2', '更多奖励3'],
  239. // multitonRewardTimes: 3,
  240. // progressTip: false,
  241. });
  242. Global.wechatvideoid = videoAd;
  243. videoAd.onClose(res => {
  244. // 用户点击了【关闭广告】按钮
  245. if (res.isEnded) {
  246. if (Global.outlinereward != -1) {
  247. let icon = Storage.Get_storage(Storage.GameMessageType.coin);
  248. Storage.Set_storage(Storage.GameMessageType.coin, Number(icon) + Global.outlinereward);
  249. Global.outlinereward = -1;
  250. self.node.getComponent('collect_coin_anim').onPlayCoinAni(self.node);
  251. } else if(Global.PK_Double == 1){
  252. cc.find('Canvas/BG/弹窗/BG/video').getComponent("pk_reword").getdouble(2);
  253. Global.PK_Double = 0;
  254. }else{
  255. // 正常播放结束,可以下发游戏奖励
  256. cc.find('Canvas/Main/role/Stop_cars/Add_Car').getComponent('CarAddPark').AddCarToPark();
  257. }
  258. }
  259. else {
  260. Global.toast('播放中途退出,未获得奖励!')
  261. // 播放中途退出,不下发游戏奖励
  262. }
  263. cc.find("Canvas/Main/Dialog").active = false;
  264. cc.find("outline/outlinereward").active = false;
  265. })
  266. videoAd.load()
  267. .then(
  268. console.log('TT Video广告加载成功')
  269. // videoAd.show()
  270. )
  271. .catch(
  272. err => console.log(err.errMsg)
  273. );
  274. }
  275. // update (dt) {},
  276. });