Commit 5432b50e authored by 王勇霞's avatar 王勇霞

feat: 记录

parent e7e92de9
......@@ -2,10 +2,8 @@ import { Scene } from "../../module/views/Scene";
import * as Matter from "matter-js";
import Role from "./components/Role";
import AddProp from "./components/AddProp";
import { RES } from "../../module/RES";
import ObstacleProp from "./components/ObstacleProp";
import MapItem from "./components/MapItem";
import Cloud from "./components/Cloud";
import { getWebData, WebNetName, sendWebNet, sendLog, LOG_TYPE } from "../webNet";
import { showPanel, showToast, changeScene } from "../../module/ctrls";
import { GuidePanel } from "../panels/GuidePanel";
......@@ -14,130 +12,74 @@ import { SuccessPanel } from "../panels/SuccessPanel";
import { FailPanel } from "../panels/FailPanel";
import { duiba_md5 } from "../../module/tools/security";
import { Tools } from "../Tools";
import { playAllSound, stopAllSound, cusPlaySound } from "../common/SoundWeb";
import { layers } from "../../module/views/layers";
import UI from "../UI";
export class GameScene extends Scene {
get groupNames() { return ["GameScene"] };
get skinName() { return "GameScene" };
bg: FYGE.Sprite;
left;
right;
cdbg: FYGE.Sprite;
bgCon; //背景移动
cdnum: FYGE.TextField;
cloud: FYGE.Sprite;
peo: FYGE.Sprite;
tianpop: FYGE.Sprite;
xiangpop: FYGE.Sprite;
monster: FYGE.Sprite;
right: FYGE.Sprite;
left: FYGE.Sprite;
scorebg: FYGE.Sprite;
scorenum: FYGE.TextField;
cdbg: FYGE.Sprite;
cdnum: FYGE.TextField;
close: FYGE.Sprite;
open: FYGE.Sprite;
jumpLock = false;
isonce = false;
score;
time;
public static instance: GameScene;
initUi() {
}
async start(data) {
start(data) {
super.start();
sendLog(LOG_TYPE.EXPOSURE,37)
GameScene.instance = this
console.log("新手引导")
// showPanel(GuidePanel);
this.left = new FYGE.SvgaAni(await RES.getResAsync("left.svga"))
this.left = this.addChild(this.left)
this.left.position.set(8, 979);
this.left.startAniRange(1, 1, 1);
this.right = new FYGE.SvgaAni(await RES.getResAsync("right.svga"))
this.right = this.addChild(this.right)
this.right.position.set(524, 979);
this.right.startAniRange(1, 1, 1);
// this.cdUIRender(StartScene.instance.gameInfo.duration)
this.cdUIRender()
showPanel(GuidePanel);
if (Tools.isMusic) {
this.open.visible = true;
this.close.visible = false
cusPlaySound("bg", true)
} else {
this.open.visible = false;
this.close.visible = true
}
this.createPhyWorld()
this.bgCon = this.addChild(new FYGE.Container());
this.setChildIndex(this.bgCon, 2)
this.initCloud();
// this.createPhyWorld()
// this.bgCon = this.addChild(new FYGE.Container());
// this.setChildIndex(this.bgCon, 2)
// this.initMap();
// this.scorenum.text = "0"
// this.cdnum.text = StartScene.instance.gameInfo.duration
}
cdUIRender(num=17) {
// 先清除所有节点
this.cdbg.removeChildren();
let str = num + 's';
let arr = str.split("");
let startPos = (130 - (30*arr.length))/2
arr.forEach((item, index) => {
UI.Sp(this.cdbg, `num_${item}.png`, startPos + (index*30), 38)
})
}
initCloud() {
let stageHeight = this.stage.stageHeight;
// 渲染人物脚下的一朵云层
UI.Sp(this.bgCon, 'cloud2.png', 190, stageHeight-310)
this.initMap();
this.scorenum.text = "0"
this.cdnum.text = StartScene.instance.gameInfo.duration
this.createCloudItem(stageHeight - 600, 'left', false);
// for (let i = 0; i < 4; i++) {
// if (i < 4) {
// this.createLineItem(stageHeight - (240 * (i + 2)), 0, false);
}
// } else {
// this.createLineItem(stageHeight - (240 * (i + 2)));
score;
time;
// }
// }
changeMusic() {
this.open.visible = !this.open.visible
this.close.visible = !this.close.visible
Tools.isMusic = !Tools.isMusic
if (Tools.isMusic) {
// playAllSound()
cusPlaySound("bg", true)
} else {
stopAllSound()
}
/**
*
* @param h
* @param direction 方向 left right
* @param isprop
*/
createCloudItem(h, direction?: string, isprop = true) {
let nx = direction === 'left' ? 88 : 440;
let cloudItem = new Cloud();
cloudItem.fx = nx;
cloudItem.fy = h
this.bgCon.addChildAt(cloudItem, 0)
this.composites.add(this.world, [cloudItem.phyBody]);
}
upDateInfo() {
this.score = 0
this.time = StartScene.instance.gameInfo.duration
......@@ -169,7 +111,7 @@ export class GameScene extends Scene {
this.composites.add(this.world, [this._role.phyBody]);
}
_role; //人物
bgCon; //背景移动
addRole() {
let offset = (1624 - this.stage.viewRect.height) / 2;
......@@ -205,6 +147,8 @@ export class GameScene extends Scene {
Matter.Events.on(this.engine, "collisionStart", this.onCollisionStart.bind(this));
Matter.Events.on(this.engine, "tick", this.onCollisionTick.bind(this));
}
onCollisionTick(e) {
}
......@@ -224,6 +168,9 @@ export class GameScene extends Scene {
num = 2
}
this._role.addScore('+' + num, '#ffffff')
if (Tools.isMusic) {
cusPlaySound("get", false)
}
this.scorenum.text = Number(this.scorenum.text) + num + '';
this.score += num
......@@ -235,6 +182,9 @@ export class GameScene extends Scene {
} else if (p.bodyB.gameType == 'dieProp' || p.bodyA.gameType == 'dieProp') {
// 死亡💀
console.log("死亡")
if (Tools.isMusic) {
cusPlaySound("fail", false)
}
let body = p.bodyB.gameType == 'dieProp' ? p.bodyB : p.bodyA;
let prop = this.obstaclePropMap.get(body.id);
this.composites.remove(this.world, prop.phyBody);
......@@ -247,6 +197,9 @@ export class GameScene extends Scene {
this.gameOver()
} else {
if (!this.jumpLock) {
if (Tools.isMusic) {
cusPlaySound("jump", false)
}
this._role.jump()
this.jumpLock = true;
setTimeout(() => {
......@@ -265,13 +218,13 @@ export class GameScene extends Scene {
for (let i = 0; i < 10; i++) {
// if (i < 4) {
// this.createLineItem(stageHeight - (240 * (i + 2)), 0, false);
if (i < 4) {
this.createLineItem(stageHeight - (240 * (i + 2)), 0, false);
// } else {
// this.createLineItem(stageHeight - (240 * (i + 2)));
} else {
this.createLineItem(stageHeight - (240 * (i + 2)));
// }
}
}
......@@ -425,18 +378,23 @@ export class GameScene extends Scene {
}
initEvents() {
super.initEvents();
// this.left.addEventListener(FYGE.MouseEvent.CLICK, () => {
// sendLog(LOG_TYPE.CLICK,37)
// this._role.leftMove()
// })
// this.right.addEventListener(FYGE.MouseEvent.CLICK, () => {
// sendLog(LOG_TYPE.CLICK,37)
// this._role.rightMove()
// })
this.left.addEventListener(FYGE.MouseEvent.CLICK, () => {
sendLog(LOG_TYPE.CLICK,37)
this._role.leftMove()
})
this.right.addEventListener(FYGE.MouseEvent.CLICK, () => {
sendLog(LOG_TYPE.CLICK,37)
this._role.rightMove()
})
this.open.addEventListener(FYGE.MouseEvent.CLICK, this.changeMusic, this)
this.close.addEventListener(FYGE.MouseEvent.CLICK, this.changeMusic, this)
}
removeEvents() {
super.removeEvents();
this.open.removeEventListener(FYGE.MouseEvent.CLICK, this.changeMusic, this)
this.close.removeEventListener(FYGE.MouseEvent.CLICK, this.changeMusic, this)
stopAllSound()
}
}
......@@ -30,6 +30,7 @@ export class GameScene extends Scene {
_role; //人物
wordList = ['闲', '看', '晴', '云', '自', '卷', '舒', '静', '水', '流', '深', '心', '无', '意', '在', '休']; // 待随机出现的列表
collectList = []; // 已收集列表
mapList = [];
......@@ -56,7 +57,7 @@ export class GameScene extends Scene {
jumpLock = false;
isonce = false;
score;
time;
public static instance: GameScene;
initUi() {
......@@ -68,6 +69,7 @@ export class GameScene extends Scene {
console.log("新手引导")
// showPanel(GuidePanel);
this.left = new FYGE.SvgaAni(await RES.getResAsync("left.svga"))
this.left = this.addChild(this.left)
this.left.position.set(8, 979);
......@@ -82,7 +84,24 @@ export class GameScene extends Scene {
this.bgCon = this.addChild(new FYGE.Container());
this.setChildIndex(this.bgCon, 2)
this.initCloud();
this.cdUIRender(StartScene.instance.gameInfo.duration)
this.upDateInfo(); // 用于开始游戏 ----test
// 添加指向的事件
this.left.addEventListener(FYGE.MouseEvent.CLICK, () => {
this.left.startAniRange(1, undefined, 1, () => {
let item = this._role.currentIndex < 0 ? this.mapList[0] : this.mapList[this._role.currentIndex]
this._role.leftMove({
item: item
})
})
})
this.right.addEventListener(FYGE.MouseEvent.CLICK, () => {
this.right.startAniRange(1, undefined, 1, () => {
console.log("播放完成")
this._role.rightMove()
})
})
// this.createPhyWorld()
// this.bgCon = this.addChild(new FYGE.Container());
......@@ -91,8 +110,59 @@ export class GameScene extends Scene {
// this.scorenum.text = "0"
// this.cdnum.text = StartScene.instance.gameInfo.duration
}
engine; // matter引擎初始化
composites;
world;
runner;
ground;
addPropsMap = new Map();
obstaclePropMap = new Map();
private createPhyWorld() {
const { Engine, Render, Runner, Composite, Bodies, World, Composites } = Matter;
this.engine = Engine.create(
{
enableSleeping: true
}
);
this.world = this.engine.world;
this.engine.gravity.y = 1.5;
/** 真正运行 */
this.runner = Runner.create();
Runner.run(this.runner, this.engine);
// @ts-ignore
this.composites = Composite;
Matter.Events.on(this.engine, "collisionStart", this.onCollisionStart.bind(this));
Matter.Events.on(this.engine, "tick", this.onCollisionTick.bind(this));
}
upDateInfo() {
this.time = Number(StartScene.instance.gameInfo.duration)
this.cdUIRender(this.time)
this.startGame()
// this.countDown(this.time)
}
startGame() {
this.addEventListener(FYGE.Event.ENTER_FRAME, this.onFarm, this);
// this.composites.add(this.world, [this._role.phyBody]);
}
time;
timer = null;
countDown(time) {
this.timer = setTimeout(() => {
// if (this.time <= 0) {
// clearTimeout(this.timer);
// this.composites.remove(this.world, this._role.phyBody);
// this.gameOver()
// return
// }
this.time = this.time - 1;
this.cdUIRender(this.time)
this.countDown(this.time)
}, 1000)
}
cdUIRender(num=17) {
cdUIRender(num=60) {
// 先清除所有节点
this.cdbg.removeChildren();
let str = num + 's';
......@@ -126,12 +196,17 @@ export class GameScene extends Scene {
*/
createCloudItem(h, direction?: string) {
// 0 - wordList长度之间的随机数
let randomIndex = Math.floor(Math.random()*this.wordList.length);
// this.wordList[randomIndex]
let len = this.wordList.length
let randomIndex;
if (len > 0) {
randomIndex = Math.floor(Math.random()*len);
}
let wordItem = new Word({
wordTx: '云';
wordTx: len == 0 ? '' : this.wordList[randomIndex]
})
wordItem.fx = (direction === 'left' ? 88 : 440) + 100;
// 偏差值
let deviation = Math.floor(Math.random()*200) - 100;
wordItem.fx = (direction === 'left' ? 88 : 440) + deviation + 100;
wordItem.fy = h + 5
this.bgCon.addChildAt(wordItem, 0)
this.composites.add(this.world, [wordItem.phyBody]);
......@@ -140,10 +215,11 @@ export class GameScene extends Scene {
let cloudItem = new Cloud({
direction
});
cloudItem.fx = direction === 'left' ? 88 : 440;
cloudItem.fx = (direction === 'left' ? 88 : 440) + deviation;
cloudItem.fy = h
this.bgCon.addChildAt(cloudItem, 0)
this.composites.add(this.world, [cloudItem.phyBody]);
this.mapList.push([wordItem, cloudItem])
this.composites.add(this.world, [wordItem.phyBody, cloudItem.phyBody]);
}
// 添加角色
......@@ -156,282 +232,238 @@ export class GameScene extends Scene {
this.bgCon.addChild(role);
// this.composites.add(this.world, [role.phyBody]);
}
onFarm() {
this.moveMap()
// let roleY = this._role.y + this.bgCon.y;
// if (roleY < 600) {
// this.moveMap(600 - roleY)
// }
// let lastLine = this.mapList[0],
// lastItem = lastLine[0];
// if (lastItem.y + this.bgCon.y > this.stage.stageHeight + 10) {
// lastLine.forEach(item => {
// this.composites.remove(this.world, item.phyBody);
// item.destroy();
// this.bgCon.removeChild(item)
// })
upDateInfo() {
this.score = 0
this.time = StartScene.instance.gameInfo.duration
this.scorenum.text = this.score + ""
this.cdnum.text = this.time + ""
this.startGame()
this.countDown(this.time)
}
countDown(time) {
this.timer = setTimeout(() => {
if (Number(this.cdnum.text) <= 0) {
clearTimeout(this.timer);
this.composites.remove(this.world, this._role.phyBody);
console.log("zale")
this.gameOver()
return
}
this.cdnum.text = Number(this.cdnum.text) - 1 + ''
this.countDown(Number(this.cdnum.text))
}, 1000)
}
// this.mapList.shift()
// }
startGame() {
this.isonce = false
this.addEventListener(FYGE.Event.ENTER_FRAME, this.onFarm, this);
this.composites.add(this.world, [this._role.phyBody]);
}
// let firstLine = this.mapList[this.mapList.length - 1],
// firstItem = firstLine[0];
engine; // matter引擎初始化
composites;
world;
runner;
ground;
addPropsMap = new Map();
obstaclePropMap = new Map();
private createPhyWorld() {
const { Engine, Render, Runner, Composite, Bodies, World, Composites } = Matter;
this.engine = Engine.create(
{
enableSleeping: true
}
);
this.world = this.engine.world;
this.engine.gravity.y = 1.5;
// if (firstItem.y + this.bgCon.y > -100) {
// this.createLineItem(firstItem.y - 240)
// }
/** 真正运行 */
this.runner = Runner.create();
Runner.run(this.runner, this.engine);
// @ts-ignore
this.composites = Composite;
// // console.log(this._role.y,this.bgCon.y,layers.stageHeight)
// if (this._role.y >= -(this.bgCon.y-1624)) {
// if (!this.isonce) {
// this.composites.remove(this.world, this._role.phyBody);
// console.log("siwang")
// clearTimeout(this.timer);
// this.gameOver()
// // 复活需要初始化
// this.isonce = true
// }
// }
Matter.Events.on(this.engine, "collisionStart", this.onCollisionStart.bind(this));
Matter.Events.on(this.engine, "tick", this.onCollisionTick.bind(this));
}
onCollisionTick(e) {
}
onCollisionStart(e) {
let pairs = e.pairs;
pairs.map((p) => {
// 🌹与人的碰撞
if (p.bodyB == this._role.phyBody || p.bodyA == this._role.phyBody) {
if (p.bodyB.gameType?.split("_")[0] == 'addProp' || p.bodyA.gameType?.split("_")[0] == 'addProp') {
console.log("加分")
let body = p.bodyB.gameType?.split("_")[0] == 'addProp' ? p.bodyB : p.bodyA;
let prop = this.addPropsMap.get(body.id);
let num = 1
if (body.gameType.split("_")[1] == "tian") {
num = 1
} else {
num = 2
}
this._role.addScore('+' + num, '#ffffff')
this.scorenum.text = Number(this.scorenum.text) + num + '';
this.score += num
this.composites.remove(this.world, prop.phyBody);
prop.destroy();
this.bgCon.removeChild(prop)
this.addPropsMap.delete(body.id);
} else if (p.bodyB.gameType == 'dieProp' || p.bodyA.gameType == 'dieProp') {
// 死亡💀
console.log("死亡")
let body = p.bodyB.gameType == 'dieProp' ? p.bodyB : p.bodyA;
let prop = this.obstaclePropMap.get(body.id);
this.composites.remove(this.world, prop.phyBody);
prop.destroy();
this.bgCon.removeChild(prop)
this.obstaclePropMap.delete(body.id);
// this.removeWorld()
this.composites.remove(this.world, this._role.phyBody);
clearTimeout(this.timer);
this.gameOver()
} else {
if (!this.jumpLock) {
this._role.jump()
this.jumpLock = true;
setTimeout(() => {
this.jumpLock = false
}, 300)
}
moveMap() {
// console.log('this.bgCon', this.bgCon)
// this.bgCon.y = this.bgCon.y + 1;
}
onCollisionTick() {
}
});
onCollisionStart() {
}
initMap() {
let stageHeight = this.stage.stageHeight;
this.createLineItem(stageHeight - 240, 380, false);
for (let i = 0; i < 10; i++) {
// if (i < 4) {
// this.createLineItem(stageHeight - (240 * (i + 2)), 0, false);
// } else {
// this.createLineItem(stageHeight - (240 * (i + 2)));
// }
}
}
mapList = [];
createLineItem(h, x?: number, isprop = true) {
let nx = x ? x : Math.floor(Math.random() * 570 + 90);
if (isprop) {
let rate = Math.floor(Math.random() * 20);
switch (true) {
case rate < 18:
// 添加花🌹加分元素
let addProp = new AddProp();
addProp.fx = nx;
addProp.fy = h - 25;
this.bgCon.addChildAt(addProp, 0)
this.composites.add(this.world, [addProp.phyBody]);
this.addPropsMap.set(addProp.phyBody.id, addProp);
break;
case rate >= 19 && rate <= 20:
// 添加障碍元素
let obstacleProp = new ObstacleProp()
obstacleProp.fx = nx;
obstacleProp.fy = h - 40;
this.bgCon.addChildAt(obstacleProp, 0)
this.composites.add(this.world, [obstacleProp.phyBody]);
this.obstaclePropMap.set(obstacleProp.phyBody.id, obstacleProp)
break
default:
break
// onCollisionTick(e) {
// }
// onCollisionStart(e) {
// let pairs = e.pairs;
// pairs.map((p) => {
// // 🌹与人的碰撞
// if (p.bodyB == this._role.phyBody || p.bodyA == this._role.phyBody) {
// if (p.bodyB.gameType?.split("_")[0] == 'addProp' || p.bodyA.gameType?.split("_")[0] == 'addProp') {
// console.log("加分")
// let body = p.bodyB.gameType?.split("_")[0] == 'addProp' ? p.bodyB : p.bodyA;
// let prop = this.addPropsMap.get(body.id);
// let num = 1
// if (body.gameType.split("_")[1] == "tian") {
// num = 1
// } else {
// num = 2
// }
// this._role.addScore('+' + num, '#ffffff')
// this.scorenum.text = Number(this.scorenum.text) + num + '';
// this.score += num
// this.composites.remove(this.world, prop.phyBody);
// prop.destroy();
// this.bgCon.removeChild(prop)
// this.addPropsMap.delete(body.id);
// } else if (p.bodyB.gameType == 'dieProp' || p.bodyA.gameType == 'dieProp') {
// // 死亡💀
// console.log("死亡")
// let body = p.bodyB.gameType == 'dieProp' ? p.bodyB : p.bodyA;
// let prop = this.obstaclePropMap.get(body.id);
// this.composites.remove(this.world, prop.phyBody);
// prop.destroy();
// this.bgCon.removeChild(prop)
// this.obstaclePropMap.delete(body.id);
// // this.removeWorld()
// this.composites.remove(this.world, this._role.phyBody);
// clearTimeout(this.timer);
// this.gameOver()
// } else {
// if (!this.jumpLock) {
// this._role.jump()
// this.jumpLock = true;
// setTimeout(() => {
// this.jumpLock = false
// }, 300)
// }
// }
}
}
// }
// });
// }
// initMap() {
// let stageHeight = this.stage.stageHeight;
let mapItem = new MapItem();
mapItem.fx = nx;
mapItem.fy = h
this.bgCon.addChildAt(mapItem, 0)
this.composites.add(this.world, [mapItem.phyBody]);
// this.createLineItem(stageHeight - 240, 380, false);
// for (let i = 0; i < 10; i++) {
let spriteItem = this.createOtherItem(nx, h);
this.mapList.push([mapItem, spriteItem])
// // if (i < 4) {
// // this.createLineItem(stageHeight - (240 * (i + 2)), 0, false);
}
// // } else {
// // this.createLineItem(stageHeight - (240 * (i + 2)));
createOtherItem(x, h) {
let dx = Math.floor(Math.random() * 280 + 90);
// // }
if (dx + 90 > x - 90) {
dx = dx + 310
}
// }
let mapItem = new MapItem();
mapItem.fx = dx;
mapItem.fy = h
this.bgCon.addChildAt(mapItem, 0);
this.composites.add(this.world, [mapItem.phyBody]);
return mapItem
}
timer = null;
onFarm() {
let roleY = this._role.y + this.bgCon.y;
// }
// createLineItem(h, x?: number, isprop = true) {
// let nx = x ? x : Math.floor(Math.random() * 570 + 90);
// if (isprop) {
// let rate = Math.floor(Math.random() * 20);
// switch (true) {
// case rate < 18:
// // 添加花🌹加分元素
// let addProp = new AddProp();
// addProp.fx = nx;
// addProp.fy = h - 25;
// this.bgCon.addChildAt(addProp, 0)
// this.composites.add(this.world, [addProp.phyBody]);
// this.addPropsMap.set(addProp.phyBody.id, addProp);
// break;
// case rate >= 19 && rate <= 20:
// // 添加障碍元素
// let obstacleProp = new ObstacleProp()
// obstacleProp.fx = nx;
// obstacleProp.fy = h - 40;
// this.bgCon.addChildAt(obstacleProp, 0)
// this.composites.add(this.world, [obstacleProp.phyBody]);
// this.obstaclePropMap.set(obstacleProp.phyBody.id, obstacleProp)
// break
// default:
// break
if (roleY < 600) {
this.moveMap(600 - roleY)
}
// }
// }
let lastLine = this.mapList[0],
lastItem = lastLine[0];
if (lastItem.y + this.bgCon.y > this.stage.stageHeight + 10) {
lastLine.forEach(item => {
this.composites.remove(this.world, item.phyBody);
item.destroy();
this.bgCon.removeChild(item)
})
// let mapItem = new MapItem();
// mapItem.fx = nx;
// mapItem.fy = h
// this.bgCon.addChildAt(mapItem, 0)
// this.composites.add(this.world, [mapItem.phyBody]);
this.mapList.shift()
}
// let spriteItem = this.createOtherItem(nx, h);
// this.mapList.push([mapItem, spriteItem])
let firstLine = this.mapList[this.mapList.length - 1],
firstItem = firstLine[0];
// }
if (firstItem.y + this.bgCon.y > -100) {
this.createLineItem(firstItem.y - 240)
}
// createOtherItem(x, h) {
// let dx = Math.floor(Math.random() * 280 + 90);
// console.log(this._role.y,this.bgCon.y,layers.stageHeight)
if (this._role.y >= -(this.bgCon.y-1624)) {
if (!this.isonce) {
this.composites.remove(this.world, this._role.phyBody);
console.log("siwang")
clearTimeout(this.timer);
this.gameOver()
// 复活需要初始化
this.isonce = true
}
}
// if (dx + 90 > x - 90) {
// dx = dx + 310
// }
}
moveMap(y) {
this.bgCon.y = this.bgCon.y + y;
}
// let mapItem = new MapItem();
// mapItem.fx = dx;
// mapItem.fy = h
// this.bgCon.addChildAt(mapItem, 0);
// this.composites.add(this.world, [mapItem.phyBody]);
removeWorld(){
this.composites.clear(this.world)
// console.log(this.composites)
// return mapItem
// }
this.mapList = [];
this.addPropsMap.clear()
this.obstaclePropMap.clear()
console.log(this.obstaclePropMap)
console.log(this.addPropsMap)
console.log(this.mapList)
}
//游戏结束
async gameOver() {
this.removeEventListener(FYGE.Event.ENTER_FRAME, this.onFarm, this);
this.removeWorld()
let startInfo = getWebData(WebNetName.startGame).data.currInfo
let timestamp = new Date().getTime()
//签名方式: md5(score=分值&startId=游戏开始id&timestamp=timestamp&key=key)
//其中key的值为开始游戏接口里返回的key+固定值9ef16b33920749fb26e8fc2f2913150a, 例如1234569ef16b33920749fb26e8fc2f2913150a
let sign = duiba_md5(`score=${this.score}&startId=${startInfo.startId}&timestamp=${timestamp}&key=${startInfo.key + "9ef16b33920749fb26e8fc2f2913150a"}`)
const { success, data, message } = await sendWebNet(WebNetName.submitGame, { score: this.score, sign: sign, code: startInfo.code, timestamp: timestamp ,startId:startInfo.startId})
this._role.die(() => {
this.bgCon.removeChildren()
this.bgCon.y = 0
if (!success) {
showToast(message || "网络异常,请重试~")
changeScene(StartScene)
return
}
if (data.pass) {
showPanel(SuccessPanel)
} else {
showPanel(FailPanel)
}
})
// removeWorld(){
// this.composites.clear(this.world)
// // console.log(this.composites)
// this.mapList = [];
// this.addPropsMap.clear()
// this.obstaclePropMap.clear()
// console.log(this.obstaclePropMap)
// console.log(this.addPropsMap)
// console.log(this.mapList)
}
// }
// //游戏结束
// async gameOver() {
// this.removeEventListener(FYGE.Event.ENTER_FRAME, this.onFarm, this);
// this.removeWorld()
// let startInfo = getWebData(WebNetName.startGame).data.currInfo
// let timestamp = new Date().getTime()
// //签名方式: md5(score=分值&startId=游戏开始id&timestamp=timestamp&key=key)
// //其中key的值为开始游戏接口里返回的key+固定值9ef16b33920749fb26e8fc2f2913150a, 例如1234569ef16b33920749fb26e8fc2f2913150a
// let sign = duiba_md5(`score=${this.score}&startId=${startInfo.startId}&timestamp=${timestamp}&key=${startInfo.key + "9ef16b33920749fb26e8fc2f2913150a"}`)
// const { success, data, message } = await sendWebNet(WebNetName.submitGame, { score: this.score, sign: sign, code: startInfo.code, timestamp: timestamp ,startId:startInfo.startId})
// this._role.die(() => {
// this.bgCon.removeChildren()
// this.bgCon.y = 0
// if (!success) {
// showToast(message || "网络异常,请重试~")
// changeScene(StartScene)
// return
// }
// if (data.pass) {
// showPanel(SuccessPanel)
// } else {
// showPanel(FailPanel)
// }
// })
// }
initEvents() {
super.initEvents();
// this.left.addEventListener(FYGE.MouseEvent.CLICK, () => {
......
......@@ -5,12 +5,15 @@ export default class Role extends FYGE.Container {
public phyBody: Matter.Body;
roleImg: FYGE.Sprite;
beforeY = 0;
direction = 'down';
waittingSvga;
// direction = 'down';
direction;
jumpSvga;
downSvga;
currentIndex = -2;
position;
item
constructor() {
constructor(data?) {
super();
let roleImg = this.roleImg = new FYGE.Sprite();
......@@ -30,7 +33,6 @@ export default class Role extends FYGE.Container {
// },
// this
// );
}
async getSvga(){
this.jumpSvga = new FYGE.SvgaAni(await RES.getResAsync("jumppeo.svga"));
......@@ -60,50 +62,70 @@ export default class Role extends FYGE.Container {
}
leftMove(){
if (this.currentIndex%2 == 0) {
console.log('左移动')
this.direction = 'left'
Matter.Body.applyForce(this.phyBody, this.phyBody.position, {
x: 0.1,
y: 0
});
}
}
rightMove(){
if (this.currentIndex%2 == 1) {
this.direction = 'right'
Matter.Body.applyForce(this.phyBody, this.phyBody.position, {
x: -0.1,
y: 0
});
}
}
/** 根据物理刚体,更新当前的坐标。 */
private onFarm() {
if(this.beforeY){
if( this.beforeY >this.phyBody.position.y ){
if (this.direction == 'left') {
console.log('----')
Matter.Body.setPosition( this.phyBody, {
x:this.phyBody.position.x - 1,
y:this.phyBody.position.y - 1
})
this.position.set(this.phyBody.position.x,this.phyBody.position.y)
// this.downSvga.position.set(1, 1000)
// this.jumpSvga.position.set(1, 1000)
} else {
this.direction = 'up'
}
// console.log("this.beforeY", this.beforeY)
// if(this.beforeY){
// if( this.beforeY >this.phyBody.position.y ){
if( this.beforeY < this.phyBody.position.y ){
// this.direction = 'up'
// }
this.direction = 'down'
}
}
// if( this.beforeY < this.phyBody.position.y ){
if(this.phyBody.position.x > 750){
Matter.Body.setPosition( this.phyBody, {
x:0,
y:this.phyBody.position.y
})
// this.direction = 'down'
// }
// }
}else if(this.phyBody.position.x<0){
Matter.Body.setPosition( this.phyBody, {
x:750,
y:this.phyBody.position.y
})
}else{
this.x = this.phyBody.position.x;
this.y = this.phyBody.position.y;
}
// if(this.phyBody.position.x > 750){
// Matter.Body.setPosition( this.phyBody, {
// x:0,
// y:this.phyBody.position.y
// })
this.beforeY = this.phyBody.position.y;
// }else if(this.phyBody.position.x<0){
// Matter.Body.setPosition( this.phyBody, {
// x:750,
// y:this.phyBody.position.y
// })
// }else{
// this.x = this.phyBody.position.x;
// this.y = this.phyBody.position.y;
// }
// this.beforeY = this.phyBody.position.y;
}
......@@ -138,13 +160,13 @@ export default class Role extends FYGE.Container {
}
jump() {
if( this.direction == 'up'){return};
setTimeout(()=>{
Matter.Body.applyForce(this.phyBody, this.phyBody.position, {
x: 0,
y: -1.2
});
})
// if( this.direction == 'up'){return};
// setTimeout(()=>{
// Matter.Body.applyForce(this.phyBody, this.phyBody.position, {
// x: 0,
// y: -1.2
// });
// })
}
onMouseDown(e) {
......
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