Browse Source

init

master
wally 4 years ago
parent
commit
d97b11a6a1
  1. 7
      .gitignore
  2. 0
      .idea/.gitignore
  3. 13
      .idea/game-frame-template.iml
  4. 7
      .idea/jsLibraryMappings.xml
  5. 6
      .idea/misc.xml
  6. 8
      .idea/modules.xml
  7. 6
      .idea/vcs.xml
  8. 24
      package.json
  9. 30
      public/index.html
  10. 4
      src/config.js
  11. 29
      src/frame.js
  12. 9
      src/index.js
  13. 0
      src/message.js
  14. 22
      webpack.config.js

7
.gitignore

@ -114,7 +114,8 @@ dist
.LSOverride
# Icon must end with two \r
Icon
Icon
# Thumbnails
._*
@ -208,3 +209,7 @@ fabric.properties
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
package-lock.json
yarn.lock
dist

0
.idea/.gitignore

13
.idea/game-frame-template.iml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="bootstrap" level="application" />
</component>
</module>

7
.idea/jsLibraryMappings.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<file url="PROJECT" libraries="{bootstrap}" />
<includedPredefinedLibrary name="Node.js Core" />
</component>
</project>

6
.idea/misc.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="WebPackConfiguration">
<option name="mode" value="DISABLED" />
</component>
</project>

8
.idea/modules.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/game-frame-template.iml" filepath="$PROJECT_DIR$/.idea/game-frame-template.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

24
package.json

@ -0,0 +1,24 @@
{
"name": "game-frame-template",
"version": "1.0.0",
"description": "游戏父窗口模板",
"main": "webpack.config.js",
"dependencies": {},
"devDependencies": {
"html-webpack-plugin": "^5.3.2",
"webpack": "^5.54.0",
"webpack-cli": "^4.8.0",
"webpack-dev-server": "^4.3.0"
},
"scripts": {
"build": "webpack",
"dev": "webpack serve --mode development"
},
"repository": {
"type": "git",
"url": "gitea@dd.tall.wiki:ccsens_fe/game-frame-template.git"
},
"keywords": [],
"author": "",
"license": "ISC"
}

30
public/index.html

@ -0,0 +1,30 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title><%= htmlWebpackPlugin.options.title %></title>
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container p-3 clearfix">
<div class="float-start events">
<button type="button" class="btn btn-primary btn-sm" data-event="start">开始</button>
<button type="button" class="btn btn-secondary btn-sm" data-event="pause">暂停</button>
<button type="button" class="btn btn-danger btn-sm" data-event="finish">结束</button>
</div>
<div class="float-end actions">
动作:
<button type="button" class="btn btn-outline-primary btn-sm" data-action="0">0</button>
<button type="button" class="btn btn-outline-secondary btn-sm" data-action="1">1</button>
<button type="button" class="btn btn-outline-success btn-sm" data-action="2">2</button>
<button type="button" class="btn btn-outline-danger btn-sm" data-action="3">3</button>
<button type="button" class="btn btn-outline-warning btn-sm" data-action="4">4</button>
<button type="button" class="btn btn-outline-info btn-sm" data-action="5">5</button>
</div>
</div>
<hr />
<iframe id="iframe" src="http://localhost:5500/dist/" frameborder="0" class="d-block"></iframe>
</body>
</html>

4
src/config.js

@ -0,0 +1,4 @@
export const game = {
width: 1068,
height: 600
}

29
src/frame.js

@ -0,0 +1,29 @@
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.height / game.width) + 'px';
}
export function handleEventButtons() {
const eventButtons = document.querySelectorAll('div.events button');
eventButtons.forEach(item => {
item.addEventListener('click', function () {
sendMessage(item.dataset.event);
})
})
}
/**
* 发送消息
* @param {string} type 消息类型
*/
function sendMessage(type) {
contentWindow.postMessage({ event: 'start' }, frame.src);
}

9
src/index.js

@ -0,0 +1,9 @@
import {handleEventButtons, setFrameStyle} from "./frame";
window.addEventListener('load', init, false)
window.addEventListener('resize', setFrameStyle, false)
function init() {
setFrameStyle();
handleEventButtons();
}

0
src/message.js

22
webpack.config.js

@ -0,0 +1,22 @@
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/index.js',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist')
},
devServer: {
port: 6001,
hot: true
},
plugins: [
new HtmlWebpackPlugin({
title: '游戏窗体模板',
template: 'public/index.html',
inject: 'body',
})
],
}
Loading…
Cancel
Save