/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./src/adpater.ts": /*!************************!*\ !*** ./src/adpater.ts ***! \************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * 对h5和wx进行兼容处理 */ __webpack_require__(/*! ./weapp-adapter */ "./src/weapp-adapter.js"); let iswx = false; if (!window || window.hasOwnProperty('wx')) { iswx = true; } let isMobile = true; if (navigator.userAgent.indexOf('Mobile') == -1) { isMobile = false; } let events = {}; const adapter = { // showShareMenu: () => { }, createCanvas: () => { if (iswx) { return window['canvas']; //全局创建的canvas } else { let canvas = document.createElement('canvas'); canvas.height = document.documentElement.clientHeight; canvas.width = document.documentElement.clientWidth; canvas.style.position = 'absolute'; canvas.style.top = "0"; canvas.style.left = "0"; document.body.append(canvas); return canvas; } }, eventMap: { touchstart: 'click', touchmove: 'mousemove' }, wrapEventType(type) { if (isMobile) { return type; } else { return this.eventMap[type] || type; } }, addEventListener(target, type, listener) { // console.log(777) if (iswx) { target.addEventListener(type, listener); } else { type = this.wrapEventType(type); if (!events[type]) { events[type] = []; target.addEventListener(type, this.handle.call(this, type), false); } events[type].push(listener); } }, handle(type) { return (event) => { let listeners = events[type]; console.log(3333, listeners); for (var i = 0; i < listeners.length; i++) { if (!isMobile) { event.touches = [event]; } listeners[i](event); } }; }, removeEventListener(target, type, listener) { if (iswx) { target.removeEventListener(type, listener); } else { type = this.wrapEventType(type); var listeners = events[type]; if (listeners && listeners.length > 0) { for (var i = listeners.length; i--; i > 0) { if (listeners[i] === listener) { listeners.splice(i, 1); break; } } } if (listeners == 0 || !listener) { console.log(4444); events[type] = []; // target.removeEventListener(type, this.handle(type), false); } } }, dispatchEvent(target, event) { if (iswx) { target.dispatchEvent(event); } else { let type = event.type; var listeners = events[type]; if (listeners) { for (var i = 0; i < listeners.length; i++) { listeners[i](event); } } } } // createImage() { // let img = new Image(); // return img; // }, // createInnerAudioContext() { // let audio = new Audio(); // let f = null; // let newProps = { // onCanplay(t) { // f = t; // } // } // audio.oncanplay = (e) => { // f(); // } // return Object.assign(audio, newProps) // } }; exports.default = adapter; /***/ }), /***/ "./src/control.ts": /*!************************!*\ !*** ./src/control.ts ***! \************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); //操作界面 class Control { constructor() { this.rect = [160, 160]; this.moveRect = [50, 50]; this.elemPosition = [10, 10]; this.angle = 0; //角度 } create() { this.elem = document.createElement('div'); this.elem.className = "control"; this.elem.style.position = 'absolute'; this.elem.style.width = this.rect[0] + 'px'; this.elem.style.height = this.rect[1] + 'px'; this.elem.style.left = this.elemPosition[0] + '%'; this.elem.style.bottom = this.elemPosition[1] + '%'; this.moveElem = document.createElement('div'); this.moveElem.className = 'move'; this.moveElem.style.position = 'absolute'; this.moveElem.style.width = this.moveRect[0] + 'px'; this.moveElem.style.height = this.moveRect[1] + 'px'; this.elem.appendChild(this.moveElem); this.moveCenter = this.moveRect.map(function (d) { return d / 2; }); this.elemCenter = this.rect.map(function (d) { return d / 2; }); this.resetPos(); this.bindEvent(); return this.elem; } resetPos() { //重置位置 // console.log(this.moveCenter) this.toPosition = [0, 0]; this.transPosition(); } //传入圆心转换成坐标, transPosition() { let x = (this.elemCenter[0] - this.moveCenter[0]) + this.toPosition[0]; let y = (this.elemCenter[1] - this.moveCenter[1]) - this.toPosition[1]; this.moveElem.style.left = x + 'px'; this.moveElem.style.top = y + 'px'; } bindEvent() { this.elem.addEventListener('touchstart', function (event) { let epos = event.touches[0] || event; this.setPosition(epos); }.bind(this), false); this.elem.addEventListener('touchmove', function (event) { let epos = event.touches[0] || event; this.setPosition(epos); }.bind(this), false); this.elem.addEventListener('touchend', function (event) { this.resetPos(); }.bind(this), false); } // 计算边界值,设置位置 setPosition(epos) { this.position = [this.elem.offsetLeft, this.elem.offsetTop]; let x = epos.pageX - this.position[0]; let y = epos.pageY - this.position[1]; // x= Math.min (x,this.rect[0]-this.moveCenter[0]); // x = Math.max(x,this.moveCenter[0]) let x1 = (x - this.elemCenter[0]); //相对于圆点的位置 let y1 = -(y - this.elemCenter[1]); console.log(x1, y1); let ang = Math.atan2(y1, x1); // this.angle = ang; // console.log('角度:'+ang) let c = Math.sqrt(x1 * x1 + y1 * y1); let r = this.elemCenter[0] - this.moveCenter[0]; //最长半径 if (c > r) { // console.log('out', c) let x2 = Math.cos(ang) * r; let y2 = Math.sin(ang) * r; //下面是另一种算法 // y2=y1*r/c; // x2= x1*r/c; // console.log('xy:', x1, y1) // console.log('x2y2:',x2, y2) x1 = x2; y1 = y2; } this.toPosition = [x1, y1]; this.transPosition(); } getAngle() { // console.log(this.toPosition) this.angle = Math.atan2(this.toPosition[1], this.toPosition[0]); return this.angle; } //获取到角度 remove() { this.elem.parentNode.removeChild(this.elem); } } exports.default = Control; /***/ }), /***/ "./src/descript.ts": /*!*************************!*\ !*** ./src/descript.ts ***! \*************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); //描述设计 class Descript { constructor(stage) { this.stage = stage; console.log(arguments); } create(resolve) { this.stage.canvas.addEventListener('touchstart', () => { console.log('touch...'); // this.stage.canvas.removeEventListener('touchstart'); resolve(); }); } remove() { this.stage.clear(); } } exports.default = Descript; /***/ }), /***/ "./src/gameOver.ts": /*!*************************!*\ !*** ./src/gameOver.ts ***! \*************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class GameOver { constructor(btntitle) { this.btntitle = btntitle; } create(callback, text = '') { this.elem = document.createElement('div'); this.elem.className = 'gameOver'; this.textElem = document.createElement('div'); this.textElem.className = 'text'; this.textElem.innerHTML = text; this.elem.appendChild(this.textElem); let btn = document.createElement('button'); btn.className = "button"; btn.innerText = this.btntitle; btn.addEventListener('touchstart', function (event) { callback.call(this); }.bind(this), false); // btn.onclick = callback.bind(this); this.elem.appendChild(btn); return this.elem; } setText(text = '') { this.textElem.innerHTML = text; } remove() { this.elem.parentNode.removeChild(this.elem); } } exports.default = GameOver; /***/ }), /***/ "./src/index.ts": /*!**********************!*\ !*** ./src/index.ts ***! \**********************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const jy_1 = __webpack_require__(/*! ./jy */ "./src/jy.ts"); exports.JY = jy_1.default; exports.STATE = jy_1.STATE; const control_1 = __webpack_require__(/*! ./control */ "./src/control.ts"); exports.Control = control_1.default; const descript_1 = __webpack_require__(/*! ./descript */ "./src/descript.ts"); exports.Descript = descript_1.default; const gameOver_1 = __webpack_require__(/*! ./gameOver */ "./src/gameOver.ts"); exports.GameOver = gameOver_1.default; const sprite_1 = __webpack_require__(/*! ./sprite */ "./src/sprite.ts"); exports.Sprite = sprite_1.default; const stage_1 = __webpack_require__(/*! ./stage */ "./src/stage.ts"); exports.Stage = stage_1.default; const title_1 = __webpack_require__(/*! ./title */ "./src/title.ts"); exports.Title = title_1.default; const lib_1 = __webpack_require__(/*! ../src/lib */ "./src/lib.ts"); exports.lib = lib_1.default; /***/ }), /***/ "./src/jy.ts": /*!*******************!*\ !*** ./src/jy.ts ***! \*******************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); /* /// /// /// /// /// /// */ const sprite_1 = __webpack_require__(/*! ./sprite */ "./src/sprite.ts"); const lib_1 = __webpack_require__(/*! ./lib */ "./src/lib.ts"); __webpack_require__(/*! ./adpater */ "./src/adpater.ts"); //游戏主框架 var STATE; (function (STATE) { STATE[STATE["loading"] = 0] = "loading"; STATE[STATE["title"] = 1] = "title"; STATE[STATE["descript"] = 2] = "descript"; STATE[STATE["newGame"] = 3] = "newGame"; STATE[STATE["running"] = 4] = "running"; STATE[STATE["gameOver"] = 5] = "gameOver"; })(STATE = exports.STATE || (exports.STATE = {})); class JY { constructor(stage, titleStage, descriptStage, gameOverStage, controlStage) { this.stage = stage; this.titleStage = titleStage; this.descriptStage = descriptStage; this.gameOverStage = gameOverStage; this.controlStage = controlStage; this.func = new Function; this.ispause = false; //是否处于暂停状态 this.interval = 10; this.resources = []; this.context = stage.context; // this.setup(); } setup() { this.stage.draw(); this.currentState = STATE.loading; this.setState(STATE.loading); this.loop(); } // 实现游戏帧循环 loop() { return __awaiter(this, void 0, void 0, function* () { if (!this.ispause) { yield this.func(); } this.aniId = requestAnimationFrame(this.loop.bind(this)); }); } createControl() { } //新的开始 newGame() { //游戏开始,清空场景 //打开计时器 this.setState(STATE.running); } //结束 over() { this.setState(STATE.gameOver); } //暂停 pause() { this.ispause = true; window.cancelAnimationFrame(this.aniId); } //暂停后的继续 play() { this.ispause = false; this.loop(); } //游戏结束 gameOver() { //游戏结束 //清空场景,显示结果 console.log('gameOver'); this.stage.clear(); this.showGameOver(); } //结束画面 showGameOver() { return __awaiter(this, void 0, void 0, function* () { console.log('game over...'); yield lib_1.default.waitMoment(3000); }); } //游戏中的 running() { console.log('running...'); } loading() { return __awaiter(this, void 0, void 0, function* () { console.log('loading....'); yield this.showLoading(); console.log('loading end...'); this.setState(STATE.title); }); } showLoading() { lib_1.default.write(this.stage, '正在加载中'); return lib_1.default.loadResources(this.resources); } title() { return __awaiter(this, void 0, void 0, function* () { console.log('title....'); yield this.showTitle(); this.setState(STATE.descript); }); } showTitle() { // this.titleStage.create() // return lib.waitMoment(3000); return new Promise(resolve => { this.titleStage.create(resolve); }); } descript() { return __awaiter(this, void 0, void 0, function* () { console.log('descript...'); yield this.showDescript(); this.setState(STATE.newGame); }); } showDescript() { return new Promise(resolve => { this.descriptStage.create(resolve); }); // return lib.waitMoment(3000); } proxy(stageFunc) { this.stage.clear(); return stageFunc.bind(this); } //检查状态 checkState() { switch (this.currentState) { case STATE.loading: this.func = this.proxy(this.loading); break; case STATE.title: this.func = this.proxy(this.title); break; case STATE.descript: this.func = this.proxy(this.descript); break; case STATE.newGame: this.func = this.proxy(this.newGame); break; case STATE.running: this.func = this.proxy(this.running); break; case STATE.gameOver: this.func = this.proxy(this.gameOver); default: break; } } setState(state) { this.currentState = state; this.checkState(); // this.func(); } //碰撞检测 hits(oA, oB) { var bx = false, by = false; if (oA.type == sprite_1.SHAPE.rect) { var bw = oB.width; var aw = oA.width; var bh = oB.height; var ah = oA.height; if (oA.x > oB.x) { bx = oA.x - oB.x < bw; } else if (oA.x < oB.x) { bx = oB.x - oA.x < aw; } else { bx = true; } ; if (oA.y > oB.y) { by = oA.y - oB.y < bh; } else if (oA.y < oB.y) { by = oB.y - oA.y < ah; } else { by = true; } ; return (bx && by); } else if (oA.type == sprite_1.SHAPE.circle) { var r2 = oA.r + oB.r; let oAc = oA.getCenter(); let oBc = oB.getCenter(); bx = Math.abs(oAc[0] - oBc[0]) < r2; by = Math.abs(oAc[1] - oBc[1]) < r2; return (bx && by); } } } exports.default = JY; /***/ }), /***/ "./src/lib.ts": /*!********************!*\ !*** ./src/lib.ts ***! \********************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const adpater_1 = __webpack_require__(/*! ./adpater */ "./src/adpater.ts"); const lib = { //暂停一段时间 waitMoment(second) { return __awaiter(this, void 0, void 0, function* () { return new Promise(resolve => { let t = setTimeout(() => { clearTimeout(t); resolve(); }, second); }); }); }, //显示文字 write(stage, text, x, y, font = "20px Arial", fillStyle = '#000000', w = stage.width) { let context = stage.context; context.font = font; context.fillStyle = fillStyle; if (x == undefined) { x = (stage.width - text.length * 14) / 2; } if (y == undefined) { y = stage.height / 2 - 15; } // console.log(text) var chr = String(text).split(""); var temp = ""; var row = []; for (var a = 0; a < chr.length; a++) { if (context.measureText(temp).width < w && context.measureText(temp + (chr[a])).width <= w) { temp += chr[a]; } //context.measureText(text).width 测量文本text的宽度 else { row.push(temp); temp = chr[a]; } } row.push(temp); for (var b = 0; b < row.length; b++) { context.fillText(row[b], x, y + (b + 1) * 24); //字体20,间隔24。类似行高 } }, //导入图片 draw(stage, img, dx, dy, dWidth, dHeight, sx, sy, sWidth, sHeight) { let context = stage.context; // let image = wx.createImage(); let image = this.caches[img]; let args = Array.prototype.slice.call(arguments, 2); args.unshift(image); // console.log('draw', img) // image.onload = ()=>{ // context.drawImage.call(context,...args); // } // image.src = img; context.drawImage.call(context, ...args); }, //取区间数的随机值 random(min, max) { return Math.floor(Math.random() * (max - min) + min); }, caches: {}, loadResources(files) { // let cache = {}; let arr = []; return new Promise((resolve, reject) => { for (let k in files) { if (/\.(jpg|gif|png|bmg|jpeg)/.test(files[k])) { //图片的预加载 arr.push(new Promise(resolve => { let image = new Image(); image.onload = () => { this.caches[files[k]] = image; resolve(); }; image.src = files[k]; })); } else if (/\.(mp3|wav|avi|m4a|aac)/.test(files[k])) { //音频 arr.push(new Promise(resolve => { let audio = new Audio(); audio.addEventListener('canplay', () => { this.caches[files[k]] = audio; resolve(); }); audio.src = files[k]; // console.log(2222) })); } } return Promise.all(arr).catch((e) => { console.log('加载资源出错.'); reject(e); }).then(() => { console.log('加载资源完成.'); resolve(); }); }); }, play(url) { //播放声音 let audio = this.caches[url]; audio.pause(); audio.currentTime = 0; audio.play(); }, createCanvas() { return adpater_1.default.createCanvas(); }, addEventListener(target, type, handle) { return adpater_1.default.addEventListener(target, type, handle); }, removeEventListener(target, type, handle) { return adpater_1.default.removeEventListener(target, type, handle); }, dispatchEvent(target, type) { return adpater_1.default.dispatchEvent(target, type); } }; let events = ['createCanvas', 'addEventListener', 'removeEventListener', 'dispatchEvent']; events.forEach(item => { lib[item] = adpater_1.default[item].bind(adpater_1.default); }); exports.default = lib; /***/ }), /***/ "./src/sprite.ts": /*!***********************!*\ !*** ./src/sprite.ts ***! \***********************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lib_1 = __webpack_require__(/*! ./lib */ "./src/lib.ts"); //sprite //形状 var SHAPE; (function (SHAPE) { SHAPE[SHAPE["rect"] = 0] = "rect"; SHAPE[SHAPE["circle"] = 1] = "circle"; SHAPE[SHAPE["text"] = 2] = "text"; //文本 })(SHAPE = exports.SHAPE || (exports.SHAPE = {})); /** * 游戏基础的精灵类 */ class Sprite { constructor(stage, type = SHAPE.rect, content = '', width = 0, height = 0, x = 0, y = 0) { this.stage = stage; this.type = type; this.content = content; // type: SHAPE = SHAPE.rect; this.r = 0; //半径 this.width = width; this.height = height; this.x = x; this.y = y; this.visible = true; } /** * 将精灵图绘制在canvas上 */ draw() { if (!this.visible) return; if (this.type === SHAPE.text) { lib_1.default.write(this.stage, this.content.text, this.x, this.y, this.content.font, this.content.fillStyle); } else { lib_1.default.draw(this.stage, this.content, this.x, this.y, this.width, this.height); } } /** * 简单的碰撞检测定义: * 另一个精灵的中心点处于本精灵所在的矩形内即可 * @param{Sprite} sp: Sptite的实例 */ hits(sp) { let spX = sp.x + sp.width / 2; let spY = sp.y + sp.height / 2; if (!this.visible || !sp.visible) return false; return !!(spX >= this.x && spX <= this.x + this.width && spY >= this.y && spY <= this.y + this.height); } touchHits(e, callback) { let touch = e.touches[0]; if (this.hits({ x: touch.clientX, y: touch.clientY, width: 0, height: 0, visible: true })) { callback && callback.call(this); } } getCenter() { //圆心位置 return [this.x + this.r, this.y + this.r]; } } exports.default = Sprite; /***/ }), /***/ "./src/stage.ts": /*!**********************!*\ !*** ./src/stage.ts ***! \**********************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class Stage { constructor(canvas, width, height, style) { this.canvas = canvas; this.width = width; this.height = height; this.style = style; this.context = canvas.getContext('2d'); } draw(style) { this.context.fillStyle = this.style; this.context.fillRect(0, 0, this.width, this.height); } //清空布景 clear() { this.context.clearRect(0, 0, this.width, this.height); this.draw(); } } exports.default = Stage; /***/ }), /***/ "./src/title.ts": /*!**********************!*\ !*** ./src/title.ts ***! \**********************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lib_1 = __webpack_require__(/*! ./lib */ "./src/lib.ts"); class Title { constructor(title, stage) { this.title = title; this.stage = stage; // console.log(arguments) } create(resolve) { lib_1.default.write(this.stage, this.title); lib_1.default.waitMoment(3000); resolve(); } remove() { this.stage.clear(); } } exports.default = Title; /***/ }), /***/ "./src/weapp-adapter.js": /*!******************************!*\ !*** ./src/weapp-adapter.js ***! \******************************/ /*! no static exports found */ /***/ (function(module, exports) { /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {} /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ } /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__) /******/ // Flag the module as loaded /******/ module.loaded = true /******/ // Return the exports of the module /******/ return module.exports /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules /******/ // expose the module cache /******/ __webpack_require__.c = installedModules /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "" /******/ // Load entry module and return exports /******/ return __webpack_require__(0) /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' if (!window['wx']) { return {}; } var _window2 = __webpack_require__(1) var _window = _interopRequireWildcard(_window2) function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key] } } newObj.default = obj; return newObj } } var global = GameGlobal function inject() { _window.addEventListener = _window.canvas.addEventListener = function (type, listener) { _window.document.addEventListener(type, listener) } _window.removeEventListener = _window.canvas.removeEventListener = function (type, listener) { _window.document.removeEventListener(type, listener) } var _wx$getSystemInfoSync = wx.getSystemInfoSync(), platform = _wx$getSystemInfoSync.platform // 开发者工具无法重定义 window if (typeof __devtoolssubcontext === 'undefined' && platform === 'devtools') { for (var key in _window) { var descriptor = Object.getOwnPropertyDescriptor(global, key) if (!descriptor || descriptor.configurable === true) { Object.defineProperty(window, key, { value: _window[key] }) } } for (var _key in _window.document) { var _descriptor = Object.getOwnPropertyDescriptor(global.document, _key) if (!_descriptor || _descriptor.configurable === true) { Object.defineProperty(global.document, _key, { value: _window.document[_key] }) } } window.parent = window } else { for (var _key2 in _window) { global[_key2] = _window[_key2] } global.window = _window window = global window.top = window.parent = window } } if (!GameGlobal.__isAdapterInjected) { GameGlobal.__isAdapterInjected = true inject() } /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' if (!window['wx']) { return {}; } Object.defineProperty(exports, "__esModule", { value: true }) exports.cancelAnimationFrame = exports.requestAnimationFrame = exports.clearInterval = exports.clearTimeout = exports.setInterval = exports.setTimeout = exports.canvas = exports.location = exports.localStorage = exports.HTMLElement = exports.FileReader = exports.Audio = exports.Image = exports.WebSocket = exports.XMLHttpRequest = exports.navigator = exports.document = undefined var _WindowProperties = __webpack_require__(2) Object.keys(_WindowProperties).forEach(function (key) { if (key === "default" || key === "__esModule") return Object.defineProperty(exports, key, { enumerable: true, get: function get() { return _WindowProperties[key] } }) }) var _constructor = __webpack_require__(3) Object.keys(_constructor).forEach(function (key) { if (key === "default" || key === "__esModule") return Object.defineProperty(exports, key, { enumerable: true, get: function get() { return _constructor[key] } }) }) var _Canvas = __webpack_require__(9) var _Canvas2 = _interopRequireDefault(_Canvas) var _document2 = __webpack_require__(10) var _document3 = _interopRequireDefault(_document2) var _navigator2 = __webpack_require__(17) var _navigator3 = _interopRequireDefault(_navigator2) var _XMLHttpRequest2 = __webpack_require__(18) var _XMLHttpRequest3 = _interopRequireDefault(_XMLHttpRequest2) var _WebSocket2 = __webpack_require__(19) var _WebSocket3 = _interopRequireDefault(_WebSocket2) var _Image2 = __webpack_require__(11) var _Image3 = _interopRequireDefault(_Image2) var _Audio2 = __webpack_require__(12) var _Audio3 = _interopRequireDefault(_Audio2) var _FileReader2 = __webpack_require__(20) var _FileReader3 = _interopRequireDefault(_FileReader2) var _HTMLElement2 = __webpack_require__(4) var _HTMLElement3 = _interopRequireDefault(_HTMLElement2) var _localStorage2 = __webpack_require__(21) var _localStorage3 = _interopRequireDefault(_localStorage2) var _location2 = __webpack_require__(22) var _location3 = _interopRequireDefault(_location2) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } exports.document = _document3.default exports.navigator = _navigator3.default exports.XMLHttpRequest = _XMLHttpRequest3.default exports.WebSocket = _WebSocket3.default exports.Image = _Image3.default exports.Audio = _Audio3.default exports.FileReader = _FileReader3.default exports.HTMLElement = _HTMLElement3.default exports.localStorage = _localStorage3.default exports.location = _location3.default // 暴露全局的 canvas var canvas = new _Canvas2.default() exports.canvas = canvas exports.setTimeout = setTimeout exports.setInterval = setInterval exports.clearTimeout = clearTimeout exports.clearInterval = clearInterval exports.requestAnimationFrame = requestAnimationFrame exports.cancelAnimationFrame = cancelAnimationFrame /***/ }), /* 2 */ /***/ (function(module, exports) { "use strict" Object.defineProperty(exports, "__esModule", { value: true }) var _wx$getSystemInfoSync = wx.getSystemInfoSync(), screenWidth = _wx$getSystemInfoSync.screenWidth, screenHeight = _wx$getSystemInfoSync.screenHeight, devicePixelRatio = _wx$getSystemInfoSync.devicePixelRatio var innerWidth = exports.innerWidth = screenWidth var innerHeight = exports.innerHeight = screenHeight exports.devicePixelRatio = devicePixelRatio var screen = exports.screen = { availWidth: innerWidth, availHeight: innerHeight } var performance = exports.performance = { now: function now() { return Date.now() / 1000 } } var ontouchstart = exports.ontouchstart = null var ontouchmove = exports.ontouchmove = null var ontouchend = exports.ontouchend = null /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) exports.HTMLCanvasElement = exports.HTMLImageElement = undefined var _HTMLElement3 = __webpack_require__(4) var _HTMLElement4 = _interopRequireDefault(_HTMLElement3) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass } var HTMLImageElement = exports.HTMLImageElement = function (_HTMLElement) { _inherits(HTMLImageElement, _HTMLElement) function HTMLImageElement() { _classCallCheck(this, HTMLImageElement) return _possibleConstructorReturn(this, (HTMLImageElement.__proto__ || Object.getPrototypeOf(HTMLImageElement)).call(this, 'img')) } return HTMLImageElement }(_HTMLElement4.default) var HTMLCanvasElement = exports.HTMLCanvasElement = function (_HTMLElement2) { _inherits(HTMLCanvasElement, _HTMLElement2) function HTMLCanvasElement() { _classCallCheck(this, HTMLCanvasElement) return _possibleConstructorReturn(this, (HTMLCanvasElement.__proto__ || Object.getPrototypeOf(HTMLCanvasElement)).call(this, 'canvas')) } return HTMLCanvasElement }(_HTMLElement4.default) /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }() var _Element2 = __webpack_require__(5) var _Element3 = _interopRequireDefault(_Element2) var _util = __webpack_require__(8) var _WindowProperties = __webpack_require__(2) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass } var HTMLElement = function (_Element) { _inherits(HTMLElement, _Element) function HTMLElement() { var tagName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '' _classCallCheck(this, HTMLElement) var _this = _possibleConstructorReturn(this, (HTMLElement.__proto__ || Object.getPrototypeOf(HTMLElement)).call(this)) _this.className = '' _this.childern = [] _this.style = { width: _WindowProperties.innerWidth + 'px', height: _WindowProperties.innerHeight + 'px' } _this.insertBefore = _util.noop _this.innerHTML = '' _this.tagName = tagName.toUpperCase() return _this } _createClass(HTMLElement, [{ key: 'setAttribute', value: function setAttribute(name, value) { this[name] = value } }, { key: 'getAttribute', value: function getAttribute(name) { return this[name] } }, { key: 'getBoundingClientRect', value: function getBoundingClientRect() { return { top: 0, left: 0, width: _WindowProperties.innerWidth, height: _WindowProperties.innerHeight } } }, { key: 'focus', value: function focus() {} }, { key: 'clientWidth', get: function get() { var ret = parseInt(this.style.fontSize, 10) * this.innerHTML.length return Number.isNaN(ret) ? 0 : ret } }, { key: 'clientHeight', get: function get() { var ret = parseInt(this.style.fontSize, 10) return Number.isNaN(ret) ? 0 : ret } }]) return HTMLElement }(_Element3.default) exports.default = HTMLElement /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _Node2 = __webpack_require__(6) var _Node3 = _interopRequireDefault(_Node2) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass } var ELement = function (_Node) { _inherits(ELement, _Node) function ELement() { _classCallCheck(this, ELement) var _this = _possibleConstructorReturn(this, (ELement.__proto__ || Object.getPrototypeOf(ELement)).call(this)) _this.className = '' _this.children = [] return _this } return ELement }(_Node3.default) exports.default = ELement /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }() var _EventTarget2 = __webpack_require__(7) var _EventTarget3 = _interopRequireDefault(_EventTarget2) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass } var Node = function (_EventTarget) { _inherits(Node, _EventTarget) function Node() { _classCallCheck(this, Node) var _this = _possibleConstructorReturn(this, (Node.__proto__ || Object.getPrototypeOf(Node)).call(this)) _this.childNodes = [] return _this } _createClass(Node, [{ key: 'appendChild', value: function appendChild(node) { if (node instanceof Node) { this.childNodes.push(node) } else { throw new TypeError('Failed to executed \'appendChild\' on \'Node\': parameter 1 is not of type \'Node\'.') } } }, { key: 'cloneNode', value: function cloneNode() { var copyNode = Object.create(this) Object.assign(copyNode, this) return copyNode } }, { key: 'removeChild', value: function removeChild(node) { var index = this.childNodes.findIndex(function (child) { return child === node }) if (index > -1) { return this.childNodes.splice(index, 1) } return null } }]) return Node }(_EventTarget3.default) exports.default = Node /***/ }), /* 7 */ /***/ (function(module, exports) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }() function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } var _events = new WeakMap() var EventTarget = function () { function EventTarget() { _classCallCheck(this, EventTarget) _events.set(this, {}) } _createClass(EventTarget, [{ key: 'addEventListener', value: function addEventListener(type, listener) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {} var events = _events.get(this) if (!events) { events = {} _events.set(this, events) } if (!events[type]) { events[type] = [] } events[type].push(listener) if (options.capture) { console.warn('EventTarget.addEventListener: options.capture is not implemented.') } if (options.once) { console.warn('EventTarget.addEventListener: options.once is not implemented.') } if (options.passive) { console.warn('EventTarget.addEventListener: options.passive is not implemented.') } } }, { key: 'removeEventListener', value: function removeEventListener(type, listener) { var listeners = _events.get(this)[type] if (listeners && listeners.length > 0) { for (var i = listeners.length; i--; i > 0) { if (listeners[i] === listener) { listeners.splice(i, 1) break } } } } }, { key: 'dispatchEvent', value: function dispatchEvent() { var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {} var listeners = _events.get(this)[event.type] if (listeners) { for (var i = 0; i < listeners.length; i++) { listeners[i](event) } } } }]) return EventTarget }() exports.default = EventTarget /***/ }), /* 8 */ /***/ (function(module, exports) { "use strict" Object.defineProperty(exports, "__esModule", { value: true }) exports.noop = noop function noop() {} /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) exports.default = Canvas var _constructor = __webpack_require__(3) var _HTMLElement = __webpack_require__(4) var _HTMLElement2 = _interopRequireDefault(_HTMLElement) var _document = __webpack_require__(10) var _document2 = _interopRequireDefault(_document) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } var hasModifiedCanvasPrototype = false var hasInit2DContextConstructor = false var hasInitWebGLContextConstructor = false function Canvas() { var canvas = wx.createCanvas() canvas.type = 'canvas' canvas.__proto__.__proto__ = new _HTMLElement2.default('canvas') var _getContext = canvas.getContext canvas.getBoundingClientRect = function () { var ret = { top: 0, left: 0, width: window.innerWidth, height: window.innerHeight } return ret } return canvas } /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _window = __webpack_require__(1) var window = _interopRequireWildcard(_window) var _HTMLElement = __webpack_require__(4) var _HTMLElement2 = _interopRequireDefault(_HTMLElement) var _Image = __webpack_require__(11) var _Image2 = _interopRequireDefault(_Image) var _Audio = __webpack_require__(12) var _Audio2 = _interopRequireDefault(_Audio) var _Canvas = __webpack_require__(9) var _Canvas2 = _interopRequireDefault(_Canvas) __webpack_require__(15) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key] } } newObj.default = obj; return newObj } } var events = {} var document = { readyState: 'complete', visibilityState: 'visible', documentElement: window, hidden: false, style: {}, location: window.location, ontouchstart: null, ontouchmove: null, ontouchend: null, head: new _HTMLElement2.default('head'), body: new _HTMLElement2.default('body'), createElement: function createElement(tagName) { if (tagName === 'canvas') { return new _Canvas2.default() } else if (tagName === 'audio') { return new _Audio2.default() } else if (tagName === 'img') { return new _Image2.default() } return new _HTMLElement2.default(tagName) }, getElementById: function getElementById(id) { if (id === window.canvas.id) { return window.canvas } return null }, getElementsByTagName: function getElementsByTagName(tagName) { if (tagName === 'head') { return [document.head] } else if (tagName === 'body') { return [document.body] } else if (tagName === 'canvas') { return [window.canvas] } return [] }, querySelector: function querySelector(query) { if (query === 'head') { return document.head } else if (query === 'body') { return document.body } else if (query === 'canvas') { return window.canvas } else if (query === '#' + window.canvas.id) { return window.canvas } return null }, querySelectorAll: function querySelectorAll(query) { if (query === 'head') { return [document.head] } else if (query === 'body') { return [document.body] } else if (query === 'canvas') { return [window.canvas] } return [] }, addEventListener: function addEventListener(type, listener) { if (!events[type]) { events[type] = [] } events[type].push(listener) }, removeEventListener: function removeEventListener(type, listener) { var listeners = events[type] if (listeners && listeners.length > 0) { for (var i = listeners.length; i--; i > 0) { if (listeners[i] === listener) { listeners.splice(i, 1) break } } } }, dispatchEvent: function dispatchEvent(event) { var listeners = events[event.type] if (listeners) { for (var i = 0; i < listeners.length; i++) { listeners[i](event) } } } } exports.default = document /***/ }), /* 11 */ /***/ (function(module, exports) { "use strict" Object.defineProperty(exports, "__esModule", { value: true }) exports.default = Image function Image() { var image = wx.createImage() return image } /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }() var _HTMLAudioElement2 = __webpack_require__(13) var _HTMLAudioElement3 = _interopRequireDefault(_HTMLAudioElement2) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass } var HAVE_NOTHING = 0 var HAVE_METADATA = 1 var HAVE_CURRENT_DATA = 2 var HAVE_FUTURE_DATA = 3 var HAVE_ENOUGH_DATA = 4 var _innerAudioContext = new WeakMap() var _src = new WeakMap() var _loop = new WeakMap() var _autoplay = new WeakMap() var Audio = function (_HTMLAudioElement) { _inherits(Audio, _HTMLAudioElement) function Audio(url) { _classCallCheck(this, Audio) var _this = _possibleConstructorReturn(this, (Audio.__proto__ || Object.getPrototypeOf(Audio)).call(this)) _this.HAVE_NOTHING = HAVE_NOTHING _this.HAVE_METADATA = HAVE_METADATA _this.HAVE_CURRENT_DATA = HAVE_CURRENT_DATA _this.HAVE_FUTURE_DATA = HAVE_FUTURE_DATA _this.HAVE_ENOUGH_DATA = HAVE_ENOUGH_DATA _this.readyState = HAVE_NOTHING _src.set(_this, '') var innerAudioContext = wx.createInnerAudioContext() _innerAudioContext.set(_this, innerAudioContext) innerAudioContext.onCanplay(function () { _this.dispatchEvent({ type: 'load' }) _this.dispatchEvent({ type: 'loadend' }) _this.dispatchEvent({ type: 'canplay' }) _this.dispatchEvent({ type: 'canplaythrough' }) _this.dispatchEvent({ type: 'loadedmetadata' }) _this.readyState = HAVE_CURRENT_DATA }) innerAudioContext.onPlay(function () { _this.dispatchEvent({ type: 'play' }) }) innerAudioContext.onPause(function () { _this.dispatchEvent({ type: 'pause' }) }) innerAudioContext.onEnded(function () { _this.dispatchEvent({ type: 'ended' }) _this.readyState = HAVE_ENOUGH_DATA }) innerAudioContext.onError(function () { _this.dispatchEvent({ type: 'error' }) }) if (url) { _innerAudioContext.get(_this).src = url } return _this } _createClass(Audio, [{ key: 'load', value: function load() { console.warn('HTMLAudioElement.load() is not implemented.') } }, { key: 'play', value: function play() { _innerAudioContext.get(this).play() } }, { key: 'pause', value: function pause() { _innerAudioContext.get(this).pause() } }, { key: 'canPlayType', value: function canPlayType() { var mediaType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '' if (typeof mediaType !== 'string') { return '' } if (mediaType.indexOf('audio/mpeg') > -1 || mediaType.indexOf('audio/mp4')) { return 'probably' } return '' } }, { key: 'cloneNode', value: function cloneNode() { var newAudio = new Audio() newAudio.loop = _innerAudioContext.get(this).loop newAudio.autoplay = _innerAudioContext.get(this).loop newAudio.src = this.src return newAudio } }, { key: 'currentTime', get: function get() { return _innerAudioContext.get(this).currentTime }, set: function set(value) { _innerAudioContext.get(this).seek(value) } }, { key: 'src', get: function get() { return _src.get(this) }, set: function set(value) { _src.set(this, value) _innerAudioContext.get(this).src = value } }, { key: 'loop', get: function get() { return _innerAudioContext.get(this).loop }, set: function set(value) { _innerAudioContext.get(this).loop = value } }, { key: 'autoplay', get: function get() { return _innerAudioContext.get(this).autoplay }, set: function set(value) { _innerAudioContext.get(this).autoplay = value } }, { key: 'paused', get: function get() { return _innerAudioContext.get(this).paused } }]) return Audio }(_HTMLAudioElement3.default) exports.default = Audio /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _HTMLMediaElement2 = __webpack_require__(14) var _HTMLMediaElement3 = _interopRequireDefault(_HTMLMediaElement2) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass } var HTMLAudioElement = function (_HTMLMediaElement) { _inherits(HTMLAudioElement, _HTMLMediaElement) function HTMLAudioElement() { _classCallCheck(this, HTMLAudioElement) return _possibleConstructorReturn(this, (HTMLAudioElement.__proto__ || Object.getPrototypeOf(HTMLAudioElement)).call(this, 'audio')) } return HTMLAudioElement }(_HTMLMediaElement3.default) exports.default = HTMLAudioElement /***/ }), /* 14 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }() var _HTMLElement2 = __webpack_require__(4) var _HTMLElement3 = _interopRequireDefault(_HTMLElement2) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass } var HTMLMediaElement = function (_HTMLElement) { _inherits(HTMLMediaElement, _HTMLElement) function HTMLMediaElement(type) { _classCallCheck(this, HTMLMediaElement) return _possibleConstructorReturn(this, (HTMLMediaElement.__proto__ || Object.getPrototypeOf(HTMLMediaElement)).call(this, type)) } _createClass(HTMLMediaElement, [{ key: 'addTextTrack', value: function addTextTrack() {} }, { key: 'captureStream', value: function captureStream() {} }, { key: 'fastSeek', value: function fastSeek() {} }, { key: 'load', value: function load() {} }, { key: 'pause', value: function pause() {} }, { key: 'play', value: function play() {} }]) return HTMLMediaElement }(_HTMLElement3.default) exports.default = HTMLMediaElement /***/ }), /* 15 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' __webpack_require__(16) /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' var _window = __webpack_require__(1) var window = _interopRequireWildcard(_window) var _document = __webpack_require__(10) var _document2 = _interopRequireDefault(_document) var _util = __webpack_require__(8) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key] } } newObj.default = obj; return newObj } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } var TouchEvent = function TouchEvent(type) { _classCallCheck(this, TouchEvent) this.target = window.canvas this.currentTarget = window.canvas this.touches = [] this.targetTouches = [] this.changedTouches = [] this.preventDefault = _util.noop this.stopPropagation = _util.noop this.type = type } function touchEventHandlerFactory(type) { return function (event) { var touchEvent = new TouchEvent(type) touchEvent.touches = event.touches touchEvent.targetTouches = Array.prototype.slice.call(event.touches) touchEvent.changedTouches = event.changedTouches touchEvent.timeStamp = event.timeStamp _document2.default.dispatchEvent(touchEvent) } } wx.onTouchStart(touchEventHandlerFactory('touchstart')) wx.onTouchMove(touchEventHandlerFactory('touchmove')) wx.onTouchEnd(touchEventHandlerFactory('touchend')) wx.onTouchCancel(touchEventHandlerFactory('touchcancel')) /***/ }), /* 17 */ /***/ (function(module, exports, __webpack_require__) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _util = __webpack_require__(8) // TODO 需要 wx.getSystemInfo 获取更详细信息 var _wx$getSystemInfoSync = wx.getSystemInfoSync(), platform = _wx$getSystemInfoSync.platform var navigator = { platform: platform, language: 'zh-cn', appVersion: '5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1', userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E8301 MicroMessenger/6.6.0 MiniGame NetType/WIFI Language/zh_CN', onLine: true, // TODO 用 wx.getNetworkStateChange 和 wx.onNetworkStateChange 来返回真实的状态 // TODO 用 wx.getLocation 来封装 geolocation geolocation: { getCurrentPosition: _util.noop, watchPosition: _util.noop, clearWatch: _util.noop } } exports.default = navigator /***/ }), /* 18 */ /***/ (function(module, exports) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }() function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } var _url = new WeakMap() var _method = new WeakMap() var _requestHeader = new WeakMap() var _responseHeader = new WeakMap() var _requestTask = new WeakMap() function _triggerEvent(type) { if (typeof this['on' + type] === 'function') { for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key] } this['on' + type].apply(this, args) } } function _changeReadyState(readyState) { this.readyState = readyState _triggerEvent.call(this, 'readystatechange') } var XMLHttpRequest = function () { // TODO 没法模拟 HEADERS_RECEIVED 和 LOADING 两个状态 function XMLHttpRequest() { _classCallCheck(this, XMLHttpRequest) this.onabort = null this.onerror = null this.onload = null this.onloadstart = null this.onprogress = null this.ontimeout = null this.onloadend = null this.onreadystatechange = null this.readyState = 0 this.response = null this.responseText = null this.responseType = '' this.responseXML = null this.status = 0 this.statusText = '' this.upload = {} this.withCredentials = false _requestHeader.set(this, { 'content-type': 'application/x-www-form-urlencoded' }) _responseHeader.set(this, {}) } /* * TODO 这一批事件应该是在 XMLHttpRequestEventTarget.prototype 上面的 */ _createClass(XMLHttpRequest, [{ key: 'abort', value: function abort() { var myRequestTask = _requestTask.get(this) if (myRequestTask) { myRequestTask.abort() } } }, { key: 'getAllResponseHeaders', value: function getAllResponseHeaders() { var responseHeader = _responseHeader.get(this) return Object.keys(responseHeader).map(function (header) { return header + ': ' + responseHeader[header] }).join('\n') } }, { key: 'getResponseHeader', value: function getResponseHeader(header) { return _responseHeader.get(this)[header] } }, { key: 'open', value: function open(method, url /* async, user, password 这几个参数在小程序内不支持*/) { _method.set(this, method) _url.set(this, url) _changeReadyState.call(this, XMLHttpRequest.OPENED) } }, { key: 'overrideMimeType', value: function overrideMimeType() {} }, { key: 'send', value: function send() { var _this = this var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '' if (this.readyState !== XMLHttpRequest.OPENED) { throw new Error("Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.") } else { wx.request({ data: data, url: _url.get(this), method: _method.get(this), header: _requestHeader.get(this), responseType: this.responseType, success: function success(_ref) { var data = _ref.data, statusCode = _ref.statusCode, header = _ref.header if (typeof data !== 'string' && !(data instanceof ArrayBuffer)) { try { data = JSON.stringify(data) } catch (e) { data = data } } _this.status = statusCode _responseHeader.set(_this, header) _triggerEvent.call(_this, 'loadstart') _changeReadyState.call(_this, XMLHttpRequest.HEADERS_RECEIVED) _changeReadyState.call(_this, XMLHttpRequest.LOADING) _this.response = data if (data instanceof ArrayBuffer) { _this.responseText = '' var bytes = new Uint8Array(data) var len = bytes.byteLength for (var i = 0; i < len; i++) { _this.responseText += String.fromCharCode(bytes[i]) } } else { _this.responseText = data } _changeReadyState.call(_this, XMLHttpRequest.DONE) _triggerEvent.call(_this, 'load') _triggerEvent.call(_this, 'loadend') }, fail: function fail(_ref2) { var errMsg = _ref2.errMsg // TODO 规范错误 if (errMsg.indexOf('abort') !== -1) { _triggerEvent.call(_this, 'abort') } else { _triggerEvent.call(_this, 'error', errMsg) } _triggerEvent.call(_this, 'loadend') } }) } } }, { key: 'setRequestHeader', value: function setRequestHeader(header, value) { var myHeader = _requestHeader.get(this) myHeader[header] = value _requestHeader.set(this, myHeader) } }]) return XMLHttpRequest }() XMLHttpRequest.UNSEND = 0 XMLHttpRequest.OPENED = 1 XMLHttpRequest.HEADERS_RECEIVED = 2 XMLHttpRequest.LOADING = 3 XMLHttpRequest.DONE = 4 exports.default = XMLHttpRequest /***/ }), /* 19 */ /***/ (function(module, exports) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }() function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } var _socketTask = new WeakMap() var WebSocket = function () { // TODO 更新 binaryType // The connection is in the process of closing. // The connection is not yet open. function WebSocket(url) { var _this = this var protocols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [] _classCallCheck(this, WebSocket) this.binaryType = '' this.bufferedAmount = 0 this.extensions = '' this.onclose = null this.onerror = null this.onmessage = null this.onopen = null this.protocol = '' this.readyState = 3 if (typeof url !== 'string' || !/(^ws:\/\/)|(^wss:\/\/)/.test(url)) { throw new TypeError('Failed to construct \'WebSocket\': The URL \'' + url + '\' is invalid') } this.url = url this.readyState = WebSocket.CONNECTING var socketTask = wx.connectSocket({ url: url, protocols: Array.isArray(protocols) ? protocols : [protocols] }) _socketTask.set(this, socketTask) socketTask.onClose(function (res) { _this.readyState = WebSocket.CLOSED if (typeof _this.onclose === 'function') { _this.onclose(res) } }) socketTask.onMessage(function (res) { if (typeof _this.onmessage === 'function') { _this.onmessage(res) } }) socketTask.onOpen(function () { _this.readyState = WebSocket.OPEN if (typeof _this.onopen === 'function') { _this.onopen() } }) socketTask.onError(function (res) { if (typeof _this.onerror === 'function') { _this.onerror(new Error(res.errMsg)) } }) return this } // TODO 小程序内目前获取不到,实际上需要根据服务器选择的 sub-protocol 返回 // TODO 更新 bufferedAmount // The connection is closed or couldn't be opened. // The connection is open and ready to communicate. _createClass(WebSocket, [{ key: 'close', value: function close(code, reason) { this.readyState = WebSocket.CLOSING var socketTask = _socketTask.get(this) socketTask.close({ code: code, reason: reason }) } }, { key: 'send', value: function send(data) { if (typeof data !== 'string' && !(data instanceof ArrayBuffer)) { throw new TypeError('Failed to send message: The data ' + data + ' is invalid') } var socketTask = _socketTask.get(this) socketTask.send({ data: data }) } }]) return WebSocket }() WebSocket.CONNECTING = 0 WebSocket.OPEN = 1 WebSocket.CLOSING = 2 WebSocket.CLOSED = 3 exports.default = WebSocket /***/ }), /* 20 */ /***/ (function(module, exports) { "use strict" Object.defineProperty(exports, "__esModule", { value: true }) function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } } /* * TODO 使用 wx.readFile 来封装 FileReader */ var FileReader = function FileReader() { _classCallCheck(this, FileReader) } exports.default = FileReader /***/ }), /* 21 */ /***/ (function(module, exports) { "use strict" Object.defineProperty(exports, "__esModule", { value: true }) var localStorage = { get length() { var _wx$getStorageInfoSyn = wx.getStorageInfoSync(), keys = _wx$getStorageInfoSyn.keys return keys.length }, key: function key(n) { var _wx$getStorageInfoSyn2 = wx.getStorageInfoSync(), keys = _wx$getStorageInfoSyn2.keys return keys[n] }, getItem: function getItem(key) { return wx.getStorageSync(key) }, setItem: function setItem(key, value) { return wx.setStorageSync(key, value) }, removeItem: function removeItem(key) { wx.removeStorageSync(key) }, clear: function clear() { wx.clearStorageSync() } } exports.default = localStorage /***/ }), /* 22 */ /***/ (function(module, exports) { 'use strict' Object.defineProperty(exports, "__esModule", { value: true }) var location = { href: 'game.js', reload: function reload() {} } exports.default = location /***/ }) /******/ ]) /***/ }) /******/ });