Browse Source

fix:修复分数与次数不对应的bug

master
wally 4 years ago
parent
commit
2097fa8f90
  1. 2
      public/index.html
  2. 10
      src/frame.js
  3. 27
      src/message.js

2
public/index.html

@ -12,7 +12,7 @@
<div class="float-start events"> <div class="float-start events">
<button type="button" class="btn btn-primary btn-sm" data-event="start" id="start">开始</button> <button type="button" class="btn btn-primary btn-sm" data-event="start" id="start">开始</button>
<button type="button" class="btn btn-warning btn-sm d-none" id="pause" data-event="pause" data-status="0">暂停</button> <button type="button" class="btn btn-warning btn-sm d-none" id="pause" data-event="pause" data-status="0">暂停</button>
<button type="button" class="btn btn-danger btn-sm d-none" id="finish" data-event="finish">结束</button> <!-- <button type="button" class="btn btn-danger btn-sm d-none" id="finish" data-event="finish">结束</button> -->
</div> </div>
<div class="float-end actions d-none" id="action-container"> <div class="float-end actions d-none" id="action-container">
动作: 动作:

10
src/frame.js

@ -1,6 +1,7 @@
import { game } from './config';
import { creatData } from './message';
import { changeButtonsDisplay, setPauseButtonStatus } from './dom'; import { changeButtonsDisplay, setPauseButtonStatus } from './dom';
import { creatData, onPlayMessage } from './message';
import { game } from './config';
let frame = document.getElementById('iframe'); let frame = document.getElementById('iframe');
let contentWindow = frame.contentWindow; let contentWindow = frame.contentWindow;
@ -15,7 +16,7 @@ export function setFrameStyle() {
// 收到消息 // 收到消息
export function onMessage() { export function onMessage() {
window.addEventListener('message', function(e) { window.addEventListener('message', function(e) {
console.log(e); console.log('父-接受:', e.data);
// if (e.source !== frame.src) return; // 来源 // if (e.source !== frame.src) return; // 来源
const { event } = e.data; const { event } = e.data;
@ -26,6 +27,9 @@ export function onMessage() {
if (event === 'pause' || event === 'continue') { // 暂停 if (event === 'pause' || event === 'continue') { // 暂停
setPauseButtonStatus(event === 'pause' ? 0 : 1); setPauseButtonStatus(event === 'pause' ? 0 : 1);
} }
if (event === 'play') {
onPlayMessage(e.data.data);
}
}, false); }, false);
} }

27
src/message.js

@ -1,4 +1,5 @@
import { game } from './config'; import { game } from './config';
const { count, game: gameDuration, level, scores, directions, totalScore, totalTimes } = game; const { count, game: gameDuration, level, scores, directions, totalScore, totalTimes } = game;
let currentScore = 0; // 当前得分 let currentScore = 0; // 当前得分
@ -74,17 +75,17 @@ const createFinishData = (score=currentScore, times=currentTimes) => {
const createPlayData = (direction= 0) => { const createPlayData = (direction= 0) => {
let data = null; let data = null;
if (validatePlayCode(direction, currentTimes)) { // 动作正确 if (validatePlayCode(direction, currentTimes)) { // 动作正确
currentTimes += 1; // currentTimes += 1;
const directionTarget = scores.find(item => item.direction === direction); // const directionTarget = scores.find(item => item.direction === direction);
if (!directionTarget) { // if (!directionTarget) {
alert('配置信息有误, 未找到事件分值') // alert('配置信息有误, 未找到事件分值')
} // }
currentScore += directionTarget.score // currentScore += directionTarget.score
data = { data = {
event: "play", event: "play",
data: { data: {
score: currentScore, // 得分 // score: currentScore, // 得分
times: currentTimes, // 次数 // times: currentTimes, // 次数
status: 1, // 游戏状态 0 1 2 status: 1, // 游戏状态 0 1 2
param: { param: {
direction, // 0 1 2 3 4 5 共6中事件参数 direction, // 0 1 2 3 4 5 共6中事件参数
@ -123,6 +124,16 @@ export const creatData = (eventType, ...args) => {
return data; return data;
} }
/**
* 接受play消息 并设置当前动作执行次数与分值
* 也就是说分值 次数由游戏来维护
* @param {*} data
*/
export function onPlayMessage(data) {
currentTimes = data.currentTimes;
currentScore = data.currentScore;
}
/** /**
* 验证code是否是当前应该执行的动作代码 * 验证code是否是当前应该执行的动作代码
* @param code * @param code

Loading…
Cancel
Save