Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zeroing-libs
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
劳工
zeroing-libs
Commits
24d78c4c
Commit
24d78c4c
authored
Jun 03, 2020
by
汪欢
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
拼图0.3
parent
95b95b2b
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
80 additions
and
33 deletions
+80
-33
main.js
src/custom/pictures/debug/main.js
+18
-11
main.js.map
src/custom/pictures/debug/main.js.map
+1
-1
GameView.ts
src/custom/pictures/src/game/GameView.ts
+59
-20
utils.ts
src/custom/pictures/src/game/utils.ts
+2
-1
No files found.
src/custom/pictures/debug/main.js
View file @
24d78c4c
...
...
@@ -12,6 +12,7 @@
function
injectProps
(
p
)
{
engine
.
injectProp
(
props
,
p
);
}
//# sourceMappingURL=props.js.map
var
picMap
=
{};
var
posMap
=
{};
...
...
@@ -59,6 +60,7 @@
posMap
[
url
]
=
pos
.
concat
([]);
return
[
spr
,
pos
];
});
//# sourceMappingURL=qietu.js.map
function
getTexture
(
uuid
)
{
return
engine
.
Texture
.
from
(
getAssetByUUID
(
uuid
).
uuid
);
...
...
@@ -67,7 +69,8 @@
return
getTexture
(
engine
.
getAssetByName
(
name
).
uuid
);
}
function
getIndexFromRC
(
row
,
col
,
maxCol
)
{
var
index
=
row
*
maxCol
+
col
;
var
index
;
index
=
row
*
maxCol
+
col
;
return
index
;
}
function
getRandomArray
(
array
)
{
...
...
@@ -75,6 +78,7 @@
return
.
5
-
Math
.
random
();
});
}
//# sourceMappingURL=utils.js.map
var
MAX_COL
;
var
MAX_ROW
;
...
...
@@ -93,7 +97,6 @@
return
_this
;
}
GameView
.
prototype
.
start
=
function
()
{
var
_this
=
this
;
console
.
log
(
'on start'
);
engine
.
globalEvent
.
dispatchEvent
(
'pictures-time-update'
,
{
second
:
this
.
getSecond
(),
...
...
@@ -114,9 +117,6 @@
this
.
dragPic
.
x
=
x
;
this
.
dragPic
.
y
=
y
;
}
this
.
_timer
=
setInterval
(
function
()
{
_this
.
onTimer
();
},
10
);
};
GameView
.
prototype
.
onTimer
=
function
()
{
this
.
_timeCounter
+=
0.01
;
...
...
@@ -171,20 +171,24 @@
this
.
localPicY
=
e
.
localY
/
MAX_ROW
;
this
.
distanceX
=
this
.
dragPic
.
x
;
this
.
distanceY
=
this
.
dragPic
.
y
;
this
.
index
I
=
this
.
distanceX
/
(
w
+
GAP
);
this
.
index
J
=
this
.
distanceY
/
(
h
+
GAP
);
this
.
index
=
(
this
.
indexI
-
1
)
*
MAX_COL
+
this
.
indexJ
;
this
.
centerX
=
e
.
clientX
+
w
/
2
;
this
.
centerY
=
e
.
clientY
+
h
/
2
;
this
.
index
J
=
Math
.
floor
(
this
.
distanceX
/
(
w
+
GAP
)
);
this
.
index
I
=
Math
.
floor
(
this
.
distanceY
/
(
h
+
GAP
)
);
this
.
index
=
(
this
.
indexI
)
*
MAX_COL
+
this
.
indexJ
;
this
.
centerX
=
Math
.
floor
(
e
.
clientX
/
w
)
*
w
+
w
/
2
;
this
.
centerY
=
Math
.
floor
(
e
.
clientY
/
h
)
*
h
+
w
/
2
;
this
.
stage
.
addEventListener
(
engine
.
MouseEvent
.
MOUSE_MOVE
,
this
.
onMove
,
this
);
this
.
stage
.
addEventListener
(
engine
.
MouseEvent
.
MOUSE_UP
,
this
.
stageOnUp
,
this
);
};
GameView
.
prototype
.
stageOnUp
=
function
(
e
)
{
this
.
stage
.
removeEventListener
(
engine
.
MouseEvent
.
MOUSE_MOVE
,
this
.
onMove
,
this
);
if
(
this
.
centerY
<
0
||
this
.
centerX
<
0
)
{
this
.
dragPic
.
x
=
this
.
distanceX
;
this
.
dragPic
.
y
=
this
.
distanceY
;
}
this
.
picturesWrapper
.
addChild
(
this
.
guideHole
);
var
curJ
=
Math
.
floor
(
this
.
centerX
/
(
w
+
GAP
));
var
curI
=
Math
.
floor
(
this
.
centerY
/
(
h
+
GAP
));
if
(
curJ
<
MAX_COL
&&
curI
<
MAX_ROW
)
{
if
(
curJ
<
(
MAX_COL
)
&&
curI
<
(
MAX_ROW
)
)
{
var
index
=
getIndexFromRC
(
curI
,
curJ
,
MAX_COL
);
var
dropPic
=
this
.
pictures
[
index
];
var
dropPicX
=
dropPic
.
x
;
...
...
@@ -226,6 +230,7 @@
GameView
.
prototype
.
onMove
=
function
(
e
)
{
this
.
dragPic
.
x
=
e
.
stageX
-
this
.
localPicX
;
this
.
dragPic
.
y
=
e
.
stageY
-
this
.
localPicY
;
console
.
log
(
this
.
dragPic
.
x
,
this
.
dragPic
.
y
);
this
.
centerX
=
this
.
dragPic
.
x
+
w
/
2
;
this
.
centerY
=
this
.
dragPic
.
y
+
h
/
2
;
};
...
...
@@ -251,6 +256,7 @@
};
return
GameWrapper
;
}(
engine
.
Container
));
//# sourceMappingURL=GameWrapper.js.map
function
index
(
props
)
{
prepareProps
();
...
...
@@ -258,6 +264,7 @@
var
instance
=
new
GameWrapper
();
return
instance
;
}
//# sourceMappingURL=index.js.map
return
index
;
...
...
src/custom/pictures/debug/main.js.map
View file @
24d78c4c
{"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 // 倒计时时间\n // private countTime = 20;\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 }, 10)\n }\n\n\n onTimer() {\n // this._timeCounter++;\n this._timeCounter += 0.01;\n this._timeCounter = this.afterPointTwo(this._timeCounter);\n // this._timeCounter = Math.floor((this._timeCounter + 0.1) * 10) / 10;\n console.log(this._timeCounter)\n\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 afterPointTwo(n){\n var floatN = parseFloat(n);\n if(isNaN(floatN)){\n return ;\n }\n floatN = Math.round(floatN * 100) /100;\n return floatN;\n }\n\n getSecond() {\n return GAME_TIME - this._timeCounter;\n // return GAME_TIME - this.countTime;\n }\n\n stop() {\n // this.countTime = 0\n\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\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 // 图片还是在原来的位置\n if(dragPicIndex === dropPicIndex){\n this.dragPic.x = this.distanceX\n this.dragPic.y = this.distanceY\n }\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 }else{\n this.dragPic.x = this.distanceX\n this.dragPic.y = this.distanceY\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
{"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":["/**\r\n * Created by rockyl on 2020-01-21.\r\n */\r\n\r\nexport let props: any = {};\r\n\r\nexport function prepareProps() {\r\n\tlet metaProps = getProps();\r\n\r\n\tengine.injectProp(props, metaProps);\r\n}\r\n\r\nexport function injectProps(p) {\r\n\tengine.injectProp(props, p);\r\n}\r\n","import { props } from \"../props\";\r\nconst urls = [];\r\nconst picMap = {};\r\nconst posMap = {};\r\nexport default (parent, url, MAX_COL, MAX_ROW) => {\r\n if (picMap[url]) {\r\n return [picMap[url], posMap[url]]\r\n }\r\n\r\n const W = props.W;\r\n const H = props.H;\r\n const GAP = props.GAP;\r\n\r\n const spr = [];\r\n const pos = []\r\n\r\n for (let row = 0; row < MAX_ROW; row++) {\r\n for (let col = 0; col < MAX_COL; col++) {\r\n\r\n const child = engine.Sprite.fromImage(url);\r\n spr.push(child);\r\n\r\n child.scaleX = 1 / MAX_COL;\r\n child.scaleY = 1 / MAX_ROW;\r\n parent.addChild(child);\r\n child.x = col * (W / MAX_COL + GAP);\r\n child.y = row * (H / MAX_ROW + GAP);\r\n pos.push([child.x, child.y]);\r\n // child.texture.addEventListener('update', () => {\r\n child.addEventListener(engine.Event.COMPLETE, () => {\r\n const uvs = new Float32Array([\r\n col / MAX_COL,\r\n row / MAX_ROW,\r\n (col + 1) / MAX_COL,\r\n row / MAX_ROW,\r\n (col + 1) / MAX_COL,\r\n (row + 1) / MAX_ROW,\r\n col / MAX_COL,\r\n (row + 1) / MAX_ROW,\r\n ]);\r\n\r\n child.uvs = uvs;\r\n // spr.push(child);\r\n });\r\n }\r\n }\r\n picMap[url] = spr.concat([]);\r\n posMap[url] = pos.concat([]);;\r\n // console.log(spr);\r\n return [spr, pos];\r\n};\r\n","/**\r\n * Created by rockyl on 2020-01-21.\r\n */\r\n\r\nexport function getTexture(uuid) {\r\n\treturn engine.Texture.from(getAssetByUUID(uuid).uuid);\r\n}\r\n\r\nexport function getTextureByName(name) {\r\n\treturn getTexture(engine.getAssetByName(name).uuid);\r\n}\r\n\r\nexport function playSound(name) {\r\n\tengine.playSound(engine.getAssetByName(name).uuid, {keep: true});\r\n}\r\nexport function createSvga(name, anchorName?) {\r\n\tlet inst = new svga.Svga();\r\n\tinst.source = 'asset://' + engine.getAssetByName(name).uuid;\r\n\treturn inst;\r\n}\r\n\r\nexport function getIndexFromRC(row,col,maxCol){\r\n\tlet index;\r\n\tindex = row * maxCol + col ;\r\n\treturn index\r\n}\r\n\r\n\r\n\r\n\r\nexport function getRandomArray(array){\r\n\tarray.sort(function() {\r\n\t\treturn .5 - Math.random();\r\n\t});\r\n}","/**\r\n * Created by rockyl on 2018/8/16.\r\n */\r\n\r\nimport { props } from \"../props\";\r\nimport qietu from \"./qietu\";\r\nimport { getIndexFromRC, getRandomArray, getTextureByName } from \"./utils\";\r\nimport ObjectPool = engine.ObjectPool;\r\n\r\nlet MAX_COL;\r\nlet MAX_ROW;\r\nlet W;\r\nlet H;\r\nlet GAP;\r\nlet GAME_TIME;\r\n// 每张图片宽\r\nlet w;\r\n// 每张图片高\r\nlet h;\r\nexport default class GameView extends engine.Container {\r\n private _timer;\r\n private _timeCounter = 0;\r\n\r\n start() {\r\n console.log('on start')\r\n engine.globalEvent.dispatchEvent('pictures-time-update', {\r\n second: this.getSecond(),\r\n });\r\n\r\n // 图片一维数组\r\n const result = qietu(this.picturesWrapper, props.picUrl, MAX_COL, MAX_ROW);\r\n this.picturesWrapper.addChild(this.guideHole);\r\n this.pictures = result[0];\r\n this.rightList = this.pictures.concat([]);\r\n const posList = result[1];\r\n getRandomArray(this.pictures);\r\n\r\n let i = 0;\r\n let len;\r\n len = this.pictures.length;\r\n\r\n\r\n for (; i < len; i++) {\r\n this.dragPic = this.pictures[i];\r\n this.pictures[i].addEventListener(\r\n engine.MouseEvent.MOUSE_DOWN,\r\n this.onDown,\r\n this\r\n );\r\n const [x, y] = posList[i];\r\n this.dragPic.x = x;\r\n this.dragPic.y = y;\r\n\r\n }\r\n\r\n // this._timer = setInterval(() => {\r\n // this.onTimer();\r\n // }, 10)\r\n }\r\n\r\n\r\n onTimer() {\r\n // this._timeCounter++;\r\n this._timeCounter += 0.01;\r\n this._timeCounter = this.afterPointTwo(this._timeCounter);\r\n // this._timeCounter = Math.floor((this._timeCounter + 0.1) * 10) / 10;\r\n console.log(this._timeCounter)\r\n\r\n engine.globalEvent.dispatchEvent('pictures-time-update', {\r\n second: this.getSecond(),\r\n });\r\n\r\n if (this.getSecond() == 0) {\r\n this.stop();\r\n engine.globalEvent.dispatchEvent('pictures-game-fail', {\r\n reason: 1\r\n });\r\n }\r\n }\r\n\r\n afterPointTwo(n){\r\n var floatN = parseFloat(n);\r\n if(isNaN(floatN)){\r\n return ;\r\n }\r\n floatN = Math.round(floatN * 100) /100;\r\n return floatN;\r\n }\r\n\r\n getSecond() {\r\n return GAME_TIME - this._timeCounter;\r\n // return GAME_TIME - this.countTime;\r\n }\r\n\r\n stop() {\r\n // this.countTime = 0\r\n\r\n this._timeCounter = 0;\r\n clearInterval(this._timer);\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.once(engine.Event.ADDED_TO_STAGE, this.setup, this);\r\n }\r\n\r\n //当前图片对象\r\n dragPic;\r\n // 鼠标在当前图片上的位置\r\n localPicX;\r\n localPicY;\r\n // 拖动的图片最开始的位置(左上角为准)\r\n distanceX;\r\n distanceY;\r\n // 图片中心的位置\r\n centerX: number;\r\n centerY: number;\r\n\r\n pictures;\r\n\r\n // 点击图片时的一维数组索引\r\n index;\r\n // 计算目标图片行和列的位置\r\n indexI: number;\r\n indexJ: number;\r\n rightList: engine.Sprite[];\r\n\r\n \r\n\r\n private picturesWrapper: engine.Sprite;\r\n private guideHole: engine.Sprite;\r\n\r\n createRects() { }\r\n setup() {\r\n this.guideHole = new engine.Image(getTextureByName('遮罩'));\r\n this.guideHole.mouseChildren = this.guideHole.mouseEnabled = false;\r\n\r\n MAX_COL = props.MAX_COL;\r\n MAX_ROW = props.MAX_ROW;\r\n GAME_TIME = props.GAME_TIME;\r\n W = props.W;\r\n H = props.H;\r\n GAP = props.GAP;\r\n // 每张图片宽\r\n w = W / MAX_COL;\r\n // 每张图片高\r\n h = H / MAX_ROW;\r\n\r\n console.log('onSteup', props);\r\n\r\n const parent = new engine.Sprite();\r\n this.picturesWrapper = parent;\r\n this.addChild(parent);\r\n\r\n // 添加按钮\r\n // const btn = new engine.Rect();\r\n // btn.width = 200;\r\n // btn.height = 100;\r\n // // btn.stage.top = 1000;\r\n // // btn.stage.left = 350;\r\n // btn.fillColor = 'cyan';\r\n // this.addChild(btn)\r\n\r\n // btn.addEventListener(engine.MouseEvent.CLICK,this.onClk,this)\r\n\r\n }\r\n\r\n onDown(e: engine.MouseEvent) {\r\n // console.log(e);\r\n\r\n // 创建一个图片对象接收当前位置信息\r\n this.dragPic = e.target;\r\n this.picturesWrapper.addChild(this.dragPic);\r\n\r\n // 鼠标的偏移量\r\n this.localPicX = e.localX / MAX_COL;\r\n this.localPicY = e.localY / MAX_ROW;\r\n\r\n // 最开始图片的位置\r\n this.distanceX = this.dragPic.x;\r\n this.distanceY = this.dragPic.y;\r\n\r\n // 最开始点击的图片的索引值\r\n // this.indexI = this.distanceX / (w + GAP);\r\n // this.indexJ = this.distanceY / (h + GAP);\r\n // this.index = (this.indexI - 1) * MAX_COL + this.indexJ;\r\n\r\n\r\n this.indexJ = Math.floor(this.distanceX / (w + GAP));\r\n this.indexI = Math.floor(this.distanceY / (h + GAP));\r\n this.index = (this.indexI) * MAX_COL + this.indexJ;\r\n\r\n\r\n\r\n\r\n // 图片的中心位置\r\n // this.centerX = e.clientX + w / 2;\r\n // this.centerY = e.clientY + h / 2;\r\n\r\n this.centerX = Math.floor(e.clientX / w) * w + w / 2;\r\n this.centerY = Math.floor(e.clientY / h) * h + w / 2\r\n\r\n\r\n this.stage.addEventListener(\r\n engine.MouseEvent.MOUSE_MOVE,\r\n this.onMove,\r\n this\r\n );\r\n this.stage.addEventListener(\r\n engine.MouseEvent.MOUSE_UP,\r\n this.stageOnUp,\r\n this\r\n );\r\n\r\n }\r\n\r\n stageOnUp(e) {\r\n this.stage.removeEventListener(\r\n engine.MouseEvent.MOUSE_MOVE,\r\n this.onMove,\r\n this\r\n );\r\n \r\n // 拖动的图片的中心位置在图片之外,回到原来的位置\r\n if(this.centerY < 0 || this.centerX < 0){\r\n this.dragPic.x = this.distanceX\r\n this.dragPic.y = this.distanceY\r\n }\r\n\r\n this.picturesWrapper.addChild(this.guideHole);\r\n\r\n // 判断图片是否进入另一张图片的范围内\r\n // 要交换的图片第几行第几列\r\n let curJ = Math.floor(this.centerX / (w + GAP)) ;\r\n let curI = Math.floor(this.centerY / (h + GAP)) ;\r\n\r\n\r\n // 点击图片的位置\r\n\r\n if (curJ < (MAX_COL) && curI < (MAX_ROW)) {\r\n\r\n // 获取交互图片的索引值\r\n let index = getIndexFromRC(curI, curJ, MAX_COL);\r\n // console.log(index);\r\n\r\n //要交换的图片\r\n let dropPic = this.pictures[index];\r\n\r\n let dropPicX = dropPic.x;\r\n let dropPicy = dropPic.y;\r\n\r\n dropPic.x = this.distanceX;\r\n dropPic.y = this.distanceY;\r\n\r\n this.dragPic.x = dropPicX;\r\n this.dragPic.y = dropPicy;\r\n\r\n // 交换之后索引也需要交换\r\n\r\n const dropPicIndex = this.pictures.indexOf(dropPic);\r\n const dragPicIndex = this.pictures.indexOf(this.dragPic);\r\n\r\n this.pictures[dropPicIndex] = this.dragPic;\r\n this.pictures[dragPicIndex] = dropPic;\r\n\r\n // 图片中心还是在原来的位置\r\n if(dragPicIndex === dropPicIndex){\r\n this.dragPic.x = this.distanceX\r\n this.dragPic.y = this.distanceY\r\n }\r\n\r\n let result = true;\r\n for (let j = 0; j < this.rightList.length; j++) {\r\n if (this.rightList[j] != this.pictures[j]) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n\r\n if (result) {\r\n this.onSuccess();\r\n\r\n }\r\n }else{\r\n this.dragPic.x = this.distanceX\r\n this.dragPic.y = this.distanceY\r\n }\r\n\r\n this.stage.removeEventListener(\r\n engine.MouseEvent.MOUSE_UP,\r\n this.stageOnUp,\r\n this\r\n );\r\n }\r\n\r\n private onSuccess() {\r\n console.log('拼图成功!');\r\n this.stop();\r\n engine.globalEvent.dispatchEvent('pictures-game-success', {});\r\n }\r\n\r\n onMove(e: engine.MouseEvent) {\r\n // 当前图片的位置\r\n this.dragPic.x = e.stageX - this.localPicX;\r\n this.dragPic.y = e.stageY - this.localPicY;\r\n console.log(this.dragPic.x,this.dragPic.y)\r\n\r\n // 当前图片的中心位置\r\n this.centerX = this.dragPic.x + w / 2;\r\n this.centerY = this.dragPic.y + h / 2;\r\n\r\n }\r\n\r\n // onClk(e){\r\n // // 重置时间\r\n // this._timeCounter = 0;\r\n // //重置图片顺序\r\n\r\n \r\n // }\r\n\r\n\r\n}\r\n","/**\r\n * Created by rockyl on 2020-01-09.\r\n */\r\n\r\nimport GameView from \"./GameView\";\r\nimport { injectProps } from \"../props\";\r\n\r\n\r\nexport class GameWrapper extends engine.Container {\r\n\t// private _status;\r\n\tprivate _gameView: GameView;\r\n\r\n\r\n\r\n\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tengine.globalEvent.addEventListener('pictures-start', this.start, this);\r\n\t\tengine.globalEvent.addEventListener('pictures-stop', this.stop, this);\r\n\r\n\t\t//创建实例\r\n\t\tlet gameView = this._gameView = new GameView();\r\n\t\tthis.addChild(gameView);\r\n\r\n\t}\r\n\r\n\tstart(event: engine.Event) {\r\n\t\tinjectProps(event.data);\r\n\r\n\t\t// this._status = 1;\r\n\r\n\t\tthis._gameView.start();\r\n\t}\r\n\tstop(event: engine.Event) {\r\n\t\t\r\n\t\tthis._gameView.stop();\r\n\t}\r\n}\r\n","/**\r\n * Created by rockyl on 2019-11-20.\r\n */\r\n\r\nimport {GameWrapper} from \"./game/GameWrapper\";\r\nimport {injectProps, prepareProps} from \"./props\";\r\n\r\nexport default function (props) {\r\n\tprepareProps();\r\n\tinjectProps(props);\r\n\r\n\tlet instance = new GameWrapper();\r\n\t\r\n\treturn instance;\r\n}\r\n"],"names":["__extends"],"mappings":"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"}
\ No newline at end of file
src/custom/pictures/src/game/GameView.ts
View file @
24d78c4c
...
...
@@ -21,9 +21,6 @@ export default class GameView extends engine.Container {
private
_timer
;
private
_timeCounter
=
0
;
// 倒计时时间
// private countTime = 20;
start
()
{
console
.
log
(
'on start'
)
engine
.
globalEvent
.
dispatchEvent
(
'pictures-time-update'
,
{
...
...
@@ -53,11 +50,12 @@ export default class GameView extends engine.Container {
const
[
x
,
y
]
=
posList
[
i
];
this
.
dragPic
.
x
=
x
;
this
.
dragPic
.
y
=
y
;
}
this
.
_timer
=
setInterval
(()
=>
{
this
.
onTimer
();
},
10
)
//
this._timer = setInterval(() => {
//
this.onTimer();
//
}, 10)
}
...
...
@@ -108,20 +106,21 @@ export default class GameView extends engine.Container {
//当前图片对象
dragPic
;
// 鼠标在当前图片上的位置
localPicX
;
localPicY
;
// 拖动的图片最开始的位置(左上角为准)
distanceX
;
distanceY
;
// 图片中心的位置
centerX
:
number
;
centerY
:
number
;
pictures
;
// 点击图片时的索引
// 点击图片时的
一维数组
索引
index
;
// 计算目标图片行和列的位置
indexI
:
number
;
indexJ
:
number
;
rightList
:
engine
.
Sprite
[];
...
...
@@ -152,6 +151,18 @@ export default class GameView extends engine.Container {
const
parent
=
new
engine
.
Sprite
();
this
.
picturesWrapper
=
parent
;
this
.
addChild
(
parent
);
// 添加按钮
// const btn = new engine.Rect();
// btn.width = 200;
// btn.height = 100;
// // btn.stage.top = 1000;
// // btn.stage.left = 350;
// btn.fillColor = 'cyan';
// this.addChild(btn)
// btn.addEventListener(engine.MouseEvent.CLICK,this.onClk,this)
}
onDown
(
e
:
engine
.
MouseEvent
)
{
...
...
@@ -170,13 +181,25 @@ export default class GameView extends engine.Container {
this
.
distanceY
=
this
.
dragPic
.
y
;
// 最开始点击的图片的索引值
this
.
indexI
=
this
.
distanceX
/
(
w
+
GAP
);
this
.
indexJ
=
this
.
distanceY
/
(
h
+
GAP
);
this
.
index
=
(
this
.
indexI
-
1
)
*
MAX_COL
+
this
.
indexJ
;
// this.indexI = this.distanceX / (w + GAP);
// this.indexJ = this.distanceY / (h + GAP);
// this.index = (this.indexI - 1) * MAX_COL + this.indexJ;
this
.
indexJ
=
Math
.
floor
(
this
.
distanceX
/
(
w
+
GAP
));
this
.
indexI
=
Math
.
floor
(
this
.
distanceY
/
(
h
+
GAP
));
this
.
index
=
(
this
.
indexI
)
*
MAX_COL
+
this
.
indexJ
;
// 图片的中心位置
this
.
centerX
=
e
.
clientX
+
w
/
2
;
this
.
centerY
=
e
.
clientY
+
h
/
2
;
// this.centerX = e.clientX + w / 2;
// this.centerY = e.clientY + h / 2;
this
.
centerX
=
Math
.
floor
(
e
.
clientX
/
w
)
*
w
+
w
/
2
;
this
.
centerY
=
Math
.
floor
(
e
.
clientY
/
h
)
*
h
+
w
/
2
this
.
stage
.
addEventListener
(
engine
.
MouseEvent
.
MOUSE_MOVE
,
...
...
@@ -198,17 +221,23 @@ export default class GameView extends engine.Container {
this
);
// 拖动的图片的中心位置在图片之外,回到原来的位置
if
(
this
.
centerY
<
0
||
this
.
centerX
<
0
){
this
.
dragPic
.
x
=
this
.
distanceX
this
.
dragPic
.
y
=
this
.
distanceY
}
this
.
picturesWrapper
.
addChild
(
this
.
guideHole
);
// 判断图片是否进入另一张图片的范围内
// 图片第几行第几列
let
curJ
=
Math
.
floor
(
this
.
centerX
/
(
w
+
GAP
));
let
curI
=
Math
.
floor
(
this
.
centerY
/
(
h
+
GAP
));
//
要交换的
图片第几行第几列
let
curJ
=
Math
.
floor
(
this
.
centerX
/
(
w
+
GAP
))
;
let
curI
=
Math
.
floor
(
this
.
centerY
/
(
h
+
GAP
))
;
// 点击图片的位置
if
(
curJ
<
MAX_COL
&&
curI
<
MAX_ROW
)
{
if
(
curJ
<
(
MAX_COL
)
&&
curI
<
(
MAX_ROW
)
)
{
// 获取交互图片的索引值
let
index
=
getIndexFromRC
(
curI
,
curJ
,
MAX_COL
);
...
...
@@ -234,7 +263,7 @@ export default class GameView extends engine.Container {
this
.
pictures
[
dropPicIndex
]
=
this
.
dragPic
;
this
.
pictures
[
dragPicIndex
]
=
dropPic
;
// 图片还是在原来的位置
// 图片
中心
还是在原来的位置
if
(
dragPicIndex
===
dropPicIndex
){
this
.
dragPic
.
x
=
this
.
distanceX
this
.
dragPic
.
y
=
this
.
distanceY
...
...
@@ -274,6 +303,7 @@ export default class GameView extends engine.Container {
// 当前图片的位置
this
.
dragPic
.
x
=
e
.
stageX
-
this
.
localPicX
;
this
.
dragPic
.
y
=
e
.
stageY
-
this
.
localPicY
;
console
.
log
(
this
.
dragPic
.
x
,
this
.
dragPic
.
y
)
// 当前图片的中心位置
this
.
centerX
=
this
.
dragPic
.
x
+
w
/
2
;
...
...
@@ -281,4 +311,13 @@ export default class GameView extends engine.Container {
}
// onClk(e){
// // 重置时间
// this._timeCounter = 0;
// //重置图片顺序
// }
}
src/custom/pictures/src/game/utils.ts
View file @
24d78c4c
...
...
@@ -20,7 +20,8 @@ export function createSvga(name, anchorName?) {
}
export
function
getIndexFromRC
(
row
,
col
,
maxCol
){
let
index
=
row
*
maxCol
+
col
let
index
;
index
=
row
*
maxCol
+
col
;
return
index
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment