
// import { asyncDelay, exchangeNodePos, getSprNode, onHomeworkFinish, playAudio } from "../script/util_sn17_danci";
// import { MyCocosSceneComponent } from "../script/MyCocosSceneComponent_sn17_danci";
// import Game, { Item } from "./Game_sn17_danci";
// import pg from "./pg_sn17_danci";

// enum ItemType {
//     PIC = "img",
//     RIGHT_TXT = "right_txt",
//     LOWER_TXT = "lower_txt"
// }
// 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 });
//         this._imageResList.push(...this.data.questions.map(question => {
//             return { url: question.image };
//         }));
//     }

//     addPreloadAudio() {
//         // TODO 根据自己的配置预加载音频资源
//         // this._audioResList.push({ url: this.data.audio_url });
//         this._audioResList.push(...this.data.questions.map(question => {
//             return { url: question.audio };
//         }));
//     }

//     addPreloadAnima() {

//     }
//     protected onDestroy(): void {
//         clearTimeout(this.timeOut);
//     }
//     onLoadEnd() {
//         // TODO 加载完成后的逻辑写在这里, 下面的代码仅供参考
//         this.initData();
//         this.initView();
//         this.initEvent();
//         this.loadingAction();
//     }
//     protected onDisable(): void {
//         cc.Tween.stopAll();
//     }
//     @property(cc.Node)
//     page_view: cc.Node = null;

//     @property(cc.Node)
//     layout_pic: cc.Node = null;

//     @property(cc.Node)
//     layout_right_text: cc.Node = null;

//     @property(cc.Node)
//     layout_lower_text: cc.Node = null;

//     @property(cc.Node)
//     recordEndView: cc.Node = null;

//     @property(cc.Node)
//     btn_noplay: cc.Node = null;

//     @property(cc.Node)
//     btn_play: cc.Node = null;

//     @property(cc.Node)
//     btn_stop: cc.Node = null;

//     @property(cc.Node)
//     btn_back: cc.Node = null;

//     @property(cc.Node)
//     round: cc.Node = null;

//     @property(cc.Node)
//     btn_record: cc.Node = null;

//     @property(cc.Node)
//     btn_laba: cc.Node = null;

//     @property(cc.Node)
//     btn_off: cc.Node = null;

//     @property(cc.Node)
//     btn_on: cc.Node = null;

//     @property(cc.Node)
//     record_text: cc.Node = null;

//     @property(cc.Node)
//     tip: cc.Node = null;

//     @property(cc.Node)
//     btn_left: cc.Node = null;

//     @property(cc.Node)
//     btn_right: cc.Node = null;

//     @property(cc.Node)
//     layout_loading: cc.Node = null;

//     private page: number;
//     initData() {
//         this.autoPlay = 1;
//         this.page = 0;
//         Game.getIns().init(this.data);
//         Game.getIns().reset();
//     }
//     initView() {
//         if (this.data.returnType == '1') {
//             this.btn_back.active = true;
//         }
//         this.nextPage();
//     }
//     initEvent() {
//         this.btn_laba.on(cc.Node.EventType.TOUCH_END, this.onLaba, this);
//         this.btn_record.on(cc.Node.EventType.TOUCH_END, this.onRecord, this);
//         this.btn_play.on(cc.Node.EventType.TOUCH_END, this.onPlayRecord, this);
//         this.btn_stop.on(cc.Node.EventType.TOUCH_END, this.onStopRecord, this);
//         this.btn_off.on(cc.Node.EventType.TOUCH_END, this.onReadOff, this);
//         this.btn_on.on(cc.Node.EventType.TOUCH_END, this.onReadOpen, this);
//         this.btn_back.on(cc.Node.EventType.TOUCH_END, this.onBack, this);
//         this.btn_left.on(cc.Node.EventType.TOUCH_END, this.onLeft, this);
//         this.btn_right.on(cc.Node.EventType.TOUCH_END, this.onRight, this);
//         cc.find("btn_mask", this.recordEndView).on(cc.Node.EventType.TOUCH_END, this.onHideEnd, this);
//         this.page_view.on("scroll-ended", this.scrollEnd, this);
//     }
//     private loadingAction() {
//         let icon_review = cc.find("icon_review", this.layout_loading);
//         cc.tween(icon_review).repeatForever(cc.tween().by(0.5, { angle: -360 })).start();
//     }
//     private onLeft() {
//         if (this.page <= 0) return;
//         this.page_view.getComponent(cc.PageView).scrollToPage(this.page - 1, 0.1);
//     }
//     private onRight() {
//         let index = this.page_view.getComponent(cc.PageView).getCurrentPageIndex();
//         if (index + 1 >= Game.getIns().len) return;
//         this.page_view.getComponent(cc.PageView).scrollToPage(this.page + 1, 0.1);
//     }
//     private scrollEnd() {
//         clearTimeout(this.timeOut);
//         let index = this.page_view.getComponent(cc.PageView).getCurrentPageIndex();
//         if (this.page == index) {
//             if (index + 1 == Game.getIns().len) {
//                 this.showTip("已经是最后一页了")
//             }
//             return;
//         }
//         this.resetAudio();
//         this.page = index;
//         this.updateTop();
//         this.playLocalAudio("fanye").then(() => {
//             this.playQuestionAudio();
//         });
//         console.log("idx:" + index);
//     }
//     private resetAudio() {
//         this.cleanRecord();
//         cc.audioEngine.stopAll();
//         this.stop = true;
//         let data: Item = Game.getIns().getDataByPage(this.page);
//         let isRead = Game.getIns().isRead;

//         this.btn_play.active = data.recordAudio && !isRead;
//         this.btn_stop.active = false;

//     }
//     private intervalId;
//     private stop;
//     private onLaba() {
//         this.playTitleAudio(Game.getIns().lists[this.page].audio);
//     }
//     private playTitleAudio(audio, cb = null) {
//         this.resetAudio();
//         let btn_laba1 = this.btn_laba.getChildByName("btn_laba1");
//         let btn_laba2 = this.btn_laba.getChildByName("btn_laba2");
//         btn_laba1.active = true;
//         btn_laba2.active = true;
//         let count = 0;
//         if (this.intervalId) clearInterval(this.intervalId);
//         this.stop = false;
//         this.intervalId = setInterval(() => {
//             count++;
//             // btn_laba1.active = count % 2 == 0;
//             btn_laba2.active = count % 2 == 1;
//             if (this.stop) {
//                 btn_laba1.active = true;
//                 btn_laba2.active = true;
//                 clearInterval(this.intervalId);
//             }
//         }, 150)
//         pg.audio.playAudioByUrl(audio).then((audioId) => {
//             this.stop = true;
//             btn_laba1.active = true;
//             btn_laba2.active = true;
//             cb && cb(audioId);
//         });
//     }
//     private onRecord() {
//         cc.audioEngine.stopAll();
//         let recording_count = cc.find("Background/recording_count", this.btn_record).getComponent(cc.Sprite);
//         let btn_recording = cc.find("btn_recording", this.btn_record);
//         if (recording_count.fillRange != 0) {
//             cc.Tween.stopAllByTarget(recording_count);
//             recording_count.fillRange = 0;
//             btn_recording.active = false;
//             this.recordStop();
//         } else {
//             btn_recording.active = true;
//             recording_count.fillRange = 0;
//             cc.tween(recording_count).to(120, { fillRange: -1 }).call(() => { recording_count.fillRange = 0; this.recordStop(); }).start();

//             let text = Game.getIns().lists[this.page].text || "";
//             this.log("text: " + text);
//             if (window['courseware']) {
//                 window['courseware'].startTest(text);
//             }
//         }
//     }
//     private cleanRecord() {
//         let recording_count = cc.find("Background/recording_count", this.btn_record).getComponent(cc.Sprite);
//         let btn_recording = cc.find("btn_recording", this.btn_record);
//         cc.Tween.stopAllByTarget(recording_count);
//         recording_count.fillRange = 0;
//         btn_recording.active = false;
//     }
//     private recordAudioId;
//     private onPlayRecord() {
//         this.resetAudio();
//         this.btn_stop.active = true;
//         this.btn_play.active = false;
//         pg.audio.playAudioByUrl(Game.getIns().lists[this.page].recordAudio, (audioId) => {
//             this.recordAudioId = audioId;
//         }).then(() => {
//             this.btn_stop.active = false;
//             this.btn_play.active = true;
//         });

//     }
//     private onStopRecord() {
//         if (this.recordAudioId) {
//             cc.audioEngine.stopEffect(this.recordAudioId)
//         }
//         this.btn_stop.active = false;
//         this.btn_play.active = true;
//     }
//     private onBack() {
//         if (this.data.returnType == '1') {
//             const middleLayer = cc.find('middleLayer')?.getComponent('middleLayer');
//             if (middleLayer) {
//                 // 有些模板需要在返回时上报数据，直接把数据作为参数传入就可以了
//                 middleLayer.exitGame({});
//             } else {
//                 console.log("==触发返回事件==");
//             }
//         } else {
//             let index = this.page_view.getComponent(cc.PageView).getCurrentPageIndex();
//             this.page_view.getComponent(cc.PageView).scrollToPage(index - 1, 0.1);
//         }
//     }
//     private onHideEnd() {
//         this.recordEndView.active = false;
//     }
//     private onReadOff() {
//         this.btn_off.active = false;
//         this.btn_on.active = true;
//         this.autoPlay = 1;
//         console.log("open");
//         this.showTip("已开启自动阅读");
//     }
//     private onReadOpen() {
//         this.btn_on.active = false;
//         this.btn_off.active = true;
//         this.autoPlay = 0;
//         console.log("off");
//         this.showTip("已关闭自动阅读");
//     }
//     private timeOut;
//     private playQuestionAudio() {
//         if (!Game.getIns().isRead) return;
//         this.playTitleAudio(Game.getIns().lists[this.page].audio, (audioId) => {
//             if (this.autoPlay == 0 || !Game.getIns().isRead) return;
//             let time = audioId ? 1000 : 3000;
//             this.timeOut = setTimeout(() => {
//                 let index = this.page_view.getComponent(cc.PageView).getCurrentPageIndex();
//                 this.page_view.getComponent(cc.PageView).scrollToPage(index + 1, 0.1);
//             }, time);
//         })
//     }
//     private nextPage() {

//         this.createCrads();
//         this.updateTop();
//         this.playQuestionAudio();
//     }

//     private async createCrads() {
//         let list = Game.getIns().lists;
//         // this.layout_pic.active = data.type == ItemType.PIC;
//         // this.layout_lower_text.active = data.type == ItemType.LOWER_TXT;
//         // this.layout_right_text.active = data.type == ItemType.RIGHT_TXT;
//         for (let index = 0; index < list.length; index++) {
//             let question = list[index]
//             let group;
//             if (question.type == ItemType.PIC) {
//                 group = cc.instantiate(this.layout_pic);
//                 let pic = cc.find("pic", group);
//                 let shadow = cc.find("shadow", group);
//                 await pg.view.setNetImg(pic, question.image, { w: 2050, h: 1180 }, true)
//                 // 等首图加载完成后 隐藏加载进度条
//                 if (index == 0) {
//                     this.hideMiddleLayerLoading();
//                 }
//                 shadow.width = pic.width;
//                 shadow.height = pic.height;
//                 shadow.active = true;
//             } else if (question.type == ItemType.LOWER_TXT) {
//                 group = cc.instantiate(this.layout_lower_text);
//                 await this.initLowerLayout(group, question);
//                 // 等首图加载完成后 隐藏加载进度条
//                 if (index == 0) {
//                     this.hideMiddleLayerLoading();
//                 }
//             } else if (question.type == ItemType.RIGHT_TXT) {
//                 group = cc.instantiate(this.layout_right_text);
//                 let desc = cc.find("ScrollView/view/content/desc", group);
//                 let shadow = cc.find("shadow", group);
//                 let pic = cc.find("pic", group);
//                 if (desc) {
//                     desc.getComponent(cc.Label).string = question.text;
//                 }
//                 await pg.view.setNetImg(pic, question.image, { w: 860, h: 1170 })
//                 // 等首图加载完成后 隐藏加载进度条
//                 if (index == 0) {
//                     this.hideMiddleLayerLoading();
//                 }
//                 shadow.width = pic.width;
//                 shadow.height = pic.height;
//                 shadow.active = true;
//             }
//             group.active = true;
//             this.page_view.getComponent(cc.PageView).addPage(group);
//         }

//     }
//     private hideMiddleLayerLoading() {
//         // 图片资源加载完成后隐藏加载条
//         if (window && window["air"]) {
//             window["air"].hideAirClassLoading();
//         }
//     }

//     private async initLowerLayout(group, question) {
//         return new Promise(async (resovle, reject) => {
//             let desc_test = cc.find("desc_test", this.node);
//             desc_test.getComponent(cc.Label).string = question.text;
//             // desc_test.getComponent(cc.Label)._forceUpdateRenderData(true);
//             // let ling = Math.floor((Math.ceil(desc_test.height) - 26) / 100);
//             // if (ling >= 3) {
//             let desc = cc.find("ScrollView/view/content/desc", group);
//             desc.getComponent(cc.Label).string = question.text;
//             let pic = cc.find("pic", group);
//             let shadow = cc.find("shadow0", group);
//             desc.active = true;
//             await pg.view.setNetImg(pic, question.image, { w: 1511, h: 850 })
//             shadow.active = true;
//             resovle(true)
//             // } else if (ling == 2) {
//             //     let desc = cc.find("desc1", group);
//             //     desc.getComponent(cc.Label).string = question.text;
//             //     let pic = cc.find("pic1", group);
//             //     let shadow = cc.find("shadow1", group);
//             //     desc.active = true;
//             //     await pg.view.setNetImg(pic, question.image, { w: 1653, h: 930 })
//             //     shadow.active = true;
//             //     resovle(true)
//             // } else if (ling == 1) {
//             //     let desc = cc.find("desc2", group);
//             //     desc.getComponent(cc.Label).string = question.text;
//             //     let pic = cc.find("pic2", group);
//             //     let shadow = cc.find("shadow2", group);
//             //     desc.active = true;
//             //     pg.view.setNetImg(pic, question.image, { w: 1777, h: 1000 })
//             //     shadow.active = true;
//             //     resovle(true)
//             // }
//         })

//     }
//     private autoPlay;
//     private updateTop() {
//         let data: Item = Game.getIns().getDataByPage(this.page);
//         this.round.getComponent(cc.Label).string = `${data.page + 1}/${Game.getIns().len}`
//         cc.find("hand_ske", this.node).active = data.page == 0;
//         let bg_excellent = cc.find("top/bg_excellent-small", this.node);
//         let bg_tryagain = cc.find("top/bg_tryagain-small", this.node);
//         let bg_good = cc.find("top/bg_good-small", this.node);
//         let isRead = Game.getIns().isRead;


//         bg_excellent.active = data.recordScore > 80 && !isRead;
//         bg_good.active = data.recordScore >= 50 && data.recordScore <= 80 && !isRead;
//         bg_tryagain.active = data.recordScore >= 0 && data.recordScore < 50 && !isRead;
//         this.btn_off.active = this.autoPlay == 0 && isRead;
//         this.btn_on.active = this.autoPlay == 1 && isRead;
//         this.btn_record.active = !isRead && data.text != "";;
//         this.btn_noplay.active = !data.recordAudio && !isRead && data.text != "";
//         this.btn_play.active = data.recordAudio && !isRead;
//         this.btn_left.active = !isRead && this.page > 0;
//         this.btn_right.active = !isRead && (this.page >= 0 && this.page < Game.getIns().len - 1);
//     }

//     private showRecordEnd(res) {
//         this.layout_loading.active = false;
//         this.recordEndView.active = true;
//         let overall = res.result.overall;
//         Game.getIns().getDataByPage(this.page).recordScore = overall;
//         let bg_excellent = cc.find("bg_excellent", this.recordEndView);
//         let bg_good = cc.find("bg_good", this.recordEndView);
//         let bg_tryagain = cc.find("bg_tryagain", this.recordEndView);
//         bg_excellent.active = overall > 80;
//         bg_good.active = overall >= 50 && overall <= 80;
//         bg_tryagain.active = overall < 50;
//         this.updateTop();
//     }
//     private recordStop() {
//         this.layout_loading.active = true;

//         if (window['courseware']) {
//             window['courseware'].stopTest((res) => {
//                 this.log('--------录音返回结果 stopTest ------------');
//                 this.log('res' + res);
//                 res = JSON.parse(res);
//                 this.log('json res.result' + JSON.stringify(res.result));
//                 this.log('json res.result.sentences' + JSON.stringify(res.result.sentences));

//                 let list = Game.getIns().lists
//                 if (res && res.audioUrl) {
//                     list[this.page].recordAudio = res.audioUrl;
//                     list[this.page].recordScore = res.overall;
//                     // this.resetRecord();
//                 }
//                 this.recordEnd(res);
//                 this.showRecordEnd(res);
//                 for (let i = 0; i < list.length; i++) {
//                     if (!list[i].recordAudio || list[i].recordAudio == "") return;
//                 }

//                 let send: any = {};
//                 send.stone = 10;
//                 send.details = list;
//                 onHomeworkFinish(send);
//             });
//         } else {

//             let res = { "audioUrl": "https://staging-teach.cdn.ireadabc.com/bea0ba87bcf8bc09815f34b4790ffac9.mp3", "eof": 1, "file": "/storage/emulated/0/Android/data/com.example.oxford/cache/shengtong/gradeVoice.mp3", "result": { "duration": "2.670", "fluency": 86, "integrity": 50, "kernel_version": "3.7.1", "overall": 28, "pronunciation": 28, "resource_version": "2.3.11", "rhythm": 28, "sentences": [{ "beginIndex": 0, "details": [{ "charType": 0, "end": 0, "overall": 56, "prominence": 0, "start": 0, "word": "Good" }, { "charType": 0, "end": 0, "overall": 0, "prominence": 0, "start": 0, "word": "morning" }], "end": 0, "endIndex": 0, "overall": 28, "sentence": "Good morning", "start": 0 }], "speed": 28 }, "tokenId": "62d7a2343327934258000009" }

//             let list = Game.getIns().lists
//             // 模拟测试
//             list[this.page].recordAudio = 'http://staging-teach.cdn.ireadabc.com/92ddbc65e9af775f7a8450a5bef1a732.mp3';
//             this.recordEnd(res);
//             this.showRecordEnd(res);
//         }
//     }
//     private recordEnd(res) {
//         this.record_text.getComponent(cc.RichText).string = "";
//         let arr = [];
//         for (let index = 0; index < res.result.sentences.length; index++) {
//             let e = res.result.sentences[index];
//             arr = arr.concat(e.details);
//         }
//         let str = "";
//         let arrOne = [];
//         for (let index = 0; index < arr.length; index++) {
//             let e = arr[index];

//             arrOne.push({ key: e.word, value: 1 });

//             let result = {};
//             arrOne.forEach((item) => {
//                 if (result[item.key]) {
//                     result[item.key] += item.value;
//                 } else {
//                     result[item.key] = item.value;
//                 }
//             });

//             for (let k in result) {
//                 if (k === e.word) {
//                     let w = index == 0 ? e.word : " " + e.word;
//                     if (e.overall < 40) {
//                         str += `<color=#fc3e39>` + w + `</color>`;
//                     } else {
//                         str += `<color=#000000>` + w + `</color>`;
//                     }
//                 }
//             }
//         }
//         this.record_text.getComponent(cc.RichText).string = str;
//     }

//     private showTip(str) {
//         let tip = cc.instantiate(this.tip);
//         let desc = cc.find("tip_label", tip);
//         desc.getComponent(cc.Label).string = str;
//         this.node.addChild(tip);
//         tip.active = true;
//         cc.tween(tip).delay(0.5).to(1.5, { y: 150, opacity: 50 }).call(() => {
//             tip.parent = null; tip.destroy();
//         }).start();
//     }
//     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);
//             });
//         })
//     }
// }

