// app.js - 微信小程序全局逻辑 App({ onLaunch() { // 初始化全局数据 this.globalData = { userInfo: null, gameData: { currentLevel: 1, totalScore: 0, maxCombo: 0, unlockedFruits: [1], // 已解锁的水果等级 items: { bomb: 3, // 炸弹道具数量 freeze: 2, // 冰冻道具数量 hint: 5 // 提示道具数量 } }, audioEnabled: true, adLoaded: false }; // 加载存档 this.loadGameData(); // 预加载广告 this.preloadAds(); }, /** * 加载游戏存档 */ loadGameData() { try { const saved = wx.getStorageSync('gameData'); if (saved) { this.globalData.gameData = { ...this.globalData.gameData, ...saved }; console.log('[App] 加载存档成功', this.globalData.gameData); } } catch (err) { console.error('[App] 加载存档失败', err); } }, /** * 保存游戏存档 */ saveGameData() { try { wx.setStorageSync('gameData', this.globalData.gameData); console.log('[App] 保存存档成功'); } catch (err) { console.error('[App] 保存存档失败', err); } }, /** * 预加载广告 */ preloadAds() { // 激励视频广告 if (wx.createRewardedVideoAd) { this.globalData.rewardedVideoAd = wx.createRewardedVideoAd({ adUnitId: 'adunit-xxxxxxxxxxxxxxxx' // TODO: 替换为真实广告位ID }); this.globalData.rewardedVideoAd.onLoad(() => { this.globalData.adLoaded = true; console.log('[App] 激励视频广告加载成功'); }); this.globalData.rewardedVideoAd.onError((err) => { console.error('[App] 激励视频广告加载失败', err); this.globalData.adLoaded = false; }); } // 插屏广告 if (wx.createInterstitialAd) { this.globalData.interstitialAd = wx.createInterstitialAd({ adUnitId: 'adunit-yyyyyyyyyyyyyyyy' // TODO: 替换为真实广告位ID }); this.globalData.interstitialAd.onLoad(() => { console.log('[App] 插屏广告加载成功'); }); this.globalData.interstitialAd.onError((err) => { console.error('[App] 插屏广告加载失败', err); }); } }, /** * 显示激励视频广告 */ showRewardedAd(onReward, onClose) { if (!this.globalData.rewardedVideoAd || !this.globalData.adLoaded) { console.warn('[App] 广告未加载,直接发放奖励'); onReward && onReward(); return; } this.globalData.rewardedVideoAd.show() .then(() => { console.log('[App] 激励视频广告开始播放'); this.globalData.rewardedVideoAd.onClose((res) => { if (res && res.isEnded) { console.log('[App] 用户看完广告,发放奖励'); onReward && onReward(); } else { console.log('[App] 用户中途关闭广告'); onClose && onClose(false); } }); }) .catch(err => { console.error('[App] 广告展示失败', err); // 广告失败也发放奖励(用户体验优先) onReward && onReward(); }); }, /** * 显示插屏广告 */ showInterstitialAd(onClose) { if (!this.globalData.interstitialAd) { onClose && onClose(); return; } this.globalData.interstitialAd.show() .then(() => { console.log('[App] 插屏广告展示成功'); }) .catch(err => { console.error('[App] 插屏广告展示失败', err); }) .finally(() => { onClose && onClose(); }); }, globalData: {} });