Commit 0184c1c6 authored by Tt's avatar Tt

bug修改完成

parent abe78598
...@@ -24,7 +24,9 @@ export default class NewClass extends cc.Component { ...@@ -24,7 +24,9 @@ export default class NewClass extends cc.Component {
// LIFE-CYCLE CALLBACKS: // LIFE-CYCLE CALLBACKS:
playBgm: boolean;
onLoad() { onLoad() {
this.playBgm = true;
this.initView(); this.initView();
this.initEvent(); this.initEvent();
} }
...@@ -44,14 +46,20 @@ export default class NewClass extends cc.Component { ...@@ -44,14 +46,20 @@ export default class NewClass extends cc.Component {
this.playLaba(); this.playLaba();
}); });
this.btn_laba.on(cc.Node.EventType.TOUCH_END, this.playLaba, this); this.btn_laba.on(cc.Node.EventType.TOUCH_END, this.playLaba, this);
this.btn_music.on(cc.Node.EventType.TOUCH_END, this.onTouchMusic, this);
} }
private gameStart() { private gameStart() {
if (this.playBgm) {
pg.audio.playBgmByUrl(Game.getIns().bgm);
}
this.countDown = Game.getIns().getCurrentPage().duration; this.countDown = Game.getIns().getCurrentPage().duration;
} }
private bg_round: cc.Node; private bg_round: cc.Node;
private btn_music: cc.Node;
private initView() { private initView() {
this.btn_laba = cc.find("btn_laba", this.node); this.btn_laba = cc.find("btn_laba", this.node);
this.bg_round = cc.find("bg_round", this.node); this.bg_round = cc.find("bg_round", this.node);
this.btn_music = pg.view.find(this, 'btn_music');
} }
private showRound() { private showRound() {
pg.view.visible(this.bg_round, true); pg.view.visible(this.bg_round, true);
...@@ -62,6 +70,18 @@ export default class NewClass extends cc.Component { ...@@ -62,6 +70,18 @@ export default class NewClass extends cc.Component {
.call(() => { pg.event.emit("game_start"); }) .call(() => { pg.event.emit("game_start"); })
.start(); .start();
} }
onTouchMusic() {
if (cc.audioEngine.isMusicPlaying()) {
cc.audioEngine.pauseMusic();
this.playBgm = false;
pg.view.visible(pg.view.find(this.btn_music, 'off'), true);
} else {
this.playBgm = true;
cc.audioEngine.resumeMusic();
pg.audio.playBgmByUrl(Game.getIns().bgm);
pg.view.visible(pg.view.find(this.btn_music, 'off'), false);
}
}
private intervalId; private intervalId;
private playing: boolean; private playing: boolean;
......
...@@ -46,9 +46,11 @@ export default class NewClass extends cc.Component { ...@@ -46,9 +46,11 @@ export default class NewClass extends cc.Component {
private list: Option[]; private list: Option[];
private fishs: cc.Node[]; private fishs: cc.Node[];
private holes: Array<any>; private holes: Array<any>;
private right: Array<Option>;
gameStart() { gameStart() {
//游戏开始。允许出鱼 //游戏开始。允许出鱼
let page = Game.getIns().getCurrentPage(); let page = Game.getIns().getCurrentPage();
this.right = [];
this.data = page; this.data = page;
let list = page.optionList.concat(); let list = page.optionList.concat();
list = JSON.parse(JSON.stringify(list)); list = JSON.parse(JSON.stringify(list));
...@@ -169,6 +171,7 @@ export default class NewClass extends cc.Component { ...@@ -169,6 +171,7 @@ export default class NewClass extends cc.Component {
mouse_right.active = false; mouse_right.active = false;
mouse_wrong.active = false; mouse_wrong.active = false;
this.playLocalAudio('out'); this.playLocalAudio('out');
cc.Tween.stopAllByTarget(mouse_normal);
cc.tween(mouse_normal).to(1, { y: endPos.y }).delay(3).to(1, { y: startPos.y }).call(() => { cc.tween(mouse_normal).to(1, { y: endPos.y }).delay(3).to(1, { y: startPos.y }).call(() => {
item.data = null item.data = null
}).start(); }).start();
...@@ -199,18 +202,24 @@ export default class NewClass extends cc.Component { ...@@ -199,18 +202,24 @@ export default class NewClass extends cc.Component {
} }
//开始点击 点击角色 //开始点击 点击角色
async onTouchItemNormal(item, isRobot) { async onTouchItemNormal(item, isRobot) {
if (this.touching) return;
// this.touching = true; // this.touching = true;
let data = item.data; let data = item.data;
if (!data) return;
if (data.touching) return;
if (this.right.some(op => op.id == data.id)) return;
data.touching = true;
let mouse_normal = pg.view.find(item, "mask/mouse_normal"); let mouse_normal = pg.view.find(item, "mask/mouse_normal");
let mouse_right = pg.view.find(item, "mask/mouse_right"); let mouse_right = pg.view.find(item, "mask/mouse_right");
let mouse_wrong = pg.view.find(item, "mask/mouse_wrong"); let mouse_wrong = pg.view.find(item, "mask/mouse_wrong");
// 点击之后判断对错。 // 点击之后判断对错。
Game.getIns().state = GAME_STATE.OVER;
this.stopAllAni();
if (data.right) { if (data.right) {
this.playLocalAudio('right'); this.playLocalAudio('right');
this.right.push(data);
let isOver = this.right.length >= Game.getIns().getCurrentPageRight()
if (isOver) {
Game.getIns().state = GAME_STATE.OVER;
this.stopAllAni();
}
mouse_normal.active = false; mouse_normal.active = false;
mouse_right.active = true; mouse_right.active = true;
mouse_wrong.active = false; mouse_wrong.active = false;
...@@ -218,14 +227,29 @@ export default class NewClass extends cc.Component { ...@@ -218,14 +227,29 @@ export default class NewClass extends cc.Component {
if (isRobot) { if (isRobot) {
this.robotAddOne(); this.robotAddOne();
} }
let startPos = cc.v2(10, -114);
this.playAddOne(item).then(() => { this.playAddOne(item).then(() => {
this.scaleTo0(); if (isOver) {
this.scaleTo0();
} else {
let orgPos = cc.v2(mouse_right);
cc.tween(mouse_normal).to(0.5, { y: startPos.y }).call(() => { }).start();
cc.tween(mouse_right).delay(1.5).to(0.5, { y: startPos.y }).call(() => {
mouse_right.x = orgPos.x;
mouse_right.y = orgPos.y;
mouse_right.active = false;
item.data.touching = false;
item.data = null
}).start();
}
if (isRobot) { if (isRobot) {
Game.getIns().robot.addScore(); Game.getIns().robot.addScore();
} else { } else {
Game.getIns().player.addScore(); Game.getIns().player.addScore();
} }
return pg.event.emit("game_time_over"); if (isOver) {
return pg.event.emit("game_time_over");
}
}) })
} else { } else {
this.playLocalAudio('error'); this.playLocalAudio('error');
...@@ -233,20 +257,27 @@ export default class NewClass extends cc.Component { ...@@ -233,20 +257,27 @@ export default class NewClass extends cc.Component {
mouse_right.active = false; mouse_right.active = false;
mouse_wrong.active = true; mouse_wrong.active = true;
let startPos = cc.v2(10, -114); let startPos = cc.v2(10, -114);
let nodes = this.node.children.filter(item => item.data); let orgPos = cc.v2(mouse_wrong);
nodes.forEach(node => { cc.tween(mouse_normal).to(0.5, { y: startPos.y }).call(() => {
cc.tween(pg.view.find(node, "mask/mouse_normal")).to(0.5, { y: startPos.y }).call(() => { // item.data = null
item.data = null }).start();
}).start(); cc.tween(mouse_wrong).delay(1.5).to(0.5, { y: startPos.y }).call(() => {
}) mouse_wrong.x = orgPos.x;
this.scheduleOnce(() => { mouse_wrong.y = orgPos.y;
if (isRobot) { mouse_wrong.active = false;
Game.getIns().robot.addError(); item.data.touching = false;
} else { item.data = null
Game.getIns().player.addError(); }).start();
} if (isRobot) {
return pg.event.emit("game_time_over"); Game.getIns().robot.addError();
}, 2) } else {
Game.getIns().player.addError();
}
// this.scheduleOnce(() => {
// // if (this.right >= Game.getIns().getCurrentPageRight()) {
// // return pg.event.emit("game_time_over");
// // }
// }, 1)
} }
} }
async onTouchItem(e) { async onTouchItem(e) {
...@@ -276,7 +307,9 @@ export default class NewClass extends cc.Component { ...@@ -276,7 +307,9 @@ export default class NewClass extends cc.Component {
} }
} }
getMouse() { getMouse() {
return this.list[Math.floor(Math.random() * this.list.length)] let list = this.list.filter(li => this.right.every(op => op.id != li.id))
list = JSON.parse(JSON.stringify(list));
return list[Math.floor(Math.random() * list.length)]
} }
getEmptyHole() { getEmptyHole() {
let list = this.node.children.filter(item => !item.data); let list = this.node.children.filter(item => !item.data);
......
This diff is collapsed.
...@@ -113,27 +113,24 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -113,27 +113,24 @@ export default class SceneComponent extends MyCocosSceneComponent {
.call(() => { pg.event.emit("show_round_action"); vs.active = false; }).start(); .call(() => { pg.event.emit("show_round_action"); vs.active = false; }).start();
} }
private showGameOver() { private showGameOver() {
let gameover = cc.find("gameover", this.node); let player = {
gameover.scale = 3; right: Game.getIns().player.score,
gameover.active = true; error: Game.getIns().player.error,
this.playLocalAudio("gameover"); stone: Math.floor(10 * Game.getIns().player.score / Game.getIns().total)
cc.tween(gameover).to(0.3, { scale: 1 }) }
.delay(2) let robot = {
.call(() => { right: Game.getIns().robot.score,
gameover.active = false; error: Game.getIns().robot.error,
//发送给上端最后的数据 stone: Math.floor(10 * Game.getIns().robot.score / Game.getIns().total)
// alert("game_finish") }
let player = { right: Game.getIns().player.score, error: Game.getIns().player.error } let totalNumber = Game.getIns().totalNumber;
let robot = { right: Game.getIns().robot.score, error: Game.getIns().robot.error } if (Game.getIns().singleGame) {
let totalNumber = Game.getIns().totalNumber; onHomeworkFinish({ player, totalNumber })
if (Game.getIns().singleGame) { } else {
onHomeworkFinish({ player, totalNumber }) onHomeworkFinish({ player, robot, totalNumber })
} else { }
onHomeworkFinish({ player, robot, totalNumber }) this.log("player: " + JSON.stringify(player));
} this.log("totalNumber: " + totalNumber)
this.log("player: " + JSON.stringify(player));
this.log("totalNumber: " + totalNumber)
}).start();
} }
playLocalAudio(audioName) { playLocalAudio(audioName) {
......
...@@ -109,9 +109,11 @@ export default class Game { ...@@ -109,9 +109,11 @@ export default class Game {
private data: any; private data: any;
private lists: Array<Item> private lists: Array<Item>
public player: Player; public player: Player;
public robot: Robot; public robot: Robot;
public state: GAME_STATE; public state: GAME_STATE;
public totalNumber: number; public totalNumber: number;
public bgm: string;
constructor() { constructor() {
this.start = false; this.start = false;
...@@ -133,6 +135,7 @@ export default class Game { ...@@ -133,6 +135,7 @@ export default class Game {
this.title = data.title; this.title = data.title;
this.start = false; this.start = false;
this.lists = []; this.lists = [];
this.bgm = data.bgAudio;
this.data = data.questions; this.data = data.questions;
} }
public start: boolean; public start: boolean;
...@@ -166,7 +169,13 @@ export default class Game { ...@@ -166,7 +169,13 @@ export default class Game {
} }
return true; return true;
} }
get total() {
let m = 0;
this.lists.forEach(ques => {
m += ques.optionList.filter(op => op.right).length;
})
return m;
}
getDataByPage(page): Item { getDataByPage(page): Item {
if (!this.lists) return null; if (!this.lists) return null;
...@@ -177,6 +186,10 @@ export default class Game { ...@@ -177,6 +186,10 @@ export default class Game {
let page = this.page; let page = this.page;
return this.lists.filter(li => li.page == page)[0] return this.lists.filter(li => li.page == page)[0]
} }
getCurrentPageRight() {
let page = this.getCurrentPage();
return page.optionList.filter(op => op.right).length;
}
getTotalPageNum() { getTotalPageNum() {
return this.lists.length; return this.lists.length;
} }
......
...@@ -482,6 +482,15 @@ let pg = { ...@@ -482,6 +482,15 @@ let pg = {
} }
}, },
audio: { audio: {
playBgmByUrl(audio_url) {
return new Promise((resolve, reject) => {
if (!audio_url) return resolve(0);
cc.assetManager.loadRemote(audio_url, (err, audioClip: any) => {
const audioId = cc.audioEngine.playMusic(audioClip, true);
resolve(audioId);
});
});
},
playAudioByUrl(audio_url) { playAudioByUrl(audio_url) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!audio_url) return resolve(0); if (!audio_url) return resolve(0);
......
...@@ -18,9 +18,16 @@ export const defaultData = ...@@ -18,9 +18,16 @@ export const defaultData =
"type": "txt", "image": "", "type": "txt", "image": "",
"audio": "http://staging-teach.cdn.ireadabc.com/7432c9bfa754a4c9db54132308e8ce1f_l.mp3", "text": "xfuw", "right": false, "audio": "http://staging-teach.cdn.ireadabc.com/7432c9bfa754a4c9db54132308e8ce1f_l.mp3", "text": "xfuw", "right": false,
"audioName": "冒出.mp3" "audioName": "冒出.mp3"
}, { "type": "txt", "image": "", "audio": "http://staging-teach.cdn.ireadabc.com/274d8965edafabf1e8d1a01400db82b7_l.mp3", "text": "head", "right": true, "audioName": "错误.mp3" }, { "type": "img", "image": "http://staging-teach.cdn.ireadabc.com/fc1d670c1a3461136506195e3e9e3797.png", "audio": "http://staging-teach.cdn.ireadabc.com/7432c9bfa754a4c9db54132308e8ce1f_l.mp3", "text": "", "right": false, "audioName": "冒出.mp3" }], },
"questionImg": "http://staging-teach.cdn.ireadabc.com/317ef6895381d2f926a0d444326a5995.png", {
"type": "txt", "image": "", "audio": "http://staging-teach.cdn.ireadabc.com/274d8965edafabf1e8d1a01400db82b7_l.mp3", "text": "head",
"right": true, "audioName": "错误.mp3"
}, {
"type": "img", "image": "http://staging-teach.cdn.ireadabc.com/fc1d670c1a3461136506195e3e9e3797.png", "audio": "http://staging-teach.cdn.ireadabc.com/7432c9bfa754a4c9db54132308e8ce1f_l.mp3", "text": "", "right": false, "audioName": "冒出.mp3"
}],
"questionImg": "http://staging-teach.cdn.ireadabc.com/317ef6895381d2f926a0d444326a5995.png",
"audioName": "胜利.mp3" "audioName": "胜利.mp3"
}, { "questionAudio": "http://staging-teach.cdn.ireadabc.com/26e6e997562503a98918fadab7e7b6c2_l.mp3", "duration": 120, "options": [{ "type": "img", "image": "http://staging-teach.cdn.ireadabc.com/fea420e83bd2ba03d014c279de780599.png", "audio": "http://staging-teach.cdn.ireadabc.com/7432c9bfa754a4c9db54132308e8ce1f_l.mp3", "text": "", "right": true, "audioName": "冒出.mp3" }, { "type": "txt", "image": "", "audio": "http://staging-teach.cdn.ireadabc.com/274d8965edafabf1e8d1a01400db82b7_l.mp3", "text": "eye", "right": true, "audioName": "错误.mp3" }, { "type": "txt", "image": "", "audio": "http://staging-teach.cdn.ireadabc.com/f03e207cb6808b17c1510b230a70bb1d_l.mp3", "text": "fffsxz", "right": false, "audioName": "加分.mp3" }, { "type": "img", "image": "http://staging-teach.cdn.ireadabc.com/01247e69d70b995da41e6b7e2000b540.png", "audio": "http://staging-teach.cdn.ireadabc.com/f7fb9f71ab7d460ac2f78c85efba7610_l.mp3", "text": "", "right": false, "audioName": "按钮.mp3" }], "questionImg": "http://staging-teach.cdn.ireadabc.com/fea420e83bd2ba03d014c279de780599.png", "audioName": "失败.mp3" }], }, { "questionAudio": "http://staging-teach.cdn.ireadabc.com/26e6e997562503a98918fadab7e7b6c2_l.mp3", "duration": 120, "options": [{ "type": "img", "image": "http://staging-teach.cdn.ireadabc.com/fea420e83bd2ba03d014c279de780599.png", "audio": "http://staging-teach.cdn.ireadabc.com/7432c9bfa754a4c9db54132308e8ce1f_l.mp3", "text": "", "right": true, "audioName": "冒出.mp3" }, { "type": "txt", "image": "", "audio": "http://staging-teach.cdn.ireadabc.com/274d8965edafabf1e8d1a01400db82b7_l.mp3", "text": "eye", "right": true, "audioName": "错误.mp3" }, { "type": "txt", "image": "", "audio": "http://staging-teach.cdn.ireadabc.com/f03e207cb6808b17c1510b230a70bb1d_l.mp3", "text": "fffsxz", "right": false, "audioName": "加分.mp3" }, { "type": "img", "image": "http://staging-teach.cdn.ireadabc.com/01247e69d70b995da41e6b7e2000b540.png", "audio": "http://staging-teach.cdn.ireadabc.com/f7fb9f71ab7d460ac2f78c85efba7610_l.mp3", "text": "", "right": false, "audioName": "按钮.mp3" }], "questionImg": "http://staging-teach.cdn.ireadabc.com/fea420e83bd2ba03d014c279de780599.png", "audioName": "失败.mp3" }],
"audioName": "头像移动.mp3", "bgAudio": "http://staging-teach.cdn.ireadabc.com/93bb9ed985cff104879f4b4fa6ace4ea_l.mp3" "audioName": "头像移动.mp3",
"bgAudio": "http://staging-teach.cdn.ireadabc.com/93bb9ed985cff104879f4b4fa6ace4ea_l.mp3"
} }
\ No newline at end of file
{
"ver": "1.1.0",
"uuid": "8909837d-207b-4df3-9cd5-0197049059ed",
"subMetas": {}
}
\ No newline at end of file
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