From 7d2f7c50a368c8f079f6b8dd498756b8026a0f1d Mon Sep 17 00:00:00 2001 From: fanxuehan <fanxuehan@qq.com> Date: Tue, 24 May 2022 16:55:52 +0800 Subject: [PATCH] feat: --- assets/NJ_game_select/scene/NJ_game_select.ts | 205 +++--------------- assets/NJ_game_select/script/defaultData.ts | 22 +- assets/NJ_game_select/script/util.ts | 100 ++++++++- 3 files changed, 143 insertions(+), 184 deletions(-) diff --git a/assets/NJ_game_select/scene/NJ_game_select.ts b/assets/NJ_game_select/scene/NJ_game_select.ts index 263ecff..34a171e 100644 --- a/assets/NJ_game_select/scene/NJ_game_select.ts +++ b/assets/NJ_game_select/scene/NJ_game_select.ts @@ -1,4 +1,4 @@ -import { asyncDelay, onHomeworkFinish } from "../script/util"; +import { asyncCallNetworkApiGet, asyncDelay, onHomeworkFinish } from "../script/util"; import { MyCocosSceneComponent } from "../script/MyCocosSceneComponent"; const { ccclass, property } = cc._decorator; @@ -6,190 +6,37 @@ const { ccclass, property } = cc._decorator; @ccclass export default class SceneComponent extends MyCocosSceneComponent { - addPreloadImage() { - // TODO æ ¹æ®è‡ªå·±çš„é…ç½®é¢„åŠ è½½å›¾ç‰‡èµ„æº - this._imageResList.push({ url: this.data.pic_url }); - this._imageResList.push({ url: this.data.pic_url_2 }); - } - - addPreloadAudio() { - // TODO æ ¹æ®è‡ªå·±çš„é…ç½®é¢„åŠ è½½éŸ³é¢‘èµ„æº - this._audioResList.push({ url: this.data.audio_url }); - } - - addPreloadAnima() { - - } - - onLoadEnd() { - // TODO åŠ è½½å®ŒæˆåŽçš„逻辑写在这里, 下é¢çš„代ç ä»…ä¾›å‚考 - this.initData(); - this.initView(); - this.initListener(); - } - - _cantouch = null; - initData() { - // 所有全局å˜é‡ 默认都是null - this._cantouch = true; - } - - initView() { - this.initBg(); - this.initPic(); - this.initBtn(); - this.initIcon(); - } - - initBg() { - const bgNode = cc.find('Canvas/bg'); - bgNode.scale = this._mapScaleMax; - } - - pic1 = null; - pic2 = null; - initPic() { - const canvas = cc.find('Canvas'); - const maxW = canvas.width * 0.7; - - this.getSprNodeByUrl(this.data.pic_url, (sprNode) => { - const picNode1 = sprNode; - picNode1.scale = maxW / picNode1.width; - picNode1.baseX = picNode1.x; - canvas.addChild(picNode1); - this.pic1 = picNode1; - - const labelNode = new cc.Node(); - labelNode.color = cc.Color.YELLOW; - const label = labelNode.addComponent(cc.Label); - label.string = this.data.text; - label.fontSize = 60; - label.lineHeight = 60; - label.font = cc.find('Canvas/res/font/BRLNSDB').getComponent('cc.Label').font; - picNode1.addChild(labelNode); - }); - - this.getSprNodeByUrl(this.data.pic_url_2, (sprNode) => { - const picNode2 = sprNode; - picNode2.scale = maxW / picNode2.width; - canvas.addChild(picNode2); - picNode2.x = canvas.width; - picNode2.baseX = picNode2.x; - this.pic2 = picNode2; - - const labelNode = new cc.Node(); - const label = labelNode.addComponent(cc.RichText); - const size = 60 - label.font = cc.find('Canvas/res/font/BRLNSDB').getComponent(cc.Label).font; - label.string = `<outline color=#751e00 width=4><size=${size}><color=#ffffff>${this.data.text}</color></size></outline>` - label.lineHeight = size; - picNode2.addChild(labelNode); - }); + addPreloadImage() { + // this._imageResList.push({ url: this.data.pic_url }); + } - } - - initIcon() { - const iconNode = this.getSprNode('icon'); - iconNode.zIndex = 5; - iconNode.anchorX = 1; - iconNode.anchorY = 1; - iconNode.parent = cc.find('Canvas'); - iconNode.x = iconNode.parent.width / 2 - 10; - iconNode.y = iconNode.parent.height / 2 - 10; + async onLoadEnd() { + await this.initData(); + this.initView(); + this.initListener(); + } - iconNode.on(cc.Node.EventType.TOUCH_START, () => { - this.playAudioByUrl(this.data.audio_url); - }) + async initData() { + const middleLayer = cc.find('middleLayer'); + if (!middleLayer) { + return; } + const middleLayerComponent = middleLayer.getComponent('middleLayer'); + const folderId = middleLayerComponent.getData(); + console.log('folderId = ' + folderId); - curPage = null; - initBtn() { - - this.curPage = 0; - const bottomPart = cc.find('Canvas/bottomPart'); - bottomPart.zIndex = 5; // æé«˜å±‚级 - - bottomPart.x = bottomPart.parent.width / 2; - bottomPart.y = -bottomPart.parent.height / 2; - - const leftBtnNode = bottomPart.getChildByName('btn_left'); - //èŠ‚ç‚¹ä¸æ·»åŠ äº†button组件 则å¯ä»¥æ·»åŠ clickäº‹ä»¶ç›‘å¬ - leftBtnNode.on('click', () => { - if (!this._cantouch) { - return; - } - if (this.curPage == 0) { - return; - } - this.curPage = 0 - this.leftMove(); + const resStr = await asyncCallNetworkApiGet('/api/syllabus/v1/list', { + pid: folderId + }); + console.log('resStr = ' + resStr); + const res = JSON.parse(resStr); + } - this.playLocalAudio('btn'); - }) + initView() { - const rightBtnNode = bottomPart.getChildByName('btn_right'); - //èŠ‚ç‚¹ä¸æ·»åŠ äº†button组件 则å¯ä»¥æ·»åŠ clickäº‹ä»¶ç›‘å¬ - rightBtnNode.on('click', () => { - if (!this._cantouch) { - return; - } - if (this.curPage == 1) { - return; - } + } - this.curPage = 1 - this.rightMove(); + initListener() { - // 游æˆç»“æŸæ—¶éœ€è¦è°ƒç”¨è¿™ä¸ªæ–¹æ³•é€šçŸ¥ç³»ç»Ÿä½œä¸šå®Œæˆ - onHomeworkFinish(); - - this.playLocalAudio('btn'); - }) - } - - leftMove() { - this._cantouch = false; - const len = this.pic1.parent.width; - cc.tween(this.pic1) - .to(1, { x: this.pic1.baseX }, { easing: 'cubicInOut' }) - .start(); - - cc.tween(this.pic2) - .to(1, { x: this.pic2.baseX }, { easing: 'cubicInOut' }) - .call(() => { - this._cantouch = true; - }) - .start(); - } - - rightMove() { - this._cantouch = false; - const len = this.pic1.parent.width; - cc.tween(this.pic1) - .to(1, { x: this.pic1.baseX - len }, { easing: 'cubicInOut' }) - .start(); - - cc.tween(this.pic2) - .to(1, { x: this.pic2.baseX - len }, { easing: 'cubicInOut' }) - .call(() => { - this._cantouch = true; - }) - .start(); - } - // update (dt) {}, - - - initListener() { - - } - - playLocalAudio(audioName) { - const audio = cc.find(`Canvas/res/audio/${audioName}`).getComponent(cc.AudioSource); - return new Promise((resolve, reject) => { - const id = cc.audioEngine.playEffect(audio.clip, false); - cc.audioEngine.setFinishCallback(id, () => { - resolve(id); - }); - }) - } + } } diff --git a/assets/NJ_game_select/script/defaultData.ts b/assets/NJ_game_select/script/defaultData.ts index e9e9f26..49404f5 100644 --- a/assets/NJ_game_select/script/defaultData.ts +++ b/assets/NJ_game_select/script/defaultData.ts @@ -1,6 +1,20 @@ export const defaultData = { - "pic_url": "http://staging-teach.cdn.ireadabc.com/ed94332a503c31e0908bd4c6923a2665.png", - "pic_url_2": "http://staging-teach.cdn.ireadabc.com/5fb60317ade0195d35ad8034d5370a7f.png", - "text": "This is a test label.", - "audio_url": "http://staging-teach.cdn.ireadabc.com/f47f1d7b5c160fe1c59500d180346240.mp3" + bookPages: [{ + pageIdx: 1, // ç¬¬å‡ é¡µ + startAudio: 'http://xxxx.mp3', // 页ç 引导音频 + startBg: 'http://xxxx.jpg', // 页ç 背景图片 + scanImg: 'http://xxxx.jpg', // é¡µç æ‰«æå›¾ç‰‡ + + bookDataInfo: { + bgItem: { + guidAudio: 'http://xxxx.mp3', // çƒåŒºå¼•导音频 + guidBg: 'http://xxxx.jpg', // çƒåŒºèƒŒæ™¯å›¾ç‰‡ + }, + hotZoneArr: [{ // æ•°ç»„é¡ºåº + rect: { x: 0, y: 0, width: 100, height: 100 }, + }, { // æ•°ç»„é¡ºåº + rect: { x: 0, y: 0, width: 100, height: 100 }, + }] + } + }] } \ No newline at end of file diff --git a/assets/NJ_game_select/script/util.ts b/assets/NJ_game_select/script/util.ts index 542abac..007e398 100644 --- a/assets/NJ_game_select/script/util.ts +++ b/assets/NJ_game_select/script/util.ts @@ -421,4 +421,102 @@ export function onHomeworkFinish() { } else { console.log('onHomeworkFinish'); } -} \ No newline at end of file +} + +export function asyncCallNetworkApiGet(apiName, data): Promise<any> { + return new Promise((resolve, reject) => { + callNetworkApiGet(apiName, data, (res => { + resolve(res); + })); + }); +} +export function asyncCallNetworkApiPost(uri, data): Promise<any> { + return new Promise((resolve, reject) => { + callNetworkApiPost(uri, data, (res) => { + resolve(res); + }); + }); +} + +export function callNetworkApiPost(uri, data, callBack) { + const middleLayer = cc.find('middleLayer')?.getComponent('middleLayer'); + if (middleLayer) { + middleLayer.callNetworkApiPost(uri, data, callBack); + return; + } + const baseUrl = 'http://staging-openapi.iteachabc.com'; + const xhr = new XMLHttpRequest(); + const url = `${baseUrl}${uri}`; + xhr.open("POST", url, true); + xhr.setRequestHeader('content-type', 'application/json'); + xhr.onreadystatechange = () => { + if (xhr.readyState == 4) { + callBack(JSON.parse(xhr.responseText)); + } + } + xhr.send(JSON.stringify(data)); +} + +export function callNetworkApiGet(uri, data, callBack) { + const middleLayer = cc.find('middleLayer')?.getComponent('middleLayer'); + if (middleLayer) { + middleLayer.callNetworkApiGet(uri, data, callBack); + return; + } + const baseUrl = 'http://staging-openapi.iteachabc.com'; + let queryStr = '?'; + const params = []; + for (const key in data) { + if (Object.hasOwnProperty.call(data, key)) { + params.push(`${key}=${data[key]}`); + } + } + queryStr += params.join("&"); + const xhr = new XMLHttpRequest(); + xhr.onreadystatechange = () => { + if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) { + callBack(xhr.responseText); + } + }; + const url = `${baseUrl}${uri}${queryStr}`; + console.log('url = ' + url); + xhr.open('GET', url, true); + xhr.send(); +} + +export function jumpToBundle(bundleName: string) { + const middleLayer = cc.find('middleLayer'); + if (middleLayer) { + const middleLayerComponent = middleLayer.getComponent('middleLayer'); + middleLayerComponent.loadOnlineBundle(bundleName); + } else { + console.log('jump to bundle: ' + bundleName); + } +} + +export function jumpToCourseWare(courseWareId: number) { + const middleLayer = cc.find('middleLayer'); + if (middleLayer) { + const middleLayerComponent = middleLayer.getComponent('middleLayer'); + middleLayerComponent.loadOnlineCourseWare(courseWareId); + } else { + console.log('jump to CourseWare: ' + courseWareId); + } +} + +export function buttonOnClick(button: cc.Node, callback: Function, scale = 1.1) { + button.on('click', () => { + if (button['cantClick']) { + return; + } + button['cantClick'] = true; + cc.tween(button) + .to(0.1, { scale: scale }) + .to(0.1, { scale: 1.0 }) + .call(() => { + button['cantClick'] = false; + callback && callback(); + }) + .start(); + }); +} -- 2.21.0