Commit 5562df9c authored by Tt's avatar Tt

增加bgm

parent 67ed2671
......@@ -1836,15 +1836,15 @@
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"r": 247,
"g": 229,
"b": 146,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 50,
"height": 170.39999999999998
"height": 127.8
},
"_anchorPoint": {
"__type__": "cc.Vec2",
......@@ -1855,7 +1855,7 @@
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-565.233,
-563.222,
174.126,
0,
0,
......@@ -1895,10 +1895,10 @@
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_string": "速前进",
"_N$string": "速前进",
"_fontSize": 40,
"_lineHeight": 40,
"_string": "速前进",
"_N$string": "速前进",
"_fontSize": 30,
"_lineHeight": 30,
"_enableWrapText": true,
"_N$file": null,
"_isSystemFontUsed": true,
......@@ -2074,7 +2074,7 @@
},
{
"__type__": "cc.Node",
"_name": "btn_music-on",
"_name": "on",
"_objFlags": 0,
"_parent": {
"__id__": 43
......@@ -2168,13 +2168,13 @@
},
{
"__type__": "cc.Node",
"_name": "btn_music-off",
"_name": "off",
"_objFlags": 0,
"_parent": {
"__id__": 43
},
"_children": [],
"_active": true,
"_active": false,
"_components": [
{
"__id__": 47
......@@ -2330,7 +2330,7 @@
},
{
"__type__": "cc.Node",
"_name": "btn_laba1",
"_name": "btn_laba",
"_objFlags": 0,
"_parent": {
"__id__": 48
......@@ -2353,8 +2353,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 9,
"height": 23
"width": 92,
"height": 92
},
"_anchorPoint": {
"__type__": "cc.Vec2",
......@@ -2388,7 +2388,7 @@
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "f7boJjIb9F/7CBWpmrbHtC"
"_id": "03xoqAbo9A+6AXjrp1jI7f"
},
{
"__type__": "cc.Sprite",
......@@ -2406,7 +2406,7 @@
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0e4c065f-4a60-4e1d-8e3b-2761c3e9414f"
"__uuid__": "f1eb0593-55cb-4d7f-85b2-680e71116161"
},
"_type": 0,
"_sizeMode": 1,
......@@ -2420,11 +2420,11 @@
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "06zHAFMSxBO42ECELD6V58"
"_id": "f09kKIvcRBTqN6hdM6DCMY"
},
{
"__type__": "cc.Node",
"_name": "btn_laba",
"_name": "btn_laba1",
"_objFlags": 0,
"_parent": {
"__id__": 48
......@@ -2447,8 +2447,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 92,
"height": 92
"width": 9,
"height": 23
},
"_anchorPoint": {
"__type__": "cc.Vec2",
......@@ -2459,7 +2459,7 @@
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
589.429,
572.871,
-307.359,
0,
0,
......@@ -2482,7 +2482,7 @@
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "03xoqAbo9A+6AXjrp1jI7f"
"_id": "f7boJjIb9F/7CBWpmrbHtC"
},
{
"__type__": "cc.Sprite",
......@@ -2500,7 +2500,7 @@
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "f1eb0593-55cb-4d7f-85b2-680e71116161"
"__uuid__": "0e4c065f-4a60-4e1d-8e3b-2761c3e9414f"
},
"_type": 0,
"_sizeMode": 1,
......@@ -2514,7 +2514,7 @@
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "f09kKIvcRBTqN6hdM6DCMY"
"_id": "06zHAFMSxBO42ECELD6V58"
},
{
"__type__": "cc.Node",
......@@ -2553,7 +2553,7 @@
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
589.429,
565.935,
-307.359,
0,
0,
......@@ -6722,7 +6722,7 @@
"__id__": 141
},
"_children": [],
"_active": true,
"_active": false,
"_components": [
{
"__id__": 143
......@@ -6826,7 +6826,7 @@
"__id__": 149
}
],
"_active": true,
"_active": false,
"_components": [],
"_prefab": null,
"_opacity": 255,
......@@ -7176,7 +7176,7 @@
"__id__": 154
}
],
"_active": true,
"_active": false,
"_components": [
{
"__id__": 157
......@@ -7485,7 +7485,7 @@
"__id__": 141
},
"_children": [],
"_active": true,
"_active": false,
"_components": [
{
"__id__": 159
......@@ -7650,7 +7650,7 @@
"__id__": 141
},
"_children": [],
"_active": true,
"_active": false,
"_components": [
{
"__id__": 162
......@@ -7744,7 +7744,7 @@
"__id__": 141
},
"_children": [],
"_active": true,
"_active": false,
"_components": [
{
"__id__": 164
......
......@@ -61,6 +61,15 @@ export default class NewClass extends MyCocosSceneComponent {
}
private layout_start: cc.Node;
initView() {
let label_title = pg.view.find(this, 'label_title');
pg.view.setString(label_title, Game.getIns().title);
if (Game.getIns().bgm) {
pg.audio.playBgmByUrl(Game.getIns().bgm);
pg.view.visible(pg.view.find(this, 'btn_music'), true);
} else {
pg.view.visible(pg.view.find(this, 'btn_music'), false);
}
this.layout_start = pg.view.find(this, "layout_start");
let desc = pg.view.find(this.layout_start, 'desc');
pg.view.setString(desc, Game.getIns().question.text)
......@@ -70,12 +79,32 @@ export default class NewClass extends MyCocosSceneComponent {
}
initEvent() {
pg.view.touchOn(pg.view.find(this.layout_start, 'btn_start'), this.onTouchStart, this);
pg.view.touchOn(pg.view.find(this, 'btn_music/on'), this.onTouchMusicOn, this);
pg.view.touchOn(pg.view.find(this, 'btn_music/off'), this.onTouchMusicOff, this);
this.log("test initEvent")
pg.event.on("game_start", () => { this.onGameStart() })
pg.event.on("speak_success", () => { this.onSpeakScueess() });
pg.event.on("speak_fail", () => { this.onSpeakFail() });
pg.event.on("music_temp_stop", () => {
if (pg.view.find(this, 'btn_music/off').active) return;
pg.audio.pauseBgm();
})
pg.event.on("music_temp_start", () => {
if (pg.view.find(this, 'btn_music/off').active) return;
pg.audio.resumeBgm();
})
}
onTouchMusicOn() {
pg.view.visible(pg.view.find(this, 'btn_music/off'), true);
pg.audio.pauseBgm();
}
onTouchMusicOff() {
pg.view.visible(pg.view.find(this, 'btn_music/off'), false);
pg.audio.resumeBgm();
}
onTouchStart() {
......@@ -85,10 +114,6 @@ export default class NewClass extends MyCocosSceneComponent {
this.showVs();
}
private showVs() {
setTimeout(() => {
pg.event.emit("game_start");
}, 100);
if(1)return;
let vs = cc.find("vs", this.node);
vs.active = true;
let player1 = cc.find("player1", vs);
......@@ -106,7 +131,7 @@ export default class NewClass extends MyCocosSceneComponent {
.delay(2)
.call(() => {
pg.event.emit("game_start");
vs.active = false;
vs.active = false;
}).start();
}
......@@ -338,26 +363,34 @@ export default class NewClass extends MyCocosSceneComponent {
//----------------------------OVER-------------------
gameOver() {
let state = pg.view.find(this, "state");
let bg_win = pg.view.find(state, "bg_win");
let bg_lose = pg.view.find(state, "bg_lose");
pg.view.visible(state, true);
if (this.playerPoint > this.robotPoint) {
pg.view.visible(bg_win, true);
pg.view.visible(bg_lose, false);
this.showFireFlower();
// pg.hw.playLocalAudio("flower");
} else {
pg.view.visible(bg_win, false);
pg.view.visible(bg_lose, true);
let player = {
stone: this.playerPoint > this.robotPoint ? 10 : 0
}
this.scheduleOnce(() => {
pg.view.visible(bg_win, false);
pg.view.visible(bg_lose, false);
pg.event.emit("game_over");
}, 5)
// onHomeworkFinish最后需要添加作业完成
onHomeworkFinish();
let robot = {
stone: this.robotPoint > this.playerPoint ? 10 : 0
}
this.log("player: " + JSON.stringify({ player, robot }));
onHomeworkFinish({ player, robot })
// let state = pg.view.find(this, "state");
// let bg_win = pg.view.find(state, "bg_win");
// let bg_lose = pg.view.find(state, "bg_lose");
// pg.view.visible(state, true);
// if (this.playerPoint > this.robotPoint) {
// pg.view.visible(bg_win, true);
// pg.view.visible(bg_lose, false);
// this.showFireFlower();
// // pg.hw.playLocalAudio("flower");
// } else {
// pg.view.visible(bg_win, false);
// pg.view.visible(bg_lose, true);
// }
// this.scheduleOnce(() => {
// pg.view.visible(bg_win, false);
// pg.view.visible(bg_lose, false);
// pg.event.emit("game_over");
// }, 5)
// // onHomeworkFinish最后需要添加作业完成
// onHomeworkFinish();
}
//-----------------------------TOOL-------------------------------
showFireFlower() {
......
......@@ -146,6 +146,7 @@ export default class SpeakRecord extends cc.Component {
cc.audioEngine.stopEffect(this.audioId);
this.audioId = null;
}
pg.event.emit("music_temp_stop")
pg.view.playDBAnimation(this.speak_ske, "newAnimation", 0);
pg.view.visible(this.btn_audio_start, false);
pg.view.visible(this.btn_audio_stop, true);
......@@ -192,6 +193,7 @@ export default class SpeakRecord extends cc.Component {
}
onRealStop(score) {
pg.event.emit("music_temp_start")
let db = pg.view.playDBAnimation(this.speak_ske, "newAnimation", 1);
db.once(dragonBones.EventObject.COMPLETE, () => {
pg.view.visible(this.text_tip, false);
......
......@@ -491,6 +491,15 @@ let pg = {
});
});
},
stopBgm() {
cc.audioEngine.stopMusic();
},
pauseBgm() {
cc.audioEngine.pauseMusic();
},
resumeBgm() {
cc.audioEngine.resumeMusic();
},
playAudioByUrl(audio_url) {
return new Promise((resolve, reject) => {
if (!audio_url) return resolve(0);
......
......@@ -14,5 +14,5 @@ export const defaultData = {
, {
"image": "http://staging-teach.cdn.ireadabc.com/fecbb8471427a38d68486ae1bbc6c25c.png", "audio": "http://staging-teach.cdn.ireadabc.com/227c25a67e1398026bd6185bf9a6e87c_l.mp3", "audioName": "", "text": "robot", "time": "15", "tip": ""
}],
"bgAudio": "", "audioBgName": "", "audioName": "急速前进"
"bgAudio": "http://staging-teach.cdn.ireadabc.com/0913981cdeb2c6bc785de1054e80a500_l.mp3", "audioBgName": "", "audioName": "急速前进"
}
\ No newline at end of file
import { log } from "console";
export function getPosByAngle(angle, len) {
const radian = angle * Math.PI / 180;
......@@ -71,64 +73,64 @@ export function setSprNodeMaxLen(sprNode, maxW, maxH) {
}
export function localPosTolocalPos(baseNode, targetNode) {
const worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));
const localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
return localPos;
const worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));
const localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
return localPos;
}
export function worldPosToLocalPos(worldPos, baseNode) {
const localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
return localPos;
const localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
return localPos;
}
export function getScaleRateBy2Node(baseNode, targetNode, maxFlag = true) {
const worldRect1 = targetNode.getBoundingBoxToWorld();
const worldRect2 = baseNode.getBoundingBoxToWorld();
const sx = worldRect1.width / worldRect2.width;
const sy = worldRect1.height / worldRect2.height;
if (maxFlag) {
return Math.max(sx, sy);
} else {
return Math.min(sx, sy);
}
const worldRect1 = targetNode.getBoundingBoxToWorld();
const worldRect2 = baseNode.getBoundingBoxToWorld();
const sx = worldRect1.width / worldRect2.width;
const sy = worldRect1.height / worldRect2.height;
if (maxFlag) {
return Math.max(sx, sy);
} else {
return Math.min(sx, sy);
}
}
export function getDistance (start, end){
var pos = cc.v2(start.x - end.x, start.y - end.y);
var dis = Math.sqrt(pos.x*pos.x + pos.y*pos.y);
return dis;
export function getDistance(start, end) {
var pos = cc.v2(start.x - end.x, start.y - end.y);
var dis = Math.sqrt(pos.x * pos.x + pos.y * pos.y);
return dis;
}
export function playAudioByUrl(audio_url, cb=null) {
if (audio_url) {
cc.assetManager.loadRemote(audio_url, (err, audioClip:any) => {
export function playAudioByUrl(audio_url, cb = null) {
if (audio_url) {
cc.assetManager.loadRemote(audio_url, (err, audioClip) => {
const audioId = cc.audioEngine.play(audioClip, false, 0.8);
if (cb) {
cc.audioEngine.setFinishCallback(audioId, () => {
cb();
});
}
});
}
});
}
}
export function btnClickAnima(btn, time=0.15, rate=1.05) {
export function btnClickAnima(btn, time = 0.15, rate = 1.05) {
btn.tmpScale = btn.scale;
btn.on(cc.Node.EventType.TOUCH_START, () => {
cc.tween(btn)
.to(time / 2, {scale: btn.scale * rate})
.to(time / 2, { scale: btn.scale * rate })
.start()
})
btn.on(cc.Node.EventType.TOUCH_CANCEL, () => {
cc.tween(btn)
.to(time / 2, {scale: btn.tmpScale})
.to(time / 2, { scale: btn.tmpScale })
.start()
})
btn.on(cc.Node.EventType.TOUCH_END, () => {
cc.tween(btn)
.to(time / 2, {scale: btn.tmpScale})
.to(time / 2, { scale: btn.tmpScale })
.start()
})
}
......@@ -177,15 +179,85 @@ export function playAudio(audioClip, cb = null) {
export async function asyncDelay(time) {
return new Promise((resolve, reject) => {
try {
setTimeout(() => {
resolve(null);
}, time * 1000);
cc.tween(cc.find('Canvas'))
.delay(time)
.call(() => {
resolve(null);
})
.start();
} catch (e) {
reject(e);
}
})
}
export async function asyncLoadDragonBoneAnime(node, { skeJsonData: { url: skeJsonDataUrl }, texJsonData: { url: texJsonDataUrl }, texPngData: { url: texPngDataUrl } }) {
if (!texPngDataUrl || !texJsonDataUrl || !texPngDataUrl
|| texPngDataUrl == '' || texJsonDataUrl == '' || texPngDataUrl == '') {
return;
}
return new Promise((resolve, reject) => {
if (node.animaNode) {
node.animaNode.removeFromParent();
}
const animaNode = new cc.Node();
animaNode.name = 'animaNode';
animaNode.parent = node;
animaNode.active = true;
node.animaNode = animaNode;
const dragonDisplay = animaNode.addComponent(dragonBones.ArmatureDisplay);
const loadTexture = new Promise((resolve, reject) => {
cc.assetManager.loadRemote(texPngDataUrl, (error, texture) => {
if (error) {
reject(error);
}
resolve(texture);
});
});
const loadTexJsonData = new Promise((resolve, reject) => {
cc.assetManager.loadAny({ url: texJsonDataUrl }, (error, atlasJson) => {
if (error) {
reject(error);
}
resolve(atlasJson);
});
});
const loadSkeJsonData = new Promise((resolve, reject) => {
cc.assetManager.loadAny({ url: skeJsonDataUrl }, (error, dragonBonesJson) => {
if (error) {
reject(error);
}
resolve(dragonBonesJson);
});
});
Promise.all([loadTexture, loadTexJsonData, loadSkeJsonData]).then(([texture, atlasJson, dragonBonesJson]) => {
const atlas = new dragonBones.DragonBonesAtlasAsset();
atlas.atlasJson = JSON.stringify(atlasJson);
atlas.texture = texture;
const asset = new dragonBones.DragonBonesAsset();
asset.dragonBonesJson = JSON.stringify(dragonBonesJson);
dragonDisplay.dragonAtlasAsset = atlas;
dragonDisplay.dragonAsset = asset;
let armatureNames = dragonBonesJson.armature.map(data => data.name);
if (armatureNames.length > 0) {
dragonDisplay.armatureName = armatureNames[0];
}
resolve(animaNode);
});
});
}
export class FireworkSettings {
baseNode; // 父节点
nodeList; // 火花节点的array
......@@ -341,12 +413,15 @@ export function showTrebleFirework(baseNode, rabbonList) {
showFireworks(right);
}
export function onHomeworkFinish() {
export function onHomeworkFinish(data) {
console.log("onHomeworkFinish");
const middleLayer = cc.find('middleLayer');
if (!middleLayer) return;
middleLayer.getComponent('middleLayer').log(JSON.stringify(data));
if (middleLayer) {
const middleLayerComponent = middleLayer.getComponent('middleLayer');
if (middleLayerComponent.role == 'student') {
middleLayerComponent.onHomeworkFinish(() => { });
middleLayerComponent.onHomeworkFinish(() => { }, data);
}
} else {
console.log('onHomeworkFinish');
......
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