游戏父窗口模板
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

47 lines
1.5 KiB

import { changeButtonsDisplay, setPauseButtonStatus } from './dom';
import { creatData, onPlayMessage } from './message';
import { game } from './config';
let frame = document.getElementById('iframe');
let contentWindow = frame.contentWindow;
// 设置iframe框架的样式
export function setFrameStyle() {
const html = document.documentElement;
frame.style.width = html.clientWidth + 'px';
frame.style.height = Math.round(html.clientWidth * game.frame.height / game.frame.width) + 'px';
}
// 收到消息
export function onMessage() {
window.addEventListener('message', function(e) {
console.log('父-接受:', e.data);
// if (e.source !== frame.src) return; // 来源
const { event } = e.data;
if (event === 'pause' || event === 'continue' || event === 'finish') { // 暂停
sendMessage(event);
changeButtonsDisplay(event); // DEBUG: 改变按钮状态 正式使用不需要的话 就删除掉
}
if (event === 'pause' || event === 'continue') { // 暂停
setPauseButtonStatus(event === 'pause' ? 0 : 1);
}
if (event === 'play') {
onPlayMessage(e.data.data);
}
}, false);
}
/**
* 发送消息
* @param {string} type 消息类型
*/
export function sendMessage(type, ...args) {
const data = creatData(type, ...args);
if (!data) {
return console.error('错误: 发送消息数据为空'); // DEBUG:
}
contentWindow.postMessage(data, frame.src);
}