Commit 8cbd53f3 authored by Tt's avatar Tt

处理流程

parent daa178c4
class Single {
constructor() {
this.imageani = { ske: "", tex: "", png: "", }
this.wordani = { ske: "", tex: "", png: "", }
this.wordaudio = "";
this.backgroundImage = "";
}
}
//底部items
class Card {
constructor(picItem, cardId) {
this.cardId = cardId;
this.txt = picItem.title;
this.img = picItem.pic_url;
this.audio = picItem.audio_url;
}
}
class defClass {
constructor(id, title, audio_url, type) {
this.id = id;
this.audio_url = audio_url;
this.type = type;
this.title = title;
this.child = [];
this.success = [];
}
addChild(child) {
this.child.push(child);
}
isChild(childId) {
return this.child.some(ch => ch.id == childId);
}
}
// class MainClass extends defaultClass {
// constructor(id, name) {
// this.id = id;
// this.name = name;
// }
// parseData() {
// }
// }
class GameManager {
static TYPE_NULL = 0;
static TYPE_TXT = 1;
......@@ -51,92 +8,43 @@ class GameManager {
static getIns() {
if (!GameManager.instance) GameManager.instance = new GameManager();
return GameManager.instance;
}
}//允许调用
constructor() {
//主类 1
this._title = {};
this._allClass = [];
this._sonArray = [];//卡片数据解析
this._cardArray = [];//卡片数据解析
this._list = [];
this._stage = 0;//关卡
this._state = 0;//状态
}
init() {
console.log(`init`);
this.parseData();
}
parseData(data) {
this._title = {};
this._allClass = [];
this._sonArray = [];
this._cardArray = [];
let obj = data.contentObj.picArr;
let fenId = 1;
let sonId = 100;
let cardId = 1000;
this._title = obj[0];
for (let i = 0; i < obj[0].child.length; i++) {
let zhulei = obj[0].child[i];
let zhuleiClass = new defClass(zhulei.id, zhulei.title, zhulei.audio_url, 0);
for (let a = 0; a < zhulei.child.length; a++) {
let fenlei = zhulei.child[a];
let fenleiClass = new defClass(fenId, fenlei.title, fenlei.audio_url, 0);
fenId++;//只有1和2
for (let b = 0; b < fenlei.child.length; b++) {
sonId++;
let sonlei = fenlei.child[b];
let sonleiClass = new defClass(sonId, sonlei.title, sonlei.audio_url, a);
for (let c = 0; c < sonlei.child.length; c++) {
let card = sonlei.child[c];
cardId++;
let cardClass = new Card(card, cardId);
sonleiClass.addChild(cardClass);
this._cardArray.push(cardClass);
}
fenleiClass.addChild(sonleiClass);
}
zhuleiClass.addChild(fenleiClass);
}
this._allClass.push(zhuleiClass);
}
console.log(this._allClass);
}
getTitle() {
return this._title.title;
}
getZhuClass() {
return this._allClass[0];
}
getFenClass(id) {
return this._allClass[0].child.filter(fen => fen.id == id)[0];
console.log(data);
let arr = data.contentObj.picArr;
for (let i = 0; i < arr.length; i++) {
let ar = arr[i];
let obj = {};
obj.word = ar.title;
obj.sound = ar.wordAudio;
obj.img = ar.bgImg;
obj.cartoonSke = ar.imgAni.ske.url;
obj.cartoonTex = ar.imgAni.ske.url;
obj.cartoonPng = ar.imgAni.ske.url;
this._list.push(obj);
}
getSonClass(id) {
return this._sonArray.filter(son => son.id == id)[0];
console.log(this._list);//原始数据转为数组
}
getCards() {
//基础卡片列表
return this._cardArray.concat();
setState(num) {
this._state = num;
}
compareCard(cardId, sonId) {
let sonClass = this.getSonClass(sonId);
return sonClass.isChild(cardId);
getState() {
return this._state;
}
randomPageCards() {
//页面内部数字要打乱 0 1 2 3 4 5 6 7 8 每次动态取出一个值 然后动态处理
let arr = [];
while (this._cardArray.length > 0) {
let rand = Math.floor(Math.random() * this._cardArray.length);
arr.push(this._cardArray[rand]);
this._cardArray.splice(rand, 1);
getStageData() {
return this._list[this._stage];
}
this._cardArray = arr;
addStage() {
this._stage++;
}
}
// []zhuclass
// [] []fenclass
//[] [] [] [] [] []sonclass
//[] [] [] [] [] []sonclass
//() () () () () () () ()card
//() () () () () () () ()
//() () () () () () () ()
export default GameManager;
\ No newline at end of file
......@@ -252,21 +252,6 @@ pg.view = {
//加载 未封装bundle
pg.load = {
loadRes: function (res, type, bundleName) {
// cc.assetManager.loadBundle('hall', (err, bundle) => {
// if (err) return cc.error(err);
// cc.director.loadScene("hall", () => { });
// });
// cc.assetManager.loadBundle('chess', (err, bundle) => {
// if (err) return cc.error(err);
// cc.director.loadScene("chess", () => {
// // //清理hall的资源
// // let hallBundle = cc.assetManager.getBundle(`hall`);
// // hallBundle.releaseAll();
// // cc.assetManager.removeBundle(hallBundle);
// });
// });
//此处需要二次封装,新的存在assetbundle
return new Promise((resolve, reject) => {
cc.loader.loadRes(res, type, (err, data) => {
......@@ -294,7 +279,7 @@ pg.load = {
},
loadNetImg: function (url) {
return new Promise((resolve, reject) => {
cc.loader.load({ url }, (err, texture) => {
cc.assetManager.loadRemote(url, (err, texture) => {
if (err && !data) return resolve(pg.logger.w('loading loadRes warn-> ', res));
resolve(texture);
});
......
This diff is collapsed.
......@@ -157,32 +157,134 @@ cc.Class({
_cardTouchItems: null,
_successItems: null,
initSingleData() {
this._title = GameManager.getIns().getTitle();
this._zhuClass = GameManager.getIns().getZhuClass();
// 所有全局变量 默认都是null
this._cantouch = 0;
//界面用数据
this._cardTouchItems = [];
this._successItems = [];
this._stageData = GameManager.getIns().getStageData();
GameManager.getIns().setState(0);//调用数组中的数据,同时设置关卡状态为0
// console.log("1")
// this._title = GameManager.getIns().getTitle();
// this._zhuClass = GameManager.getIns().getZhuClass();
// // 所有全局变量 默认都是null
// this._cantouch = 0;
// //界面用数据
// this._cardTouchItems = [];
// this._successItems = [];
// this._cardPage = CardManager.getIns().getPage();
// cc.log(this._cardPage);
},
initAudio() {
},
initView() {
this.btn_replay = pg.view.find(this, "btn_replay");
// pg.view.visible(this.btn_replay, false);
pg.view.touchOn(this.btn_replay, this.onTouchReplay, this);
this.initLayout();
this.initEvent();
this.initStep1();
},
initEvent() {
let btn_record = pg.view.find(this, "btn_record")//按钮监听
pg.view.touchOn(btn_record, this.onTouchIconRecord, this);
initLayout() {
let btn_replay = pg.view.find(this, "btn_replay")
let btn_recording = pg.view.find(this, "btn_recording")
let btn_record = pg.view.find(this, "btn_record")
let progress = pg.view.find(this, "progress")
let end = pg.view.find(this, "end");
let end_success = pg.view.find(end, "bg_success")
let bg_book = pg.view.find(this, "bg_book");
let icon_ex = pg.view.find(this, "icon_ex");
let btn_next = pg.view.find(this, "btn_next");
let btn_return = pg.view.find(this, "btn_return");
let icon_ex_txt = pg.view.find(icon_ex, "txt");
if (GameManager.getIns().getState() == 0) {
pg.view.visible(end, false);//不显示的内容用false
pg.view.visible(end_success, false);
pg.view.visible(icon_ex, false);
//更换书的样子
pg.view.visible(btn_next, true);//显示的内容用true
pg.view.visible(btn_return, true);
let bg_book_img = this._stageData.img;//从数组中调取img数据
pg.view.setNetImg(bg_book, bg_book_img);//与界面的节点绑定
//创建一个动画 ---
//playAni().then(()=> { GameManager.getIns().setState(1); this.initLayout() } )
GameManager.getIns().setState(1);
this.initLayout()//完成后直接进入下一步
} else if (GameManager.getIns().getState() == 1) {
setTimeout(() => {
pg.view.visible(icon_ex, true);
let icon_ex_word = this._stageData.word;
pg.view.setString(icon_ex_txt, icon_ex_word);
}, 1000 * 2);
setTimeout(() => {
pg.view.visible(btn_record, true);
pg.view.visible(btn_replay, true);
pg.view.touchOn(btn_record, this.onTouchRecord, this);//注册按钮监听,从按钮里进入的下一步
}, 1000 * 4);
//显示文字动画
//播放文字的声音
//setTimeout(() => {
// GameManager.getIns().setState(2);
// this.initLayout()
//}, 1000 * 5);
//playAni().then(()=> { GameManager.getIns().setState(2); this.initLayout } )
} else if (GameManager.getIns().getState() == 2) {
pg.view.visible(btn_record, false);
pg.view.visible(btn_replay, false);
pg.view.visible(btn_recording, true);
pg.view.visible(progress, true);
setTimeout(() => {
GameManager.getIns().setState(3);
this.initLayout()
}, 1000 * 4);//4秒钟之后进入下一步
} else if (GameManager.getIns().getState() == 3) {
pg.view.visible(btn_record, true);
pg.view.visible(btn_recording, false);
pg.view.visible(progress, false);
setTimeout(() => {
pg.view.visible(end, true);
pg.view.visible(end_success, true);
}, 1000 * 4);//4秒钟之后出现goodjob提示
setTimeout(() => {
this.nextStage();
}, 1000 * 6);//6秒钟之后进入下一关卡
} else if (GameManager.getIns().getState() == 4) {
} else if (GameManager.getIns().getState() == 5) {
} else if (GameManager.getIns().getState() == 6) {
}
// //根据当前显示用数据来执行对应的效果
// pg.view.setString(pg.view.find(this, "title/txt"), this._title);
// //刷新主类
// pg.view.setString(pg.view.find(this, "main/main/txt"), this._zhuClass.title);
// pg.view.touchOn(pg.view.find(this, "main/main"), this.onTouchVoice, this);
// pg.view.find(this, "main/main").data = this._zhuClass;
// //刷新分类
// pg.view.setString(pg.view.find(this, "main/sub_0/txt"), this._zhuClass.child[0].title);
// pg.view.setString(pg.view.find(this, "main/sub_1/txt"), this._zhuClass.child[1].title);
// pg.view.find(this, "main/sub_0").data = this._zhuClass.child[0];
// pg.view.find(this, "main/sub_1").data = this._zhuClass.child[1];
// pg.view.touchOn(pg.view.find(this, "main/sub_0"), this.onTouchVoice, this);
// pg.view.touchOn(pg.view.find(this, "main/sub_1"), this.onTouchVoice, this);
},
onTouchRecord() {
GameManager.getIns().setState(2);
this.initLayout()
},
nextStage() {
GameManager.getIns().addStage();//关卡标记+1
this.initSingleData();//刷新当前关卡所使用的的数据
this.initLayout();//刷新界面显示内容
},
onTouchIconRecord() {
let btn_replay = pg.view.find(this, "btn_replay")
let btn_record = pg.view.find(this, "btn_record")
......@@ -226,21 +328,18 @@ cc.Class({
},
initLayout() {
// //根据当前显示用数据来执行对应的效果
// pg.view.setString(pg.view.find(this, "title/txt"), this._title);
// //刷新主类
// pg.view.setString(pg.view.find(this, "main/main/txt"), this._zhuClass.title);
// pg.view.touchOn(pg.view.find(this, "main/main"), this.onTouchVoice, this);
// pg.view.find(this, "main/main").data = this._zhuClass;
// //刷新分类
// pg.view.setString(pg.view.find(this, "main/sub_0/txt"), this._zhuClass.child[0].title);
// pg.view.setString(pg.view.find(this, "main/sub_1/txt"), this._zhuClass.child[1].title);
// pg.view.find(this, "main/sub_0").data = this._zhuClass.child[0];
// pg.view.find(this, "main/sub_1").data = this._zhuClass.child[1];
// pg.view.touchOn(pg.view.find(this, "main/sub_0"), this.onTouchVoice, this);
// pg.view.touchOn(pg.view.find(this, "main/sub_1"), this.onTouchVoice, this);
createAni() {
// cc.assetManager.loadRemote('http://www.cloud.com/test1.jpg', (err, texture) => console.log(err));
},
//
onTouchVoice(touch) {
let item = touch.target;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment