Commit 942737e1 authored by wildfirecode's avatar wildfirecode

1

parent 15f1811a
No preview for this file type
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
"MAX_COL": { "MAX_COL": {
"alias": "图片分成几列", "alias": "图片分成几列",
"type": "number", "type": "number",
"default": 4 "default": 3
}, },
"MAX_ROW": { "MAX_ROW": {
"alias": "图片分成几行", "alias": "图片分成几行",
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
"GAP": { "GAP": {
"alias": "图片间隙", "alias": "图片间隙",
"type": "number", "type": "number",
"default": 10 "default": 0
}, },
"GAME_TIME": { "GAME_TIME": {
"alias": "游戏时间", "alias": "游戏时间",
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
}, },
"assets": [ "assets": [
{ {
"name": "测试资源", "name": "遮罩",
"url": "//yun.duiba.com.cn/aurora/assets/50a7212a113175fa18c866b005d98f07c558dc77.png", "url": "//yun.duiba.com.cn/aurora/assets/5b3e30496b2d9fdafb0cf3835fd6704ce10e45b4.png",
"uuid": "66f23d13-82a5-4cec-9496-301ec240d087", "uuid": "66f23d13-82a5-4cec-9496-301ec240d087",
"ext": ".png" "ext": ".png"
} }
...@@ -75,5 +75,5 @@ ...@@ -75,5 +75,5 @@
} }
}, },
"id": "pictures", "id": "pictures",
"code": "(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('tslib')) :\n\ttypeof define === 'function' && define.amd ? define(['tslib'], factory) :\n\t(global = global || self, global.pictures = factory(global.tslib));\n}(this, (function (tslib) { 'use strict';\n\n\tvar props = {};\n\tfunction prepareProps() {\n\t var metaProps = getProps();\n\t engine.injectProp(props, metaProps);\n\t}\n\tfunction injectProps(p) {\n\t engine.injectProp(props, p);\n\t}\n\t//# sourceMappingURL=props.js.map\n\n\tvar qietu = (function (parent, url, MAX_COL, MAX_ROW) {\n\t var W = props.W;\n\t var H = props.H;\n\t var GAP = props.GAP;\n\t var spr = [];\n\t var pos = [];\n\t var _loop_1 = function (row) {\n\t var _loop_2 = function (col) {\n\t var child = engine.Sprite.fromImage(url);\n\t spr.push(child);\n\t child.scaleX = 1 / MAX_COL;\n\t child.scaleY = 1 / MAX_ROW;\n\t parent.addChild(child);\n\t child.x = col * (W / MAX_COL + GAP);\n\t child.y = row * (H / MAX_ROW + GAP);\n\t pos.push([child.x, child.y]);\n\t child.addEventListener(engine.Event.COMPLETE, function () {\n\t var uvs = new Float32Array([\n\t col / MAX_COL,\n\t row / MAX_ROW,\n\t (col + 1) / MAX_COL,\n\t row / MAX_ROW,\n\t (col + 1) / MAX_COL,\n\t (row + 1) / MAX_ROW,\n\t col / MAX_COL,\n\t (row + 1) / MAX_ROW,\n\t ]);\n\t child.uvs = uvs;\n\t });\n\t };\n\t for (var col = 0; col < MAX_COL; col++) {\n\t _loop_2(col);\n\t }\n\t };\n\t for (var row = 0; row < MAX_ROW; row++) {\n\t _loop_1(row);\n\t }\n\t return [spr, pos];\n\t});\n\t//# sourceMappingURL=qietu.js.map\n\n\tfunction getIndexFromRC(row, col, maxCol) {\n\t var index = row * maxCol + col;\n\t return index;\n\t}\n\tfunction getRandomArray(array) {\n\t array.sort(function () {\n\t return .5 - Math.random();\n\t });\n\t}\n\t//# sourceMappingURL=utils.js.map\n\n\tvar MAX_COL;\n\tvar MAX_ROW;\n\tvar W;\n\tvar H;\n\tvar GAP;\n\tvar GAME_TIME;\n\tvar w;\n\tvar h;\n\tvar GameView = (function (_super) {\n\t tslib.__extends(GameView, _super);\n\t function GameView() {\n\t var _this = _super.call(this) || this;\n\t _this._timeCounter = 0;\n\t _this.countTime = 10;\n\t _this.once(engine.Event.ADDED_TO_STAGE, _this.setup, _this);\n\t return _this;\n\t }\n\t GameView.prototype.start = function () {\n\t var _this = this;\n\t console.log('on start');\n\t engine.globalEvent.dispatchEvent('pictures-time-update', {\n\t second: this.getSecond(),\n\t });\n\t var result = qietu(this.picturesWrapper, props.picUrl, MAX_COL, MAX_ROW);\n\t this.pictures = result[0];\n\t this.rightList = this.pictures.concat([]);\n\t var posList = result[1];\n\t getRandomArray(this.pictures);\n\t var i = 0;\n\t var len;\n\t len = this.pictures.length;\n\t for (; i < len; i++) {\n\t this.dragPic = this.pictures[i];\n\t this.pictures[i].addEventListener(engine.MouseEvent.MOUSE_DOWN, this.onDown, this);\n\t var _a = posList[i], x = _a[0], y = _a[1];\n\t this.dragPic.x = x;\n\t this.dragPic.y = y;\n\t }\n\t this._timer = setInterval(function () {\n\t _this.onTimer();\n\t }, 1000);\n\t };\n\t GameView.prototype.onTimer = function () {\n\t this._timeCounter++;\n\t engine.globalEvent.dispatchEvent('pictures-time-update', {\n\t second: this.getSecond(),\n\t });\n\t if (this.getSecond() == 0) {\n\t this.stop();\n\t engine.globalEvent.dispatchEvent('pictures-game-fail', {\n\t reason: 1\n\t });\n\t }\n\t };\n\t GameView.prototype.getSecond = function () {\n\t return GAME_TIME - this._timeCounter;\n\t };\n\t GameView.prototype.stop = function () {\n\t this._timeCounter = 0;\n\t clearInterval(this._timer);\n\t };\n\t GameView.prototype.createRects = function () { };\n\t GameView.prototype.setup = function () {\n\t MAX_COL = props.MAX_COL;\n\t MAX_ROW = props.MAX_ROW;\n\t GAME_TIME = props.GAME_TIME;\n\t W = props.W;\n\t H = props.H;\n\t GAP = props.GAP;\n\t w = W / MAX_COL;\n\t h = H / MAX_ROW;\n\t console.log('onSteup', props);\n\t var parent = new engine.Sprite();\n\t this.picturesWrapper = parent;\n\t this.addChild(parent);\n\t };\n\t GameView.prototype.onDown = function (e) {\n\t this.dragPic = e.target;\n\t this.picturesWrapper.addChild(this.dragPic);\n\t this.localPicX = e.localX / MAX_COL;\n\t this.localPicY = e.localY / MAX_ROW;\n\t this.distanceX = this.dragPic.x;\n\t this.distanceY = this.dragPic.y;\n\t this.indexI = this.distanceX / (w + GAP);\n\t this.indexJ = this.distanceY / (h + GAP);\n\t this.index = (this.indexI - 1) * MAX_COL + this.indexJ;\n\t this.centerX = e.clientX + w / 2;\n\t this.centerY = e.clientY + h / 2;\n\t this.stage.addEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMove, this);\n\t this.stage.addEventListener(engine.MouseEvent.MOUSE_UP, this.stageOnUp, this);\n\t };\n\t GameView.prototype.stageOnUp = function (e) {\n\t this.stage.removeEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMove, this);\n\t var curJ = Math.floor(this.centerX / (w + GAP));\n\t var curI = Math.floor(this.centerY / (h + GAP));\n\t if (curJ < MAX_COL && curI < MAX_ROW) {\n\t var index = getIndexFromRC(curI, curJ, MAX_COL);\n\t var dropPic = this.pictures[index];\n\t var dropPicX = dropPic.x;\n\t var dropPicy = dropPic.y;\n\t dropPic.x = this.distanceX;\n\t dropPic.y = this.distanceY;\n\t this.dragPic.x = dropPicX;\n\t this.dragPic.y = dropPicy;\n\t var dropPicIndex = this.pictures.indexOf(dropPic);\n\t var dragPicIndex = this.pictures.indexOf(this.dragPic);\n\t this.pictures[dropPicIndex] = this.dragPic;\n\t this.pictures[dragPicIndex] = dropPic;\n\t var result = true;\n\t for (var j = 0; j < this.rightList.length; j++) {\n\t if (this.rightList[j] != this.pictures[j]) {\n\t result = false;\n\t break;\n\t }\n\t }\n\t if (result) {\n\t this.onSuccess();\n\t }\n\t }\n\t this.stage.removeEventListener(engine.MouseEvent.MOUSE_UP, this.stageOnUp, this);\n\t };\n\t GameView.prototype.onSuccess = function () {\n\t console.log('拼图成功!');\n\t this.stop();\n\t engine.globalEvent.dispatchEvent('pictures-game-success', {});\n\t };\n\t GameView.prototype.onMove = function (e) {\n\t this.dragPic.x = e.stageX - this.localPicX;\n\t this.dragPic.y = e.stageY - this.localPicY;\n\t this.centerX = this.dragPic.x + w / 2;\n\t this.centerY = this.dragPic.y + h / 2;\n\t };\n\t return GameView;\n\t}(engine.Container));\n\t//# sourceMappingURL=GameView.js.map\n\n\tvar GameWrapper = (function (_super) {\n\t tslib.__extends(GameWrapper, _super);\n\t function GameWrapper() {\n\t var _this = _super.call(this) || this;\n\t engine.globalEvent.addEventListener('pictures-start', _this.start, _this);\n\t engine.globalEvent.addEventListener('pictures-stop', _this.stop, _this);\n\t var gameView = _this._gameView = new GameView();\n\t _this.addChild(gameView);\n\t return _this;\n\t }\n\t GameWrapper.prototype.start = function (event) {\n\t injectProps(event.data);\n\t this._gameView.start();\n\t };\n\t GameWrapper.prototype.stop = function (event) {\n\t this._gameView.stop();\n\t };\n\t return GameWrapper;\n\t}(engine.Container));\n\t//# sourceMappingURL=GameWrapper.js.map\n\n\tfunction index (props) {\n\t prepareProps();\n\t injectProps(props);\n\t var instance = new GameWrapper();\n\t return instance;\n\t}\n\t//# sourceMappingURL=index.js.map\n\n\treturn index;\n\n})));\n" "code": "(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('tslib')) :\n\ttypeof define === 'function' && define.amd ? define(['tslib'], factory) :\n\t(global = global || self, global.pictures = factory(global.tslib));\n}(this, (function (tslib) { 'use strict';\n\n\tvar props = {};\n\tfunction prepareProps() {\n\t var metaProps = getProps();\n\t engine.injectProp(props, metaProps);\n\t}\n\tfunction injectProps(p) {\n\t engine.injectProp(props, p);\n\t}\n\n\tvar picMap = {};\n\tvar posMap = {};\n\tvar qietu = (function (parent, url, MAX_COL, MAX_ROW) {\n\t if (picMap[url]) {\n\t return [picMap[url], posMap[url]];\n\t }\n\t var W = props.W;\n\t var H = props.H;\n\t var GAP = props.GAP;\n\t var spr = [];\n\t var pos = [];\n\t var _loop_1 = function (row) {\n\t var _loop_2 = function (col) {\n\t var child = engine.Sprite.fromImage(url);\n\t spr.push(child);\n\t child.scaleX = 1 / MAX_COL;\n\t child.scaleY = 1 / MAX_ROW;\n\t parent.addChild(child);\n\t child.x = col * (W / MAX_COL + GAP);\n\t child.y = row * (H / MAX_ROW + GAP);\n\t pos.push([child.x, child.y]);\n\t child.addEventListener(engine.Event.COMPLETE, function () {\n\t var uvs = new Float32Array([\n\t col / MAX_COL,\n\t row / MAX_ROW,\n\t (col + 1) / MAX_COL,\n\t row / MAX_ROW,\n\t (col + 1) / MAX_COL,\n\t (row + 1) / MAX_ROW,\n\t col / MAX_COL,\n\t (row + 1) / MAX_ROW,\n\t ]);\n\t child.uvs = uvs;\n\t });\n\t };\n\t for (var col = 0; col < MAX_COL; col++) {\n\t _loop_2(col);\n\t }\n\t };\n\t for (var row = 0; row < MAX_ROW; row++) {\n\t _loop_1(row);\n\t }\n\t picMap[url] = spr.concat([]);\n\t posMap[url] = pos.concat([]);\n\t return [spr, pos];\n\t});\n\n\tfunction getTexture(uuid) {\n\t return engine.Texture.from(getAssetByUUID(uuid).uuid);\n\t}\n\tfunction getTextureByName(name) {\n\t return getTexture(engine.getAssetByName(name).uuid);\n\t}\n\tfunction getIndexFromRC(row, col, maxCol) {\n\t var index = row * maxCol + col;\n\t return index;\n\t}\n\tfunction getRandomArray(array) {\n\t array.sort(function () {\n\t return .5 - Math.random();\n\t });\n\t}\n\n\tvar MAX_COL;\n\tvar MAX_ROW;\n\tvar W;\n\tvar H;\n\tvar GAP;\n\tvar GAME_TIME;\n\tvar w;\n\tvar h;\n\tvar GameView = (function (_super) {\n\t tslib.__extends(GameView, _super);\n\t function GameView() {\n\t var _this = _super.call(this) || this;\n\t _this._timeCounter = 0;\n\t _this.countTime = 10;\n\t _this.once(engine.Event.ADDED_TO_STAGE, _this.setup, _this);\n\t return _this;\n\t }\n\t GameView.prototype.start = function () {\n\t var _this = this;\n\t console.log('on start');\n\t engine.globalEvent.dispatchEvent('pictures-time-update', {\n\t second: this.getSecond(),\n\t });\n\t var result = qietu(this.picturesWrapper, props.picUrl, MAX_COL, MAX_ROW);\n\t this.picturesWrapper.addChild(this.guideHole);\n\t this.pictures = result[0];\n\t this.rightList = this.pictures.concat([]);\n\t var posList = result[1];\n\t getRandomArray(this.pictures);\n\t var i = 0;\n\t var len;\n\t len = this.pictures.length;\n\t for (; i < len; i++) {\n\t this.dragPic = this.pictures[i];\n\t this.pictures[i].addEventListener(engine.MouseEvent.MOUSE_DOWN, this.onDown, this);\n\t var _a = posList[i], x = _a[0], y = _a[1];\n\t this.dragPic.x = x;\n\t this.dragPic.y = y;\n\t }\n\t this._timer = setInterval(function () {\n\t _this.onTimer();\n\t }, 1000);\n\t };\n\t GameView.prototype.onTimer = function () {\n\t this._timeCounter++;\n\t engine.globalEvent.dispatchEvent('pictures-time-update', {\n\t second: this.getSecond(),\n\t });\n\t if (this.getSecond() == 0) {\n\t this.stop();\n\t engine.globalEvent.dispatchEvent('pictures-game-fail', {\n\t reason: 1\n\t });\n\t }\n\t };\n\t GameView.prototype.getSecond = function () {\n\t return GAME_TIME - this._timeCounter;\n\t };\n\t GameView.prototype.stop = function () {\n\t this._timeCounter = 0;\n\t clearInterval(this._timer);\n\t };\n\t GameView.prototype.createRects = function () { };\n\t GameView.prototype.setup = function () {\n\t this.guideHole = new engine.Image(getTextureByName('遮罩'));\n\t this.guideHole.mouseChildren = this.guideHole.mouseEnabled = false;\n\t MAX_COL = props.MAX_COL;\n\t MAX_ROW = props.MAX_ROW;\n\t GAME_TIME = props.GAME_TIME;\n\t W = props.W;\n\t H = props.H;\n\t GAP = props.GAP;\n\t w = W / MAX_COL;\n\t h = H / MAX_ROW;\n\t console.log('onSteup', props);\n\t var parent = new engine.Sprite();\n\t this.picturesWrapper = parent;\n\t this.addChild(parent);\n\t };\n\t GameView.prototype.onDown = function (e) {\n\t this.dragPic = e.target;\n\t this.picturesWrapper.addChild(this.dragPic);\n\t this.localPicX = e.localX / MAX_COL;\n\t this.localPicY = e.localY / MAX_ROW;\n\t this.distanceX = this.dragPic.x;\n\t this.distanceY = this.dragPic.y;\n\t this.indexI = this.distanceX / (w + GAP);\n\t this.indexJ = this.distanceY / (h + GAP);\n\t this.index = (this.indexI - 1) * MAX_COL + this.indexJ;\n\t this.centerX = e.clientX + w / 2;\n\t this.centerY = e.clientY + h / 2;\n\t this.stage.addEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMove, this);\n\t this.stage.addEventListener(engine.MouseEvent.MOUSE_UP, this.stageOnUp, this);\n\t };\n\t GameView.prototype.stageOnUp = function (e) {\n\t this.stage.removeEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMove, this);\n\t this.picturesWrapper.addChild(this.guideHole);\n\t var curJ = Math.floor(this.centerX / (w + GAP));\n\t var curI = Math.floor(this.centerY / (h + GAP));\n\t if (curJ < MAX_COL && curI < MAX_ROW) {\n\t var index = getIndexFromRC(curI, curJ, MAX_COL);\n\t var dropPic = this.pictures[index];\n\t var dropPicX = dropPic.x;\n\t var dropPicy = dropPic.y;\n\t dropPic.x = this.distanceX;\n\t dropPic.y = this.distanceY;\n\t this.dragPic.x = dropPicX;\n\t this.dragPic.y = dropPicy;\n\t var dropPicIndex = this.pictures.indexOf(dropPic);\n\t var dragPicIndex = this.pictures.indexOf(this.dragPic);\n\t this.pictures[dropPicIndex] = this.dragPic;\n\t this.pictures[dragPicIndex] = dropPic;\n\t var result = true;\n\t for (var j = 0; j < this.rightList.length; j++) {\n\t if (this.rightList[j] != this.pictures[j]) {\n\t result = false;\n\t break;\n\t }\n\t }\n\t if (result) {\n\t this.onSuccess();\n\t }\n\t }\n\t this.stage.removeEventListener(engine.MouseEvent.MOUSE_UP, this.stageOnUp, this);\n\t };\n\t GameView.prototype.onSuccess = function () {\n\t console.log('拼图成功!');\n\t this.stop();\n\t engine.globalEvent.dispatchEvent('pictures-game-success', {});\n\t };\n\t GameView.prototype.onMove = function (e) {\n\t this.dragPic.x = e.stageX - this.localPicX;\n\t this.dragPic.y = e.stageY - this.localPicY;\n\t this.centerX = this.dragPic.x + w / 2;\n\t this.centerY = this.dragPic.y + h / 2;\n\t };\n\t return GameView;\n\t}(engine.Container));\n\n\tvar GameWrapper = (function (_super) {\n\t tslib.__extends(GameWrapper, _super);\n\t function GameWrapper() {\n\t var _this = _super.call(this) || this;\n\t engine.globalEvent.addEventListener('pictures-start', _this.start, _this);\n\t engine.globalEvent.addEventListener('pictures-stop', _this.stop, _this);\n\t var gameView = _this._gameView = new GameView();\n\t _this.addChild(gameView);\n\t return _this;\n\t }\n\t GameWrapper.prototype.start = function (event) {\n\t injectProps(event.data);\n\t this._gameView.start();\n\t };\n\t GameWrapper.prototype.stop = function (event) {\n\t this._gameView.stop();\n\t };\n\t return GameWrapper;\n\t}(engine.Container));\n\n\tfunction index (props) {\n\t prepareProps();\n\t injectProps(props);\n\t var instance = new GameWrapper();\n\t return instance;\n\t}\n\n\treturn index;\n\n})));\n"
} }
...@@ -12,9 +12,13 @@ ...@@ -12,9 +12,13 @@
function injectProps(p) { function injectProps(p) {
engine.injectProp(props, p); engine.injectProp(props, p);
} }
//# sourceMappingURL=props.js.map
var picMap = {};
var posMap = {};
var qietu = (function (parent, url, MAX_COL, MAX_ROW) { var qietu = (function (parent, url, MAX_COL, MAX_ROW) {
if (picMap[url]) {
return [picMap[url], posMap[url]];
}
var W = props.W; var W = props.W;
var H = props.H; var H = props.H;
var GAP = props.GAP; var GAP = props.GAP;
...@@ -51,10 +55,17 @@ ...@@ -51,10 +55,17 @@
for (var row = 0; row < MAX_ROW; row++) { for (var row = 0; row < MAX_ROW; row++) {
_loop_1(row); _loop_1(row);
} }
picMap[url] = spr.concat([]);
posMap[url] = pos.concat([]);
return [spr, pos]; return [spr, pos];
}); });
//# sourceMappingURL=qietu.js.map
function getTexture(uuid) {
return engine.Texture.from(getAssetByUUID(uuid).uuid);
}
function getTextureByName(name) {
return getTexture(engine.getAssetByName(name).uuid);
}
function getIndexFromRC(row, col, maxCol) { function getIndexFromRC(row, col, maxCol) {
var index = row * maxCol + col; var index = row * maxCol + col;
return index; return index;
...@@ -64,7 +75,6 @@ ...@@ -64,7 +75,6 @@
return .5 - Math.random(); return .5 - Math.random();
}); });
} }
//# sourceMappingURL=utils.js.map
var MAX_COL; var MAX_COL;
var MAX_ROW; var MAX_ROW;
...@@ -90,6 +100,7 @@ ...@@ -90,6 +100,7 @@
second: this.getSecond(), second: this.getSecond(),
}); });
var result = qietu(this.picturesWrapper, props.picUrl, MAX_COL, MAX_ROW); var result = qietu(this.picturesWrapper, props.picUrl, MAX_COL, MAX_ROW);
this.picturesWrapper.addChild(this.guideHole);
this.pictures = result[0]; this.pictures = result[0];
this.rightList = this.pictures.concat([]); this.rightList = this.pictures.concat([]);
var posList = result[1]; var posList = result[1];
...@@ -129,6 +140,8 @@ ...@@ -129,6 +140,8 @@
}; };
GameView.prototype.createRects = function () { }; GameView.prototype.createRects = function () { };
GameView.prototype.setup = function () { GameView.prototype.setup = function () {
this.guideHole = new engine.Image(getTextureByName('遮罩'));
this.guideHole.mouseChildren = this.guideHole.mouseEnabled = false;
MAX_COL = props.MAX_COL; MAX_COL = props.MAX_COL;
MAX_ROW = props.MAX_ROW; MAX_ROW = props.MAX_ROW;
GAME_TIME = props.GAME_TIME; GAME_TIME = props.GAME_TIME;
...@@ -159,6 +172,7 @@ ...@@ -159,6 +172,7 @@
}; };
GameView.prototype.stageOnUp = function (e) { GameView.prototype.stageOnUp = function (e) {
this.stage.removeEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMove, this); this.stage.removeEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMove, this);
this.picturesWrapper.addChild(this.guideHole);
var curJ = Math.floor(this.centerX / (w + GAP)); var curJ = Math.floor(this.centerX / (w + GAP));
var curI = Math.floor(this.centerY / (h + GAP)); var curI = Math.floor(this.centerY / (h + GAP));
if (curJ < MAX_COL && curI < MAX_ROW) { if (curJ < MAX_COL && curI < MAX_ROW) {
...@@ -200,7 +214,6 @@ ...@@ -200,7 +214,6 @@
}; };
return GameView; return GameView;
}(engine.Container)); }(engine.Container));
//# sourceMappingURL=GameView.js.map
var GameWrapper = (function (_super) { var GameWrapper = (function (_super) {
tslib.__extends(GameWrapper, _super); tslib.__extends(GameWrapper, _super);
...@@ -221,7 +234,6 @@ ...@@ -221,7 +234,6 @@
}; };
return GameWrapper; return GameWrapper;
}(engine.Container)); }(engine.Container));
//# sourceMappingURL=GameWrapper.js.map
function index (props) { function index (props) {
prepareProps(); prepareProps();
...@@ -229,7 +241,6 @@ ...@@ -229,7 +241,6 @@
var instance = new GameWrapper(); var instance = new GameWrapper();
return instance; return instance;
} }
//# sourceMappingURL=index.js.map
return index; return index;
......
{"version":3,"file":"index.js","sources":["src/custom/pictures/src/props.ts","src/custom/pictures/src/game/qietu.ts","src/custom/pictures/src/game/utils.ts","src/custom/pictures/src/game/GameView.ts","src/custom/pictures/src/game/GameWrapper.ts","src/custom/pictures/src/index.ts"],"sourcesContent":["/**\n * Created by rockyl on 2020-01-21.\n */\n\nexport let props: any = {};\n\nexport function prepareProps() {\n\tlet metaProps = getProps();\n\n\tengine.injectProp(props, metaProps);\n}\n\nexport function injectProps(p) {\n\tengine.injectProp(props, p);\n}\n","import { props } from \"../props\";\nexport default (parent, url, MAX_COL, MAX_ROW) => {\n\n const W = props.W;\n const H = props.H;\n const GAP = props.GAP;\n\n const spr = [];\n const pos = []\n\n for (let row = 0; row < MAX_ROW; row++) {\n for (let col = 0; col < MAX_COL; col++) {\n\n const child = engine.Sprite.fromImage(url);\n spr.push(child);\n\n child.scaleX = 1 / MAX_COL;\n child.scaleY = 1 / MAX_ROW;\n parent.addChild(child);\n child.x = col * (W / MAX_COL + GAP);\n child.y = row * (H / MAX_ROW + GAP);\n pos.push([child.x, child.y]);\n child.addEventListener(engine.Event.COMPLETE, () => {\n const uvs = new Float32Array([\n col / MAX_COL,\n row / MAX_ROW,\n (col + 1) / MAX_COL,\n row / MAX_ROW,\n (col + 1) / MAX_COL,\n (row + 1) / MAX_ROW,\n col / MAX_COL,\n (row + 1) / MAX_ROW,\n ]);\n\n child.uvs = uvs;\n // spr.push(child);\n });\n }\n }\n // console.log(spr);\n return [spr, pos];\n};\n","/**\n * Created by rockyl on 2020-01-21.\n */\n\nexport function getTexture(uuid) {\n\treturn engine.Texture.from(getAssetByUUID(uuid).uuid);\n}\n\nexport function getTextureByName(name) {\n\treturn getTexture(engine.getAssetByName(name).uuid);\n}\n\nexport function playSound(name) {\n\tengine.playSound(engine.getAssetByName(name).uuid, {keep: true});\n}\nexport function createSvga(name, anchorName?) {\n\tlet inst = new svga.Svga();\n\tinst.source = 'asset://' + engine.getAssetByName(name).uuid;\n\treturn inst;\n}\n\nexport function getIndexFromRC(row,col,maxCol){\n\tlet index = row * maxCol + col \n\treturn index\n}\n\n\n\n\nexport function getRandomArray(array){\n\tarray.sort(function() {\n\t\treturn .5 - Math.random();\n\t});\n}","/**\n * Created by rockyl on 2018/8/16.\n */\n\nimport { props } from \"../props\";\nimport qietu from \"./qietu\";\nimport { getIndexFromRC, getRandomArray } from \"./utils\";\nimport ObjectPool = engine.ObjectPool;\n\nlet MAX_COL;\nlet MAX_ROW;\nlet W;\nlet H;\nlet GAP;\nlet GAME_TIME;\n// 每张图片宽\nlet w;\n// 每张图片高\nlet h;\nexport default class GameView extends engine.Container {\n private _timer;\n private _timeCounter = 0;\n\n start() {\n console.log('on start')\n engine.globalEvent.dispatchEvent('pictures-time-update', {\n second: this.getSecond(),\n });\n\n // 图片一维数组\n const result = qietu(this.picturesWrapper, props.picUrl, MAX_COL, MAX_ROW);\n this.pictures = result[0];\n this.rightList = this.pictures.concat([]);\n const posList = result[1];\n getRandomArray(this.pictures);\n\n let i = 0;\n let len;\n len = this.pictures.length;\n \n\n for (; i < len; i++) {\n this.dragPic = this.pictures[i];\n this.pictures[i].addEventListener(\n engine.MouseEvent.MOUSE_DOWN,\n this.onDown,\n this\n );\n const [x, y] = posList[i];\n this.dragPic.x = x;\n this.dragPic.y = y;\n }\n\n this._timer = setInterval(() => {\n this.onTimer();\n }, 1000)\n }\n\n\n onTimer() {\n this._timeCounter++;\n engine.globalEvent.dispatchEvent('pictures-time-update', {\n second: this.getSecond(),\n });\n\n if (this.getSecond() == 0) {\n this.stop();\n engine.globalEvent.dispatchEvent('pictures-game-fail', {\n reason: 1\n });\n }\n }\n\n getSecond() {\n return GAME_TIME - this._timeCounter;\n }\n\n stop() {\n this._timeCounter = 0;\n clearInterval(this._timer);\n }\n\n constructor() {\n super();\n this.once(engine.Event.ADDED_TO_STAGE, this.setup, this);\n }\n\n //当前图片对象\n dragPic;\n\n localPicX;\n localPicY;\n\n distanceX;\n distanceY;\n\n centerX: number;\n centerY: number;\n\n pictures;\n\n // 点击图片时的索引\n index;\n indexI: number;\n indexJ: number;\n rightList: engine.Sprite[];\n\n // 倒计时时间\n countTime = 10;\n\n private picturesWrapper: engine.Sprite;\n\n createRects() { }\n setup() {\n MAX_COL = props.MAX_COL;\n MAX_ROW = props.MAX_ROW;\n GAME_TIME = props.GAME_TIME;\n W = props.W;\n H = props.H;\n GAP = props.GAP;\n // 每张图片宽\n w = W / MAX_COL;\n // 每张图片高\n h = H / MAX_ROW;\n\n console.log('onSteup', props);\n\n const parent = new engine.Sprite();\n this.picturesWrapper = parent;\n this.addChild(parent);\n }\n\n onDown(e: engine.MouseEvent) {\n // console.log(e);\n\n // 创建一个图片对象接收当前位置信息\n this.dragPic = e.target;\n this.picturesWrapper.addChild(this.dragPic);\n\n // 鼠标的偏移量\n this.localPicX = e.localX / MAX_COL;\n this.localPicY = e.localY / MAX_ROW;\n\n // 最开始图片的位置\n this.distanceX = this.dragPic.x;\n this.distanceY = this.dragPic.y;\n\n // 最开始点击的图片的索引值\n this.indexI = this.distanceX / (w + GAP);\n this.indexJ = this.distanceY / (h + GAP);\n this.index = (this.indexI - 1) * MAX_COL + this.indexJ;\n\n // 图片的中心位置\n this.centerX = e.clientX + w / 2;\n this.centerY = e.clientY + h / 2;\n\n this.stage.addEventListener(\n engine.MouseEvent.MOUSE_MOVE,\n this.onMove,\n this\n );\n this.stage.addEventListener(\n engine.MouseEvent.MOUSE_UP,\n this.stageOnUp,\n this\n );\n\n }\n\n stageOnUp(e) {\n this.stage.removeEventListener(\n engine.MouseEvent.MOUSE_MOVE,\n this.onMove,\n this\n );\n\n // 判断图片是否进入另一张图片的范围内\n // 图片第几行第几列\n let curJ = Math.floor(this.centerX / (w + GAP));\n let curI = Math.floor(this.centerY / (h + GAP));\n\n\n // 点击图片的位置\n\n if (curJ < MAX_COL && curI < MAX_ROW) {\n\n // 获取交互图片的索引值\n let index = getIndexFromRC(curI, curJ, MAX_COL);\n // console.log(index);\n\n //要交换的图片\n let dropPic = this.pictures[index];\n\n let dropPicX = dropPic.x;\n let dropPicy = dropPic.y;\n\n dropPic.x = this.distanceX;\n dropPic.y = this.distanceY;\n\n this.dragPic.x = dropPicX;\n this.dragPic.y = dropPicy;\n\n // 交换之后索引也需要交换\n\n const dropPicIndex = this.pictures.indexOf(dropPic);\n const dragPicIndex = this.pictures.indexOf(this.dragPic);\n\n this.pictures[dropPicIndex] = this.dragPic;\n this.pictures[dragPicIndex] = dropPic;\n\n let result = true;\n for (let j = 0; j < this.rightList.length; j++) {\n if (this.rightList[j] != this.pictures[j]) {\n result = false;\n break;\n }\n }\n\n if (result) {\n this.onSuccess();\n\n }\n }\n\n this.stage.removeEventListener(\n engine.MouseEvent.MOUSE_UP,\n this.stageOnUp,\n this\n );\n }\n\n private onSuccess() {\n console.log('拼图成功!');\n this.stop();\n engine.globalEvent.dispatchEvent('pictures-game-success', {});\n }\n\n onMove(e: engine.MouseEvent) {\n // 当前图片的位置\n this.dragPic.x = e.stageX - this.localPicX;\n this.dragPic.y = e.stageY - this.localPicY;\n\n // 当前图片的中心位置\n this.centerX = this.dragPic.x + w / 2;\n this.centerY = this.dragPic.y + h / 2;\n\n }\n\n}\n","/**\n * Created by rockyl on 2020-01-09.\n */\n\nimport GameView from \"./GameView\";\nimport { injectProps } from \"../props\";\n\n\nexport class GameWrapper extends engine.Container {\n\t// private _status;\n\tprivate _gameView: GameView;\n\n\n\n\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tengine.globalEvent.addEventListener('pictures-start', this.start, this);\n\t\tengine.globalEvent.addEventListener('pictures-stop', this.stop, this);\n\n\t\t//创建实例\n\t\tlet gameView = this._gameView = new GameView();\n\t\tthis.addChild(gameView);\n\n\t}\n\n\tstart(event: engine.Event) {\n\t\tinjectProps(event.data);\n\n\t\t// this._status = 1;\n\n\t\tthis._gameView.start();\n\t}\n\tstop(event: engine.Event) {\n\t\t\n\t\tthis._gameView.stop();\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-20.\n */\n\nimport {GameWrapper} from \"./game/GameWrapper\";\nimport {injectProps, prepareProps} from \"./props\";\n\nexport default function (props) {\n\tprepareProps();\n\tinjectProps(props);\n\n\tlet instance = new GameWrapper();\n\t\n\treturn instance;\n}\n"],"names":["__extends"],"mappings":"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"} {"version":3,"file":"index.js","sources":["src/custom/pictures/src/props.ts","src/custom/pictures/src/game/qietu.ts","src/custom/pictures/src/game/utils.ts","src/custom/pictures/src/game/GameView.ts","src/custom/pictures/src/game/GameWrapper.ts","src/custom/pictures/src/index.ts"],"sourcesContent":["/**\n * Created by rockyl on 2020-01-21.\n */\n\nexport let props: any = {};\n\nexport function prepareProps() {\n\tlet metaProps = getProps();\n\n\tengine.injectProp(props, metaProps);\n}\n\nexport function injectProps(p) {\n\tengine.injectProp(props, p);\n}\n","import { props } from \"../props\";\nconst urls = [];\nconst picMap = {};\nconst posMap = {};\nexport default (parent, url, MAX_COL, MAX_ROW) => {\n if (picMap[url]) {\n return [picMap[url], posMap[url]]\n }\n\n const W = props.W;\n const H = props.H;\n const GAP = props.GAP;\n\n const spr = [];\n const pos = []\n\n for (let row = 0; row < MAX_ROW; row++) {\n for (let col = 0; col < MAX_COL; col++) {\n\n const child = engine.Sprite.fromImage(url);\n spr.push(child);\n\n child.scaleX = 1 / MAX_COL;\n child.scaleY = 1 / MAX_ROW;\n parent.addChild(child);\n child.x = col * (W / MAX_COL + GAP);\n child.y = row * (H / MAX_ROW + GAP);\n pos.push([child.x, child.y]);\n // child.texture.addEventListener('update', () => {\n child.addEventListener(engine.Event.COMPLETE, () => {\n const uvs = new Float32Array([\n col / MAX_COL,\n row / MAX_ROW,\n (col + 1) / MAX_COL,\n row / MAX_ROW,\n (col + 1) / MAX_COL,\n (row + 1) / MAX_ROW,\n col / MAX_COL,\n (row + 1) / MAX_ROW,\n ]);\n\n child.uvs = uvs;\n // spr.push(child);\n });\n }\n }\n picMap[url] = spr.concat([]);\n posMap[url] = pos.concat([]);;\n // console.log(spr);\n return [spr, pos];\n};\n","/**\n * Created by rockyl on 2020-01-21.\n */\n\nexport function getTexture(uuid) {\n\treturn engine.Texture.from(getAssetByUUID(uuid).uuid);\n}\n\nexport function getTextureByName(name) {\n\treturn getTexture(engine.getAssetByName(name).uuid);\n}\n\nexport function playSound(name) {\n\tengine.playSound(engine.getAssetByName(name).uuid, {keep: true});\n}\nexport function createSvga(name, anchorName?) {\n\tlet inst = new svga.Svga();\n\tinst.source = 'asset://' + engine.getAssetByName(name).uuid;\n\treturn inst;\n}\n\nexport function getIndexFromRC(row,col,maxCol){\n\tlet index = row * maxCol + col \n\treturn index\n}\n\n\n\n\nexport function getRandomArray(array){\n\tarray.sort(function() {\n\t\treturn .5 - Math.random();\n\t});\n}","/**\n * Created by rockyl on 2018/8/16.\n */\n\nimport { props } from \"../props\";\nimport qietu from \"./qietu\";\nimport { getIndexFromRC, getRandomArray, getTextureByName } from \"./utils\";\nimport ObjectPool = engine.ObjectPool;\n\nlet MAX_COL;\nlet MAX_ROW;\nlet W;\nlet H;\nlet GAP;\nlet GAME_TIME;\n// 每张图片宽\nlet w;\n// 每张图片高\nlet h;\nexport default class GameView extends engine.Container {\n private _timer;\n private _timeCounter = 0;\n\n start() {\n console.log('on start')\n engine.globalEvent.dispatchEvent('pictures-time-update', {\n second: this.getSecond(),\n });\n\n // 图片一维数组\n const result = qietu(this.picturesWrapper, props.picUrl, MAX_COL, MAX_ROW);\n this.picturesWrapper.addChild(this.guideHole);\n this.pictures = result[0];\n this.rightList = this.pictures.concat([]);\n const posList = result[1];\n getRandomArray(this.pictures);\n\n let i = 0;\n let len;\n len = this.pictures.length;\n\n\n for (; i < len; i++) {\n this.dragPic = this.pictures[i];\n this.pictures[i].addEventListener(\n engine.MouseEvent.MOUSE_DOWN,\n this.onDown,\n this\n );\n const [x, y] = posList[i];\n this.dragPic.x = x;\n this.dragPic.y = y;\n }\n\n this._timer = setInterval(() => {\n this.onTimer();\n }, 1000)\n }\n\n\n onTimer() {\n this._timeCounter++;\n engine.globalEvent.dispatchEvent('pictures-time-update', {\n second: this.getSecond(),\n });\n\n if (this.getSecond() == 0) {\n this.stop();\n engine.globalEvent.dispatchEvent('pictures-game-fail', {\n reason: 1\n });\n }\n }\n\n getSecond() {\n return GAME_TIME - this._timeCounter;\n }\n\n stop() {\n this._timeCounter = 0;\n clearInterval(this._timer);\n }\n\n constructor() {\n super();\n this.once(engine.Event.ADDED_TO_STAGE, this.setup, this);\n }\n\n //当前图片对象\n dragPic;\n\n localPicX;\n localPicY;\n\n distanceX;\n distanceY;\n\n centerX: number;\n centerY: number;\n\n pictures;\n\n // 点击图片时的索引\n index;\n indexI: number;\n indexJ: number;\n rightList: engine.Sprite[];\n\n // 倒计时时间\n countTime = 10;\n\n private picturesWrapper: engine.Sprite;\n private guideHole: engine.Sprite;\n\n createRects() { }\n setup() {\n this.guideHole = new engine.Image(getTextureByName('遮罩'));\n this.guideHole.mouseChildren = this.guideHole.mouseEnabled = false;\n\n MAX_COL = props.MAX_COL;\n MAX_ROW = props.MAX_ROW;\n GAME_TIME = props.GAME_TIME;\n W = props.W;\n H = props.H;\n GAP = props.GAP;\n // 每张图片宽\n w = W / MAX_COL;\n // 每张图片高\n h = H / MAX_ROW;\n\n console.log('onSteup', props);\n\n const parent = new engine.Sprite();\n this.picturesWrapper = parent;\n this.addChild(parent);\n }\n\n onDown(e: engine.MouseEvent) {\n // console.log(e);\n\n // 创建一个图片对象接收当前位置信息\n this.dragPic = e.target;\n this.picturesWrapper.addChild(this.dragPic);\n\n // 鼠标的偏移量\n this.localPicX = e.localX / MAX_COL;\n this.localPicY = e.localY / MAX_ROW;\n\n // 最开始图片的位置\n this.distanceX = this.dragPic.x;\n this.distanceY = this.dragPic.y;\n\n // 最开始点击的图片的索引值\n this.indexI = this.distanceX / (w + GAP);\n this.indexJ = this.distanceY / (h + GAP);\n this.index = (this.indexI - 1) * MAX_COL + this.indexJ;\n\n // 图片的中心位置\n this.centerX = e.clientX + w / 2;\n this.centerY = e.clientY + h / 2;\n\n this.stage.addEventListener(\n engine.MouseEvent.MOUSE_MOVE,\n this.onMove,\n this\n );\n this.stage.addEventListener(\n engine.MouseEvent.MOUSE_UP,\n this.stageOnUp,\n this\n );\n\n }\n\n stageOnUp(e) {\n this.stage.removeEventListener(\n engine.MouseEvent.MOUSE_MOVE,\n this.onMove,\n this\n );\n\n this.picturesWrapper.addChild(this.guideHole);\n\n // 判断图片是否进入另一张图片的范围内\n // 图片第几行第几列\n let curJ = Math.floor(this.centerX / (w + GAP));\n let curI = Math.floor(this.centerY / (h + GAP));\n\n\n // 点击图片的位置\n\n if (curJ < MAX_COL && curI < MAX_ROW) {\n\n // 获取交互图片的索引值\n let index = getIndexFromRC(curI, curJ, MAX_COL);\n // console.log(index);\n\n //要交换的图片\n let dropPic = this.pictures[index];\n\n let dropPicX = dropPic.x;\n let dropPicy = dropPic.y;\n\n dropPic.x = this.distanceX;\n dropPic.y = this.distanceY;\n\n this.dragPic.x = dropPicX;\n this.dragPic.y = dropPicy;\n\n // 交换之后索引也需要交换\n\n const dropPicIndex = this.pictures.indexOf(dropPic);\n const dragPicIndex = this.pictures.indexOf(this.dragPic);\n\n this.pictures[dropPicIndex] = this.dragPic;\n this.pictures[dragPicIndex] = dropPic;\n\n let result = true;\n for (let j = 0; j < this.rightList.length; j++) {\n if (this.rightList[j] != this.pictures[j]) {\n result = false;\n break;\n }\n }\n\n if (result) {\n this.onSuccess();\n\n }\n }\n\n this.stage.removeEventListener(\n engine.MouseEvent.MOUSE_UP,\n this.stageOnUp,\n this\n );\n }\n\n private onSuccess() {\n console.log('拼图成功!');\n this.stop();\n engine.globalEvent.dispatchEvent('pictures-game-success', {});\n }\n\n onMove(e: engine.MouseEvent) {\n // 当前图片的位置\n this.dragPic.x = e.stageX - this.localPicX;\n this.dragPic.y = e.stageY - this.localPicY;\n\n // 当前图片的中心位置\n this.centerX = this.dragPic.x + w / 2;\n this.centerY = this.dragPic.y + h / 2;\n\n }\n\n}\n","/**\n * Created by rockyl on 2020-01-09.\n */\n\nimport GameView from \"./GameView\";\nimport { injectProps } from \"../props\";\n\n\nexport class GameWrapper extends engine.Container {\n\t// private _status;\n\tprivate _gameView: GameView;\n\n\n\n\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tengine.globalEvent.addEventListener('pictures-start', this.start, this);\n\t\tengine.globalEvent.addEventListener('pictures-stop', this.stop, this);\n\n\t\t//创建实例\n\t\tlet gameView = this._gameView = new GameView();\n\t\tthis.addChild(gameView);\n\n\t}\n\n\tstart(event: engine.Event) {\n\t\tinjectProps(event.data);\n\n\t\t// this._status = 1;\n\n\t\tthis._gameView.start();\n\t}\n\tstop(event: engine.Event) {\n\t\t\n\t\tthis._gameView.stop();\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-20.\n */\n\nimport {GameWrapper} from \"./game/GameWrapper\";\nimport {injectProps, prepareProps} from \"./props\";\n\nexport default function (props) {\n\tprepareProps();\n\tinjectProps(props);\n\n\tlet instance = new GameWrapper();\n\t\n\treturn instance;\n}\n"],"names":["__extends"],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
"MAX_COL": { "MAX_COL": {
"alias": "图片分成几列", "alias": "图片分成几列",
"type": "number", "type": "number",
"default": 4 "default": 3
}, },
"MAX_ROW": { "MAX_ROW": {
"alias": "图片分成几行", "alias": "图片分成几行",
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
"GAP": { "GAP": {
"alias": "图片间隙", "alias": "图片间隙",
"type": "number", "type": "number",
"default": 10 "default": 0
}, },
"GAME_TIME": { "GAME_TIME": {
"alias": "游戏时间", "alias": "游戏时间",
...@@ -36,8 +36,8 @@ ...@@ -36,8 +36,8 @@
}, },
"assets": [ "assets": [
{ {
"name": "测试资源", "name": "遮罩",
"url": "//yun.duiba.com.cn/aurora/assets/50a7212a113175fa18c866b005d98f07c558dc77.png", "url": "//yun.duiba.com.cn/aurora/assets/5b3e30496b2d9fdafb0cf3835fd6704ce10e45b4.png",
"uuid": "66f23d13-82a5-4cec-9496-301ec240d087", "uuid": "66f23d13-82a5-4cec-9496-301ec240d087",
"ext": ".png" "ext": ".png"
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import { props } from "../props"; import { props } from "../props";
import qietu from "./qietu"; import qietu from "./qietu";
import { getIndexFromRC, getRandomArray } from "./utils"; import { getIndexFromRC, getRandomArray, getTextureByName } from "./utils";
import ObjectPool = engine.ObjectPool; import ObjectPool = engine.ObjectPool;
let MAX_COL; let MAX_COL;
...@@ -29,6 +29,7 @@ export default class GameView extends engine.Container { ...@@ -29,6 +29,7 @@ export default class GameView extends engine.Container {
// 图片一维数组 // 图片一维数组
const result = qietu(this.picturesWrapper, props.picUrl, MAX_COL, MAX_ROW); const result = qietu(this.picturesWrapper, props.picUrl, MAX_COL, MAX_ROW);
this.picturesWrapper.addChild(this.guideHole);
this.pictures = result[0]; this.pictures = result[0];
this.rightList = this.pictures.concat([]); this.rightList = this.pictures.concat([]);
const posList = result[1]; const posList = result[1];
...@@ -109,9 +110,13 @@ export default class GameView extends engine.Container { ...@@ -109,9 +110,13 @@ export default class GameView extends engine.Container {
countTime = 10; countTime = 10;
private picturesWrapper: engine.Sprite; private picturesWrapper: engine.Sprite;
private guideHole: engine.Sprite;
createRects() { } createRects() { }
setup() { setup() {
this.guideHole = new engine.Image(getTextureByName('遮罩'));
this.guideHole.mouseChildren = this.guideHole.mouseEnabled = false;
MAX_COL = props.MAX_COL; MAX_COL = props.MAX_COL;
MAX_ROW = props.MAX_ROW; MAX_ROW = props.MAX_ROW;
GAME_TIME = props.GAME_TIME; GAME_TIME = props.GAME_TIME;
...@@ -174,6 +179,8 @@ export default class GameView extends engine.Container { ...@@ -174,6 +179,8 @@ export default class GameView extends engine.Container {
this this
); );
this.picturesWrapper.addChild(this.guideHole);
// 判断图片是否进入另一张图片的范围内 // 判断图片是否进入另一张图片的范围内
// 图片第几行第几列 // 图片第几行第几列
let curJ = Math.floor(this.centerX / (w + GAP)); let curJ = Math.floor(this.centerX / (w + GAP));
......
import { props } from "../props"; import { props } from "../props";
const urls = [];
const picMap = {};
const posMap = {};
export default (parent, url, MAX_COL, MAX_ROW) => { export default (parent, url, MAX_COL, MAX_ROW) => {
if (picMap[url]) {
return [picMap[url], posMap[url]]
}
const W = props.W; const W = props.W;
const H = props.H; const H = props.H;
...@@ -20,6 +26,7 @@ export default (parent, url, MAX_COL, MAX_ROW) => { ...@@ -20,6 +26,7 @@ export default (parent, url, MAX_COL, MAX_ROW) => {
child.x = col * (W / MAX_COL + GAP); child.x = col * (W / MAX_COL + GAP);
child.y = row * (H / MAX_ROW + GAP); child.y = row * (H / MAX_ROW + GAP);
pos.push([child.x, child.y]); pos.push([child.x, child.y]);
// child.texture.addEventListener('update', () => {
child.addEventListener(engine.Event.COMPLETE, () => { child.addEventListener(engine.Event.COMPLETE, () => {
const uvs = new Float32Array([ const uvs = new Float32Array([
col / MAX_COL, col / MAX_COL,
...@@ -37,6 +44,8 @@ export default (parent, url, MAX_COL, MAX_ROW) => { ...@@ -37,6 +44,8 @@ export default (parent, url, MAX_COL, MAX_ROW) => {
}); });
} }
} }
picMap[url] = spr.concat([]);
posMap[url] = pos.concat([]);;
// console.log(spr); // console.log(spr);
return [spr, pos]; return [spr, pos];
}; };
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