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
3d62bb2f
Commit
3d62bb2f
authored
Jun 15, 2020
by
任建锋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
--
parent
697e8d0e
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
622 additions
and
304 deletions
+622
-304
.DS_Store
dist/.DS_Store
+0
-0
dragon-boat-race.json
dist/customs/dragon-boat-race.json
+83
-45
app.js
src/custom/dragon-boat-race/debug/app.js
+7
-7
load-assets.js
src/custom/dragon-boat-race/debug/load-assets.js
+78
-54
main.js
src/custom/dragon-boat-race/debug/main.js
+161
-67
main.js.map
src/custom/dragon-boat-race/debug/main.js.map
+1
-1
meta.json
src/custom/dragon-boat-race/meta.json
+84
-49
GameView.ts
src/custom/dragon-boat-race/src/game/GameView.ts
+173
-59
GameWrapper.ts
src/custom/dragon-boat-race/src/game/GameWrapper.ts
+6
-8
Goods.ts
src/custom/dragon-boat-race/src/game/Goods.ts
+29
-13
index.html
src/custom/shoot-planet-2/debug/index.html
+0
-1
No files found.
dist/.DS_Store
View file @
3d62bb2f
No preview for this file type
dist/customs/dragon-boat-race.json
View file @
3d62bb2f
...
...
@@ -7,15 +7,20 @@
"type"
:
"number"
,
"default"
:
900
},
"r
ai
nScore"
:
{
"alias"
:
"
接中雨滴获得分数
"
,
"r
u
nScore"
:
{
"alias"
:
"
每前进1米加分(不能小于1)
"
,
"type"
:
"number"
,
"default"
:
1
},
"
stone
Score"
:
{
"alias"
:
"接
中石块
获得分数"
,
"
rain
Score"
:
{
"alias"
:
"接
金币
获得分数"
,
"type"
:
"number"
,
"default"
:
-1
"default"
:
5
},
"rain2Score"
:
{
"alias"
:
"接粽子获得分数"
,
"type"
:
"number"
,
"default"
:
10
},
"speed"
:
{
"alias"
:
"道具掉落初始速度"
,
...
...
@@ -42,123 +47,156 @@
"type"
:
"number"
,
"default"
:
-20
},
"maxNpcBound"
:
{
"alias"
:
"道具随机出现的边距"
,
"type"
:
"number"
,
"default"
:
100
},
"gameOverCondition"
:
{
"alias"
:
"游戏结束条件(1:接到炸弹死亡,2:分数负数或接到炸弹死亡)"
,
"type"
:
"number"
,
"default"
:
1
},
"boomPosition1Offset"
:
{
"alias"
:
"爆炸svga位置偏移[x,y]"
,
"alias"
:
"
奖励
爆炸svga位置偏移[x,y]"
,
"type"
:
"array<number>"
,
"default"
:
"
0,
0"
"default"
:
"
-80,-20
0"
},
"boomPosition2Offset"
:
{
"alias"
:
"爆炸svga位置偏移[x,y]"
,
"alias"
:
"
奖励
爆炸svga位置偏移[x,y]"
,
"type"
:
"array<number>"
,
"default"
:
"
0,
0"
"default"
:
"
-80,-20
0"
},
"boomPosition3Offset"
:
{
"alias"
:
"爆炸svga位置偏移[x,y]"
,
"alias"
:
"障碍爆炸svga位置偏移[x,y]"
,
"type"
:
"array<number>"
,
"default"
:
"0,-100"
},
"playerRunPosition3Offset"
:
{
"alias"
:
"玩家滑动位置偏移"
,
"type"
:
"array<number>"
,
"default"
:
"-100,-100"
"default"
:
"-100,-120"
},
"playerOverPosition3Offset"
:
{
"alias"
:
"玩家翻船位置偏移"
,
"type"
:
"array<number>"
,
"default"
:
"-100,-120"
}
},
"assets"
:
[
{
"name"
:
"
雨滴0
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
badb3627bbcc75276a3eed53daa8b0a454ced6eb.pn
g"
,
"uuid"
:
"d
3ce99da-89e1-447d-8c52-b3f391925c3c
"
,
"ext"
:
".
pn
g"
"name"
:
"
循环背景1
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
a57af3e2092f421ebbb47ee7a3d30f4326b5b7cd.jp
g"
,
"uuid"
:
"d
95a5911-1c7c-4b60-9ff1-5cb179738e91
"
,
"ext"
:
".
jp
g"
},
{
"name"
:
"雨滴1"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/5cc0092913c571eeb52317b8e1e0dc715793049c.png"
,
"uuid"
:
"02f17008-1d8d-4108-a0fc-03fbc71fd118"
,
"name"
:
"循环背景2"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/489de78a248456d9dee74d8106da3dae40c0268b.jpg"
,
"uuid"
:
"2222b6d9-17cb-42a6-a0f2-54c390522ca5"
,
"ext"
:
".jpg"
},
{
"name"
:
"金币"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/6d2719418a59a95fc0db0c0b761d00b4b4519b81.png"
,
"uuid"
:
"d3ce99da-89e1-447d-8c52-b3f391925c3c"
,
"ext"
:
".png"
},
{
"name"
:
"
雨滴2
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
4b938949b85d50b36ef0f66450643495efbf7580
.png"
,
"uuid"
:
"
46aa4f8a-9a6c-4210-8ffd-92da0dd3bc75
"
,
"name"
:
"
粽子
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
89ec786e36cd306225502b384ddb7550d79166c2
.png"
,
"uuid"
:
"
02f17008-1d8d-4108-a0fc-03fbc71fd118
"
,
"ext"
:
".png"
},
{
"name"
:
"
炸弹
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/1
71e92283cd13c013ee1b76d28d252ff08815d47
.png"
,
"name"
:
"
石块
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/1
3efce5d31f114e2db9c9b0baac057bc1baf89d2
.png"
,
"uuid"
:
"eb88b42d-e151-4c1b-94b9-7c16f7bfac29"
,
"ext"
:
".png"
},
{
"name"
:
"
石块
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
99b0af0c59fe79a415a3f032149cfacc27e3ac2
c.png"
,
"name"
:
"
木头
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
3071bf51a8cc4e1733fe7ab6549206d27be15e7
c.png"
,
"uuid"
:
"ab1bdabc-21ba-46bf-9299-6c638f766c88"
,
"ext"
:
".png"
},
{
"name"
:
"
水花
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
11b1f49fa3afa3a48f1dd3e3c1eb294e3fa9d886
.svga"
,
"name"
:
"
碰到金币svga
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
ebd0dc01e7154970bc2b1e65a6a3641aec0e319c
.svga"
,
"uuid"
:
"cdd2268f-ad65-4b5e-a965-ee61b730da21"
,
"ext"
:
".svga"
},
{
"name"
:
"
石头
svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
01aa6fcb33aa8231f075257026eab2f0aeb3c27a
.svga"
,
"uuid"
:
"
846a139d-0990-4db4-a323-f22379932ee4
"
,
"name"
:
"
碰到粽子
svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
b9d21ca9758a8503dc5271949924f7cb08adcdf2
.svga"
,
"uuid"
:
"
ce252ae3-9cc5-490b-9c18-a4111317c473
"
,
"ext"
:
".svga"
},
{
"name"
:
"
炸弹
svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
3b58e7ace031b09c651cf8e7202f9c86e86852c9
.svga"
,
"name"
:
"
碰到石头
svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
862802a8173acc1bde28dd603c7ffd2ccc426700
.svga"
,
"uuid"
:
"d7a3947b-7fcb-48f2-9ddf-2f075d37a619"
,
"ext"
:
".svga"
},
{
"name"
:
"玩家"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/db0130d36ef79865be9c753ea0627027f16341d8.png"
,
"name"
:
"玩家翻船"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/4dd3f3d80c8560d534abfd4c55f4ed758fd9c6f1.svga"
,
"uuid"
:
"6338498f-78ba-4d4b-a172-85755646baf7"
,
"ext"
:
".svga"
},
{
"name"
:
"玩家滑动"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/83c888fcce01d2202a9b4ab73090b3f9e2bc11cd.svga"
,
"uuid"
:
"59920d79-e5bf-46e0-a753-f4e7a1315a97"
,
"ext"
:
".svga"
},
{
"name"
:
"玩家静止"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/9e1d76f3ce486edd17c81e97782ed8afe3f66c0b.png"
,
"uuid"
:
"4931d296-4421-4a2f-8299-7bab87407c72"
,
"ext"
:
".png"
}
],
"events"
:
{
"in"
:
{
"
food-fell
-reset"
:
{
"
dragon-boat-race
-reset"
:
{
"alias"
:
"重置"
,
"data"
:
{
"goodsProbability"
:
"[0.2,0.
5,0.3]道具概率(雨滴、石头、炸弹
),所有概率相加为1"
,
"goodsProbability"
:
"[0.2,0.
2,0.3,0.3]道具概率(金币、粽子、木头、石块
),所有概率相加为1"
,
"countDown"
:
"倒计时(s)"
,
"acceleratedSpeed"
:
"道具掉落加速度(单位:每秒)"
}
},
"
food-fell
-start"
:
{
"
dragon-boat-race
-start"
:
{
"alias"
:
"开始"
},
"
food-fell
-revive"
:
{
"
dragon-boat-race
-revive"
:
{
"alias"
:
"复活"
},
"
food-fell
-pause"
:
{
"
dragon-boat-race
-pause"
:
{
"alias"
:
"暂停"
},
"
food-fell
-resume"
:
{
"
dragon-boat-race
-resume"
:
{
"alias"
:
"恢复"
},
"
food-fell
-clear"
:
{
"
dragon-boat-race
-clear"
:
{
"alias"
:
"清空,通过reset事件恢复"
}
},
"out"
:
{
"
food-fell
-score-update"
:
{
"
dragon-boat-race
-score-update"
:
{
"alias"
:
"分数更新"
,
"data"
:
{
"score"
:
"分数"
}
},
"
food-fell
-time-update"
:
{
"
dragon-boat-race
-time-update"
:
{
"alias"
:
"倒计时更新"
,
"data"
:
{
"time"
:
"剩余时间"
}
},
"
food-fell
-game-over"
:
{
"
dragon-boat-race
-game-over"
:
{
"alias"
:
"游戏结束"
,
"data"
:
{
"score"
:
"分数"
,
...
...
@@ -168,5 +206,5 @@
}
},
"id"
:
"dragon-boat-race"
,
"code"
:
"(function (global, factory) {
\n\t
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('tslib')) :
\n\t
typeof define === 'function' && define.amd ? define(['tslib'], factory) :
\n\t
(global = global || self, global['dragon-boat-race'] = factory(global.tslib));
\n
}(this, (function (tslib) { 'use strict';
\n\n\t
var props = {};
\n\t
function prepareProps() {
\n\t
var metaProps = getProps();
\n\t
engine.injectProp(props, metaProps);
\n\t
}
\n\t
function injectProps(p) {
\n\t
engine.injectProp(props, p);
\n\t
}
\n\t
//# sourceMappingURL=props.js.map
\n\n\t
function getTexture(uuid) {
\n\t
return engine.Texture.from(engine.getAssetByUUID(uuid).uuid);
\n\t
}
\n\t
function getTextureByName(name) {
\n\t
return getTexture(engine.getAssetByName(name).uuid);
\n\t
}
\n\t
function createSvga(name, anchorName) {
\n\t
var inst = new svga.Svga();
\n\t
inst.source = 'asset://' + engine.getAssetByName(name).uuid;
\n\t
return inst;
\n\t
}
\n\
n\t
var Goods = (function (_super) {
\n\t
tslib.__extends(Goods, _super);
\n\t
function Goods() {
\n\t
var _this = _super.call(this) || this;
\n\t
var body;
\n\t
body = _this._body = new engine.Rect();
\n\t
var rain = new engine.Sprite(getTextureByName('雨滴0'));
\n\t
var rain1 = new engine.Sprite(getTextureByName('雨滴1'));
\n\t
var rain2 = new engine.Sprite(getTextureByName('雨滴2'));
\n\t
rain[
\"
npcType
\"
] =
\"
rain0
\"
;
\n\t
rain1[
\"
npcType
\"
] =
\"
rain1
\"
;
\n\t
rain2[
\"
npcType
\"
] =
\"
rain2
\"
;
\n\t
var stone = new engine.Sprite(getTextureByName('石块'));
\n\t
stone[
\"
npcType
\"
] =
\"
stone
\"
;
\n\t
var boom = new engine.Sprite(getTextureByName('炸弹'));
\n\t
boom[
\"
npcType
\"
] =
\"
boom
\"
;
\n\t
rain.visible = false;
\n\t
rain1.visible = false;
\n\t
rain2.visible = false;
\n\t
stone.visible = false;
\n\t
boom.visible = false;
\n\t
body.addChild(rain);
\n\t
body.addChild(rain1);
\n\t
body.addChild(rain2);
\n\t
body.addChild(stone);
\n\t
body.addChild(boom);
\n\t
_this.addChild(body);
\n\t
body.width = .0001;
\n\t
body.height = .0001;
\n\t
body.mouseEnabled = false;
\n\t
return _this;
\n\t
}
\n\t
Goods.prototype.getRandomNumberByRange = function (start, end) {
\n\t
return Math.floor(Math.random() * (end - start) + start);
\n\t
};
\n\t
Goods.prototype.reset = function () {
\n\t
this.visible = true;
\n\t
this.rotation = 0;
\n\t
this.anchorOffsetY = 0;
\n\t
this.y = 0;
\n\t
this.x = (750 - 120) * Math.random() + 30;
\n\t
this.rotation = 0;
\n\t
var random = Math.random();
\n\t
if (typeof (props.goodsProbability) == 'string') {
\n\t
props.goodsProbability = props.goodsProbability.split(',').map(function (i) { return +i; });
\n\t
console.log(props.goodsProbability);
\n\t
}
\n\t
if (random < props.goodsProbability[0]) {
\n\t
var randomNum = Math.floor(Math.random() * 3);
\n\t
this.showNpc(
\"
rain
\"
+ randomNum);
\n\t
}
\n\t
else if (random >= props.goodsProbability[0] && random <= (props.goodsProbability[0] + props.goodsProbability[1])) {
\n\t
this.showNpc(
\"
stone
\"
);
\n\t
}
\n\t
else if (random > (props.goodsProbability[0] + props.goodsProbability[1])) {
\n\t
this.showNpc(
\"
boom
\"
);
\n\t
}
\n\t
};
\n\t
Goods.prototype.showNpc = function (type) {
\n\t
for (var i = 0; i < this._body.children.length; i++) {
\n\t
this._body.children[i].visible = false;
\n\t
this._body.children[i].mouseEnabled = false;
\n\t
}
\n\t
for (var i = 0; i < this._body.children.length; i++) {
\n\t
if (this._body.children[i][
\"
npcType
\"
] == type) {
\n\t
this[
\"
npcType
\"
] = type;
\n\t
this._body.children[i].visible = true;
\n\t
this._body.children[i].mouseEnabled = false;
\n\t
}
\n\t
}
\n\t
};
\n\t
Object.defineProperty(Goods.prototype,
\"
anchorOffsetY
\"
, {
\n\t
set: function (v) {
\n\t
this._body.y = v;
\n\t
},
\n\t
enumerable: true,
\n\t
configurable: true
\n\t
});
\n\t
return Goods;
\n\t
}(engine.Container));
\n\t
//# sourceMappingURL=Goods.js.map
\n\n\t
var ObjectPool = engine.ObjectPool;
\n\t
var PoolName = 'goods';
\n\t
ObjectPool.registerPool(PoolName, function () {
\n\t
return new Goods();
\n\t
}, function (item, data) {
\n\t
item.reset();
\n\t
});
\n\t
//# sourceMappingURL=object-pool-init.js.map
\n\n\t
var ObjectPool$1 = engine.ObjectPool;
\n\t
var GameView = (function (_super) {
\n\t
tslib.__extends(GameView, _super);
\n\t
function GameView() {
\n\t
var _this = _super.call(this) || this;
\n\t
_this.goodsItems = [];
\n\t
_this.moveCatchX = 0;
\n\t
_this.playerCatchX = 0;
\n\t
_this.onDownStage = function (e) {
\n\t
_this.moveCatchX = e.localX;
\n\t
_this.playerCatchX = _this.player.x;
\n\t
};
\n\t
_this.onMoveStage = function (e) {
\n\t
var maxStageBound = props.maxStageBound;
\n\t
if (_this.gameIng) {
\n\t
var playerX = _this.playerCatchX + (e.localX - _this.moveCatchX);
\n\t
if (playerX < maxStageBound) {
\n\t
_this.player.x = maxStageBound;
\n\t
}
\n\t
else if (playerX + _this.player.width + maxStageBound > 750) {
\n\t
_this.player.x = 750 - maxStageBound - _this.player.width;
\n\t
}
\n\t
else {
\n\t
_this.player.x = playerX;
\n\t
}
\n\t
}
\n\t
};
\n\t
_this.onOutStage = function (e) {
\n\t
_this.moveCatchX = 0;
\n\t
};
\n\t
_this.once(engine.Event.ADDED_TO_STAGE, _this.setup, _this);
\n\t
return _this;
\n\t
}
\n\t
GameView.prototype.setup = function () {
\n\t
var _this = this;
\n\t
if (this._hasSetup) {
\n\t
return;
\n\t
}
\n\t
this._hasSetup = true;
\n\t
this.NpcBg = new engine.Container();
\n\t
this.NpcBg.alpha = 1;
\n\t
this.NpcBg.width = 0;
\n\t
this.NpcBg.height = 0;
\n\t
this.addChild(this.NpcBg);
\n\t
this.player = new engine.Container();
\n\t
this.player.mouseEnabled = false;
\n\t
this.addChild(this.player);
\n\t
this.waterSvga = createSvga(
\"
水花
\"
);
\n\t
this.stoneSvga = createSvga(
\"
石头svga
\"
);
\n\t
this.playerSvga = new engine.Sprite(getTextureByName('玩家'));
\n\t
this.boomSvga = createSvga(
\"
炸弹svga
\"
);
\n\t
this.player.addChild(this.playerSvga);
\n\t
this.player.addChild(this.stoneSvga);
\n\t
this.player.addChild(this.waterSvga);
\n\t
this.player.addChild(this.boomSvga);
\n\t
this.waterSvga.visible = false;
\n\t
this.stoneSvga.visible = false;
\n\t
this.boomSvga.visible = false;
\n\t
this.visible = false;
\n\t
setTimeout(function () {
\n\t
_this.visible = true;
\n\t
_this.player.anchorY = _this.player.height / 2;
\n\t
_this.player.anchorX = _this.player.width / 2;
\n\t
_this.player.x = 375 - _this.player.width / 2;
\n\t
_this.player.y = props.playerPositionY;
\n\t
_this.stoneSvga.x = _this.player.width / 2 - _this.stoneSvga.width / 2 + props.boomPosition1Offset[0];
\n\t
_this.stoneSvga.y = _this.player.height / 2 - _this.stoneSvga.height / 2 + props.boomPosition1Offset[1];
\n\t
_this.waterSvga.x = _this.player.width / 2 - _this.waterSvga.width / 2 + props.boomPosition2Offset[0];
\n\t
_this.waterSvga.y = _this.player.height / 2 - _this.waterSvga.height / 2 + props.boomPosition2Offset[1];
\n\t
_this.boomSvga.x = _this.player.width / 2 - _this.boomSvga.width / 2 + props.boomPosition3Offset[0];
\n\t
_this.boomSvga.y = _this.player.height / 2 - _this.boomSvga.height / 2 + props.boomPosition3Offset[1];
\n\t
}, 300);
\n\t
this.rectBg = new engine.Container();
\n\t
this.rectBg.alpha = 0;
\n\t
this.rectBg.width = 750;
\n\t
this.rectBg.height = 1624;
\n\t
this.addChild(this.rectBg);
\n\t
this.rectBg.addEventListener(engine.MouseEvent.MOUSE_DOWN, this.onDownStage, this);
\n\t
this.rectBg.addEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMoveStage, this);
\n\t
this.rectBg.addEventListener(engine.MouseEvent.MOUSE_OUT, this.onOutStage, this);
\n\t
};
\n\t
GameView.prototype.reset = function () {
\n\t
this.recycleGoods();
\n\t
};
\n\t
GameView.prototype.start = function () {
\n\t
var _this = this;
\n\t
this.score = 0;
\n\t
this.speed = 1;
\n\t
this.gameIng = true;
\n\t
this.creatNpc();
\n\t
this.beginNpc();
\n\t
this.countdown = props.countDown;
\n\t
this.countdownTimer = setInterval(function () {
\n\t
if (_this.gameIng) {
\n\t
if (_this.countdown > 0) {
\n\t
engine.globalEvent.dispatchEvent('food-fell-time-update', {
\n\t
time: _this.countdown,
\n\t
});
\n\t
_this.countdown -= 1;
\n\t
}
\n\t
else {
\n\t
engine.globalEvent.dispatchEvent('food-fell-game-over', {
\n\t
score: _this.score,
\n\t
reason: 1
\n\t
});
\n\t
_this.died();
\n\t
}
\n\t
}
\n\t
}, 1000);
\n\t
};
\n\t
GameView.prototype.beginNpc = function () {
\n\t
var _this = this;
\n\t
this.timer = setTimeout(function () {
\n\t
if (_this.gameIng) {
\n\t
_this.speed += props.acceleratedSpeed;
\n\t
_this.creatNpc();
\n\t
}
\n\t
_this.beginNpc();
\n\t
}, 2000 / this.speed);
\n\t
};
\n\t
GameView.prototype.pause = function () {
\n\t
this.gameIng = false;
\n\t
};
\n\t
GameView.prototype.revive = function () {
\n\t
this.gameIng = true;
\n\t
};
\n\t
GameView.prototype.resume = function () {
\n\t
this.reset();
\n\t
this.start();
\n\t
};
\n\t
GameView.prototype.creatNpc = function () {
\n\t
var _this = this;
\n\t
var goods = this._goods = ObjectPool$1.getObject(PoolName);
\n\t
this.goodsItems.push(goods);
\n\t
console.log(goods);
\n\t
this.NpcBg.addChild(goods);
\n\t
goods.addEventListener(engine.Event.ENTER_FRAME, goods[
\"
onGoodsEnter
\"
] = function () {
\n\t
if (goods.y > 1624) {
\n\t
_this.removeNpc(goods);
\n\t
}
\n\t
else {
\n\t
if (_this.gameIng) {
\n\t
goods.y += (4 * _this.speed);
\n\t
if (_this.hasHit(_this.player, goods)) {
\n\t
if (goods[
\"
npcType
\"
].indexOf(
\"
rain
\"
) > -1) {
\n\t
console.log(
\"
碰到雨滴
\"
);
\n\t
_this.score += props.rainScore;
\n\t
_this.waterSvga.visible = true;
\n\t
_this.waterSvga.play(false, false);
\n\t
_this.waterSvga.once(engine.Event.END_FRAME, function () {
\n\t
_this.waterSvga.visible = false;
\n\t
}, _this);
\n\t
}
\n\t
else if (goods[
\"
npcType
\"
] ==
\"
stone
\"
) {
\n\t
console.log(
\"
碰到石头
\"
);
\n\t
_this.score += props.stoneScore;
\n\t
_this.stoneSvga.visible = true;
\n\t
_this.stoneSvga.play(false, false);
\n\t
_this.stoneSvga.once(engine.Event.END_FRAME, function () {
\n\t
_this.stoneSvga.visible = false;
\n\t
}, _this);
\n\t
}
\n\t
else if (goods[
\"
npcType
\"
] ==
\"
boom
\"
) {
\n\t
console.log(
\"
碰到炸弹
\"
);
\n\t
_this.boomSvga.visible = true;
\n\t
_this.boomSvga.play(false, false);
\n\t
_this.boomSvga.once(engine.Event.END_FRAME, function () {
\n\t
_this.boomSvga.visible = false;
\n\t
engine.globalEvent.dispatchEvent('food-fell-game-over', {
\n\t
score: _this.score,
\n\t
reason: 2
\n\t
});
\n\t
_this.died();
\n\t
}, _this);
\n\t
}
\n\t
engine.globalEvent.dispatchEvent('food-fell-score-update', {
\n\t
score: _this.score,
\n\t
});
\n\t
_this.removeNpc(goods);
\n\t
}
\n\t
}
\n\t
}
\n\t
}, this);
\n\t
};
\n\t
GameView.prototype.died = function () {
\n\t
this.score = 0;
\n\t
this.pause();
\n\t
};
\n\t
GameView.prototype.removeNpc = function (goods) {
\n\t
this.NpcBg.removeChild(goods);
\n\t
ObjectPool$1.recycleObject(PoolName, goods);
\n\t
goods.removeEventListener(engine.Event.ENTER_FRAME, goods[
\"
onGoodsEnter
\"
], this);
\n\t
var index = this.goodsItems.indexOf(goods);
\n\t
if (index > -1) {
\n\t
this.goodsItems.splice(index, 1);
\n\t
}
\n\t
};
\n\t
GameView.prototype.recycleGoods = function () {
\n\t
clearTimeout(this.timer);
\n\t
clearInterval(this.countdownTimer);
\n\t
for (var _i = 0, _a = this.goodsItems; _i < _a.length; _i++) {
\n\t
var goods = _a[_i];
\n\t
if (goods) {
\n\t
this.NpcBg.removeChild(goods);
\n\t
ObjectPool$1.recycleObject(PoolName, goods);
\n\t
goods.removeEventListener(engine.Event.ENTER_FRAME, goods[
\"
onGoodsEnter
\"
], this);
\n\t
}
\n\t
}
\n\t
this.goodsItems = [];
\n\t
};
\n\t
GameView.prototype.hasHit = function (a, b) {
\n\t
var playerH = a.height;
\n\t
var playerW = a.width;
\n\t
var playerX = a.x;
\n\t
console.log(
\"
props
\"
, props.playerHeight);
\n\t
if (props.playerHeight) {
\n\t
playerH = props.playerHeight;
\n\t
}
\n\t
if (props.playerWidth) {
\n\t
playerW = props.playerWidth;
\n\t
playerX = a.x + (a.width - props.playerWidth) / 2;
\n\t
}
\n\t
if (Math.abs((playerX + playerW / 2) - (b.x + b.width / 2)) < playerW / 2 + b.width / 2
\n\t
&&
\n\t
Math.abs((a.y + playerH / 1.3) - (b.y + b.height / 2)) < playerH / 2 + b.height / 2) {
\n\t
return true;
\n\t
}
\n\t
else {
\n\t
return false;
\n\t
}
\n\t
};
\n\t
return GameView;
\n\t
}(engine.Container));
\n\t
//# sourceMappingURL=GameView.js.map
\n\n\t
var GameWrapper = (function (_super) {
\n\t
tslib.__extends(GameWrapper, _super);
\n\t
function GameWrapper() {
\n\t
var _this = _super.call(this) || this;
\n\t
alert(123);
\n\t
engine.globalEvent.addEventListener('food-fell-reset', _this.reset, _this);
\n\t
engine.globalEvent.addEventListener('food-fell-start', _this.start, _this);
\n\t
engine.globalEvent.addEventListener('food-fell-pause', _this.pause, _this);
\n\t
engine.globalEvent.addEventListener('food-fell-resume', _this.resume, _this);
\n\t
engine.globalEvent.addEventListener('food-fell-revive', _this.revive, _this);
\n\t
engine.globalEvent.addEventListener('food-fell
-clear', _this.clear, _this);
\n\t
_this.addEventListener(engine.MouseEvent.CLICK, _this.onTap, _this);
\n\t
var gameView = _this._gameView = new GameView();
\n\t
_this.addChild(gameView);
\n\t
return _this;
\n\t
}
\n\t
GameWrapper.prototype.reset = function (event) {
\n\t
injectProps(event.data);
\n\t
this._gameView.visible = true;
\n\t
this._gameView.reset();
\n\t
};
\n\t
GameWrapper.prototype.start = function (event) {
\n\t
injectProps(event.data);
\n\t
this._status = 1;
\n\t
this._gameView.start();
\n\t
};
\n\t
GameWrapper.prototype.pause = function () {
\n\t
this._gameView.pause();
\n\t
};
\n\t
GameWrapper.prototype.resume = function () {
\n\t
this._gameView.resume();
\n\t
};
\n\t
GameWrapper.prototype.revive = function () {
\n\t
this._gameView.revive();
\n\t
};
\n\t
GameWrapper.prototype.clear = function () {
\n\t
this._gameView.visible = false;
\n\t
};
\n\t
GameWrapper.prototype.onTap = function (event) {
\n\t
};
\n\t
return GameWrapper;
\n\t
}(engine.Container));
\n\t
//# sourceMappingURL=GameWrapper.js.map
\n\n\t
function 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\t
return index;
\n\n
})));
\n
"
"code"
:
"(function (global, factory) {
\n\t
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('tslib')) :
\n\t
typeof define === 'function' && define.amd ? define(['tslib'], factory) :
\n\t
(global = global || self, global['dragon-boat-race'] = factory(global.tslib));
\n
}(this, (function (tslib) { 'use strict';
\n\n\t
var props = {};
\n\t
function prepareProps() {
\n\t
var metaProps = getProps();
\n\t
engine.injectProp(props, metaProps);
\n\t
}
\n\t
function injectProps(p) {
\n\t
engine.injectProp(props, p);
\n\t
}
\n\t
//# sourceMappingURL=props.js.map
\n\n\t
function getTexture(uuid) {
\n\t
return engine.Texture.from(engine.getAssetByUUID(uuid).uuid);
\n\t
}
\n\t
function getTextureByName(name) {
\n\t
return getTexture(engine.getAssetByName(name).uuid);
\n\t
}
\n\t
function createSvga(name, anchorName) {
\n\t
var inst = new svga.Svga();
\n\t
inst.source = 'asset://' + engine.getAssetByName(name).uuid;
\n\t
return inst;
\n\t
}
\n\
t
//# sourceMappingURL=utils.js.map
\n\n\t
var Goods = (function (_super) {
\n\t
tslib.__extends(Goods, _super);
\n\t
function Goods() {
\n\t
var _this = _super.call(this) || this;
\n\t
var body;
\n\t
body = _this._body = new engine.Rect();
\n\t
var rain = new engine.Sprite(getTextureByName('金币'));
\n\t
var rain1 = new engine.Sprite(getTextureByName('粽子'));
\n\t
rain[
\"
npcType
\"
] =
\"
rain0
\"
;
\n\t
rain1[
\"
npcType
\"
] =
\"
rain1
\"
;
\n\t
var stone = new engine.Sprite(getTextureByName('木头'));
\n\t
stone[
\"
npcType
\"
] =
\"
stone
\"
;
\n\t
var boom = new engine.Sprite(getTextureByName('石块'));
\n\t
boom[
\"
npcType
\"
] =
\"
boom
\"
;
\n\t
rain.visible = false;
\n\t
rain1.visible = false;
\n\t
stone.visible = false;
\n\t
boom.visible = false;
\n\t
rain.anchorX = rain.width / 2;
\n\t
rain1.anchorX = rain1.width / 2;
\n\t
stone.anchorX = stone.width / 2;
\n\t
boom.anchorX = boom.width / 2;
\n\t
rain.anchorY = rain.height / 2;
\n\t
rain1.anchorY = rain1.height / 2;
\n\t
stone.anchorY = stone.height / 2;
\n\t
boom.anchorY = boom.height / 2;
\n\t
body.addChild(rain);
\n\t
body.addChild(rain1);
\n\t
body.addChild(stone);
\n\t
body.addChild(boom);
\n\t
_this.addChild(body);
\n\t
body.width = .0001;
\n\t
body.height = .0001;
\n\t
body.mouseEnabled = false;
\n\t
return _this;
\n\t
}
\n\t
Goods.prototype.getRandomNumberByRange = function (start, end) {
\n\t
return Math.floor(Math.random() * (end - start) + start);
\n\t
};
\n\t
Goods.prototype.reset = function () {
\n\t
this[
\"
lifeState
\"
] = true;
\n\t
this.visible = true;
\n\t
this.rotation = 0;
\n\t
this.anchorOffsetY = 0;
\n\t
if (this.width <= 0) {
\n\t
this.anchorX = 50;
\n\t
}
\n\t
else {
\n\t
this.anchorX = this.width / 2;
\n\t
}
\n\t
this.anchorY = this.height / 2;
\n\t
this.scaleX = this.scaleY = 1;
\n\t
this.y = 0;
\n\t
this.x = ((750 - props.maxNpcBound) - 120) * Math.random() + 30 + props.maxNpcBound;
\n\t
this.rotation = 0;
\n\t
var random = Math.random();
\n\t
if (typeof (props.goodsProbability) == 'string') {
\n\t
props.goodsProbability = props.goodsProbability.split(',').map(function (i) { return +i; });
\n\t
console.log(props.goodsProbability);
\n\t
}
\n\t
if (random < props.goodsProbability[0]) {
\n\t
this.showNpc(
\"
rain0
\"
);
\n\t
}
\n\t
else if (random >= props.goodsProbability[0] && random <= (props.goodsProbability[0] + props.goodsProbability[1])) {
\n\t
this.showNpc(
\"
rain1
\"
);
\n\t
}
\n\t
else if (random >= (props.goodsProbability[0] + props.goodsProbability[1]) && random <= (props.goodsProbability[0] + props.goodsProbability[1] + props.goodsProbability[2])) {
\n\t
this.showNpc(
\"
stone
\"
);
\n\t
}
\n\t
else if (random > (props.goodsProbability[0] + props.goodsProbability[1] + props.goodsProbability[2])) {
\n\t
this.showNpc(
\"
boom
\"
);
\n\t
}
\n\t
};
\n\t
Goods.prototype.showNpc = function (type) {
\n\t
for (var i = 0; i < this._body.children.length; i++) {
\n\t
this._body.children[i].visible = false;
\n\t
this._body.children[i].mouseEnabled = false;
\n\t
}
\n\t
for (var i = 0; i < this._body.children.length; i++) {
\n\t
if (this._body.children[i][
\"
npcType
\"
] == type) {
\n\t
this[
\"
npcType
\"
] = type;
\n\t
this._body.children[i].visible = true;
\n\t
this._body.children[i].mouseEnabled = false;
\n\t
}
\n\t
}
\n\t
};
\n\t
Object.defineProperty(Goods.prototype,
\"
anchorOffsetY
\"
, {
\n\t
set: function (v) {
\n\t
this._body.y = v;
\n\t
},
\n\t
enumerable: true,
\n\t
configurable: true
\n\t
});
\n\t
return Goods;
\n\t
}(engine.Container));
\n\t
//# sourceMappingURL=Goods.js.map
\n\n\t
var ObjectPool = engine.ObjectPool;
\n\t
var PoolName = 'goods';
\n\t
ObjectPool.registerPool(PoolName, function () {
\n\t
return new Goods();
\n\t
}, function (item, data) {
\n\t
item.reset();
\n\t
});
\n\t
//# sourceMappingURL=object-pool-init.js.map
\n\n\t
var ObjectPool$1 = engine.ObjectPool;
\n\t
var GameView = (function (_super) {
\n\t
tslib.__extends(GameView, _super);
\n\t
function GameView() {
\n\t
var _this = _super.call(this) || this;
\n\t
_this.goodsItems = [];
\n\t
_this.moveCatchX = 0;
\n\t
_this.playerCatchX = 0;
\n\t
_this.onDownStage = function (e) {
\n\t
_this.moveCatchX = e.localX;
\n\t
_this.playerCatchX = _this.player.x;
\n\t
};
\n\t
_this.onMoveStage = function (e) {
\n\t
var maxStageBound = props.maxStageBound;
\n\t
if (_this.gameIng) {
\n\t
var playerX = _this.playerCatchX + (e.localX - _this.moveCatchX);
\n\t
if (playerX < maxStageBound) {
\n\t
_this.player.x = maxStageBound;
\n\t
}
\n\t
else if (playerX + _this.player.width + maxStageBound > 750) {
\n\t
_this.player.x = 750 - maxStageBound - _this.player.width;
\n\t
}
\n\t
else {
\n\t
_this.player.x = playerX;
\n\t
}
\n\t
}
\n\t
};
\n\t
_this.onOutStage = function (e) {
\n\t
_this.moveCatchX = 0;
\n\t
};
\n\t
_this.once(engine.Event.ADDED_TO_STAGE, _this.setup, _this);
\n\t
return _this;
\n\t
}
\n\t
GameView.prototype.setup = function () {
\n\t
var _this = this;
\n\t
if (this._hasSetup) {
\n\t
return;
\n\t
}
\n\t
this._hasSetup = true;
\n\t
this.bg = new engine.Container();
\n\t
this.bg.mouseEnabled = false;
\n\t
this.addChild(this.bg);
\n\t
this.NpcBg = new engine.Container();
\n\t
this.NpcBg.alpha = 1;
\n\t
this.NpcBg.width = 0;
\n\t
this.NpcBg.height = 0;
\n\t
this.addChild(this.NpcBg);
\n\t
this.player = new engine.Container();
\n\t
this.player.mouseEnabled = false;
\n\t
this.player.mouseChildren = false;
\n\t
this.labelScore = new engine.BitmapText();
\n\t
this.labelScore.font = props.fontName;
\n\t
this.labelScore.scaleX = this.labelScore.scaleY = 1;
\n\t
this.addChild(this.labelScore);
\n\t
this.waterSvga = createSvga(
\"
碰到金币svga
\"
);
\n\t
this.water2Svga = createSvga(
\"
碰到粽子svga
\"
);
\n\t
this.boomSvga = createSvga(
\"
碰到石头svga
\"
);
\n\t
this.playerSvgaReset = new engine.Sprite(getTextureByName('玩家静止'));
\n\t
this.playerSvgaRun = createSvga(
\"
玩家滑动
\"
);
\n\t
this.playerSvgaOver = createSvga(
\"
玩家翻船
\"
);
\n\t
this.bg1 = new engine.Sprite(getTextureByName('循环背景1'));
\n\t
this.bg2 = new engine.Sprite(getTextureByName('循环背景2'));
\n\t
this.bg3 = new engine.Sprite(getTextureByName('循环背景1'));
\n\t
this.bg4 = new engine.Sprite(getTextureByName('循环背景2'));
\n\t
this.player.addChild(this.playerSvgaReset);
\n\t
this.player.addChild(this.playerSvgaRun);
\n\t
this.player.addChild(this.playerSvgaOver);
\n\t
this.addChild(this.waterSvga);
\n\t
this.addChild(this.water2Svga);
\n\t
this.addChild(this.boomSvga);
\n\t
this.addChild(this.player);
\n\t
this.bg.addChild(this.bg1);
\n\t
this.bg.addChild(this.bg2);
\n\t
this.bg.addChild(this.bg3);
\n\t
this.bg.addChild(this.bg4);
\n\t
this.waterSvga.visible = false;
\n\t
this.water2Svga.visible = false;
\n\t
this.boomSvga.visible = false;
\n\t
this.setPlayState(this.playerSvgaReset);
\n\t
this.visible = false;
\n\t
setTimeout(function () {
\n\t
_this.visible = true;
\n\t
_this.player.x = 375 - _this.player.width / 2;
\n\t
_this.player.y = props.playerPositionY;
\n\t
_this.playerSvgaRun.x = props.playerRunPosition3Offset[0];
\n\t
_this.playerSvgaRun.y = props.playerRunPosition3Offset[1];
\n\t
_this.playerSvgaOver.x = props.playerOverPosition3Offset[0];
\n\t
_this.playerSvgaOver.y = props.playerOverPosition3Offset[1];
\n\t
_this.bg1.y = 0;
\n\t
_this.bg2.y = _this.bg1.height;
\n\t
_this.bg3.y = _this.bg1.height + _this.bg2.height;
\n\t
_this.bg4.y = _this.bg1.height + _this.bg2.height + _this.bg3.height;
\n\t
engine.Tween.get(_this.playerSvgaReset, { loop: true })
\n\t
.to({ y: 10 }, 500)
\n\t
.to({ y: 0 }, 500)
\n\t
.to({ y: 10 }, 500)
\n\t
.call(function () { });
\n\t
}, 300);
\n\t
this.rectBg = new engine.Container();
\n\t
this.rectBg.alpha = 0;
\n\t
this.rectBg.width = 750;
\n\t
this.rectBg.height = 1624;
\n\t
this.addChild(this.rectBg);
\n\t
this.rectBg.addEventListener(engine.MouseEvent.MOUSE_DOWN, this.onDownStage, this);
\n\t
this.rectBg.addEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMoveStage, this);
\n\t
this.rectBg.addEventListener(engine.MouseEvent.MOUSE_OUT, this.onOutStage, this);
\n\t
this.rectBg.addEventListener(engine.Event.ENTER_FRAME, this.enterFrame, this);
\n\t
};
\n\t
GameView.prototype.setBoomPosition = function (svga, callback) {
\n\t
svga.x = this.player.x;
\n\t
svga.y = this.player.y;
\n\t
if (svga == this.waterSvga) {
\n\t
svga.x += props.boomPosition1Offset[0];
\n\t
svga.y += props.boomPosition1Offset[1];
\n\t
}
\n\t
else if (svga == this.water2Svga) {
\n\t
svga.x += props.boomPosition2Offset[0];
\n\t
svga.y += props.boomPosition2Offset[1];
\n\t
}
\n\t
else if (svga == this.boomSvga) {
\n\t
svga.x += props.boomPosition3Offset[0];
\n\t
svga.y += props.boomPosition3Offset[1];
\n\t
}
\n\t
svga.visible = true;
\n\t
svga.play(true, false);
\n\t
svga.once(engine.Event.END_FRAME, function () {
\n\t
svga.visible = false;
\n\t
if (callback) {
\n\t
callback();
\n\t
}
\n\t
}, this);
\n\t
};
\n\t
GameView.prototype.enterFrame = function () {
\n\t
if (this.bg.y >= 0) {
\n\t
this.bg.y = -this.bg3.y;
\n\t
}
\n\t
if (this.gameIng) {
\n\t
this.bg.y += (4 * this.speed);
\n\t
}
\n\t
};
\n\t
GameView.prototype.reset = function () {
\n\t
this.recycleGoods();
\n\t
this.score = 0;
\n\t
this.speed = 1;
\n\t
this.bg.y = -1624;
\n\t
this.player.anchorY = this.player.height / 2;
\n\t
this.player.anchorX = this.player.width / 2;
\n\t
this.player.x = 375 - this.player.width / 2;
\n\t
this.player.y = props.playerPositionY;
\n\t
this.setPlayState(this.playerSvgaReset);
\n\t
};
\n\t
GameView.prototype.setPlayState = function (svga) {
\n\t
this.playerSvgaReset.visible = false;
\n\t
this.playerSvgaRun.visible = false;
\n\t
this.playerSvgaOver.visible = false;
\n\t
console.log(svga);
\n\t
svga.visible = true;
\n\t
if (svga == this.playerSvgaOver) {
\n\t
svga.play(false, false);
\n\t
svga.once(engine.Event.END_FRAME, function () {
\n\t
}, this);
\n\t
}
\n\t
else if (svga == this.playerSvgaRun) {
\n\t
svga.play();
\n\t
}
\n\t
};
\n\t
GameView.prototype.start = function () {
\n\t
var _this = this;
\n\t
this.gameIng = true;
\n\t
this.creatNpc();
\n\t
this.beginNpc();
\n\t
this.countdown = props.countDown;
\n\t
this.setPlayState(this.playerSvgaRun);
\n\t
this.countdownTimer = setInterval(function () {
\n\t
if (_this.gameIng) {
\n\t
if (_this.countdown > 0) {
\n\t
engine.globalEvent.dispatchEvent('dragon-boat-race-time-update', {
\n\t
time: _this.countdown,
\n\t
});
\n\t
_this.countdown -= 1;
\n\t
}
\n\t
else {
\n\t
engine.globalEvent.dispatchEvent('dragon-boat-race-game-over', {
\n\t
score: _this.score,
\n\t
reason: 1
\n\t
});
\n\t
_this.died();
\n\t
}
\n\t
_this.score += Math.round(_this.speed * props.runScore);
\n\t
engine.globalEvent.dispatchEvent('dragon-boat-race-score-update', {
\n\t
score: _this.score,
\n\t
});
\n\t
}
\n\t
}, 1000);
\n\t
};
\n\t
GameView.prototype.beginNpc = function () {
\n\t
var _this = this;
\n\t
this.timer = setTimeout(function () {
\n\t
if (_this.gameIng) {
\n\t
_this.speed += props.acceleratedSpeed;
\n\t
_this.creatNpc();
\n\t
}
\n\t
_this.beginNpc();
\n\t
}, 2000 / this.speed);
\n\t
};
\n\t
GameView.prototype.pause = function () {
\n\t
this.gameIng = false;
\n\t
};
\n\t
GameView.prototype.revive = function () {
\n\t
this.gameIng = true;
\n\t
};
\n\t
GameView.prototype.resume = function () {
\n\t
this.reset();
\n\t
this.start();
\n\t
};
\n\t
GameView.prototype.creatNpc = function () {
\n\t
var _this = this;
\n\t
var goods = this._goods = ObjectPool$1.getObject(PoolName);
\n\t
this.goodsItems.push(goods);
\n\t
this.NpcBg.addChild(goods);
\n\t
goods.addEventListener(engine.Event.ENTER_FRAME, goods[
\"
onGoodsEnter
\"
] = function () {
\n\t
if (goods.y > 1624) {
\n\t
_this.removeNpc(goods);
\n\t
}
\n\t
else {
\n\t
if (_this.gameIng) {
\n\t
goods.y += (4 * _this.speed);
\n\t
if (goods[
\"
lifeState
\"
] && _this.hasHit(_this.player, goods)) {
\n\t
goods[
\"
lifeState
\"
] = false;
\n\t
if (goods[
\"
npcType
\"
] ==
\"
rain0
\"
) {
\n\t
console.log(
\"
碰到雨滴
\"
);
\n\t
_this.score += props.rainScore;
\n\t
_this.setBoomPosition(_this.waterSvga);
\n\t
engine.Tween.get(goods, null, null, true)
\n\t
.to({ scaleX: 0, scaleY: 0 }, 200)
\n\t
.call(function () { _this.removeNpc(goods); });
\n\t
}
\n\t
else if (goods[
\"
npcType
\"
] ==
\"
rain1
\"
) {
\n\t
console.log(
\"
碰到雨滴
\"
);
\n\t
_this.score += props.rainScore;
\n\t
_this.setBoomPosition(_this.water2Svga);
\n\t
engine.Tween.get(goods, null, null, true)
\n\t
.to({ scaleX: 0, scaleY: 0 }, 200)
\n\t
.call(function () { _this.removeNpc(goods); });
\n\t
}
\n\t
else if (goods[
\"
npcType
\"
] ==
\"
boom
\"
|| goods[
\"
npcType
\"
] ==
\"
stone
\"
) {
\n\t
console.log(
\"
碰到炸弹
\"
);
\n\t
_this.setBoomPosition(_this.boomSvga, function () {
\n\t
engine.globalEvent.dispatchEvent('dragon-boat-race-game-over', {
\n\t
score: _this.score,
\n\t
reason: 2
\n\t
});
\n\t
_this.died();
\n\t
});
\n\t
_this.setPlayState(_this.playerSvgaOver);
\n\t
_this.pause();
\n\t
}
\n\t
engine.globalEvent.dispatchEvent('dragon-boat-race-score-update', {
\n\t
score: _this.score,
\n\t
});
\n\t
}
\n\t
}
\n\t
}
\n\t
}, this);
\n\t
};
\n\t
GameView.prototype.died = function () {
\n\t
this.score = 0;
\n\t
this.pause();
\n\t
};
\n\t
GameView.prototype.removeNpc = function (goods) {
\n\t
this.NpcBg.removeChild(goods);
\n\t
ObjectPool$1.recycleObject(PoolName, goods);
\n\t
goods.removeEventListener(engine.Event.ENTER_FRAME, goods[
\"
onGoodsEnter
\"
], this);
\n\t
var index = this.goodsItems.indexOf(goods);
\n\t
if (index > -1) {
\n\t
this.goodsItems.splice(index, 1);
\n\t
}
\n\t
};
\n\t
GameView.prototype.recycleGoods = function () {
\n\t
clearTimeout(this.timer);
\n\t
clearInterval(this.countdownTimer);
\n\t
for (var _i = 0, _a = this.goodsItems; _i < _a.length; _i++) {
\n\t
var goods = _a[_i];
\n\t
if (goods) {
\n\t
this.NpcBg.removeChild(goods);
\n\t
ObjectPool$1.recycleObject(PoolName, goods);
\n\t
goods.removeEventListener(engine.Event.ENTER_FRAME, goods[
\"
onGoodsEnter
\"
], this);
\n\t
}
\n\t
}
\n\t
this.goodsItems = [];
\n\t
};
\n\t
GameView.prototype.hasHit = function (a, b) {
\n\t
var playerH = a.height;
\n\t
var playerW = a.width;
\n\t
var playerX = a.x;
\n\t
if (props.playerHeight) {
\n\t
playerH = props.playerHeight;
\n\t
}
\n\t
if (props.playerWidth) {
\n\t
playerW = props.playerWidth;
\n\t
playerX = a.x + (a.width - props.playerWidth) / 2;
\n\t
}
\n\t
if (Math.abs((playerX + playerW / 2) - (b.x + b.width / 2)) < playerW / 2 + b.width / 2
\n\t
&&
\n\t
Math.abs((a.y + playerH / 1.3) - (b.y + b.height / 2)) < playerH / 2 + b.height / 2) {
\n\t
return true;
\n\t
}
\n\t
else {
\n\t
return false;
\n\t
}
\n\t
};
\n\t
return GameView;
\n\t
}(engine.Container));
\n\n\t
var 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('dragon-boat-race-reset', _this.reset, _this);
\n\t
engine.globalEvent.addEventListener('dragon-boat-race-start', _this.start, _this);
\n\t
engine.globalEvent.addEventListener('dragon-boat-race-pause', _this.pause, _this);
\n\t
engine.globalEvent.addEventListener('dragon-boat-race-resume', _this.resume, _this);
\n\t
engine.globalEvent.addEventListener('dragon-boat-race-revive', _this.revive, _this);
\n\t
engine.globalEvent.addEventListener('dragon-boat-race
-clear', _this.clear, _this);
\n\t
_this.addEventListener(engine.MouseEvent.CLICK, _this.onTap, _this);
\n\t
var gameView = _this._gameView = new GameView();
\n\t
_this.addChild(gameView);
\n\t
return _this;
\n\t
}
\n\t
GameWrapper.prototype.reset = function (event) {
\n\t
injectProps(event.data);
\n\t
this._gameView.visible = true;
\n\t
this._gameView.reset();
\n\t
};
\n\t
GameWrapper.prototype.start = function (event) {
\n\t
injectProps(event.data);
\n\t
this._status = 1;
\n\t
this._gameView.start();
\n\t
};
\n\t
GameWrapper.prototype.pause = function () {
\n\t
this._gameView.pause();
\n\t
};
\n\t
GameWrapper.prototype.resume = function () {
\n\t
this._gameView.resume();
\n\t
};
\n\t
GameWrapper.prototype.revive = function () {
\n\t
this._gameView.revive();
\n\t
};
\n\t
GameWrapper.prototype.clear = function () {
\n\t
this._gameView.visible = false;
\n\t
};
\n\t
GameWrapper.prototype.onTap = function (event) {
\n\t
};
\n\t
return GameWrapper;
\n\t
}(engine.Container));
\n\t
//# sourceMappingURL=GameWrapper.js.map
\n\n\t
function 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\t
return index;
\n\n
})));
\n
"
}
src/custom/dragon-boat-race/debug/app.js
View file @
3d62bb2f
...
...
@@ -2,7 +2,7 @@
* Created by renjianfeng on 2020-03-13.
*/
const
customId
=
'
food-fell2
'
;
const
customId
=
'
dragon-boat-race
'
;
(
async
function
()
{
let
customModule
=
await
fetch
(
`../meta.json`
);
...
...
@@ -46,21 +46,21 @@ function launchWithCustomModule(customModule) {
},
100
);
setTimeout
(()
=>
{
engine
.
globalEvent
.
dispatchEvent
(
'
food-fell
-reset'
,
{
"goodsProbability"
:
"0.
8,0.1,0.1
"
,
engine
.
globalEvent
.
dispatchEvent
(
'
dragon-boat-race
-reset'
,
{
"goodsProbability"
:
"0.
3,0.2,0.3,0.2
"
,
"countDown"
:
30
,
"acceleratedSpeed"
:
0.1
});
engine
.
globalEvent
.
dispatchEvent
(
'
food-fell
-start'
);
engine
.
globalEvent
.
dispatchEvent
(
'
dragon-boat-race
-start'
);
},
1000
);
});
engine
.
globalEvent
.
addEventListener
(
'
food-fell
-time-update'
,
(
e
)
=>
{
engine
.
globalEvent
.
addEventListener
(
'
dragon-boat-race
-time-update'
,
(
e
)
=>
{
console
.
log
(
e
.
type
,
e
.
data
);
});
engine
.
globalEvent
.
addEventListener
(
'
food-fell
-score-update'
,
(
e
)
=>
{
engine
.
globalEvent
.
addEventListener
(
'
dragon-boat-race
-score-update'
,
(
e
)
=>
{
console
.
log
(
e
.
type
,
e
.
data
);
});
engine
.
globalEvent
.
addEventListener
(
'
food-fell
-game-over'
,
(
e
)
=>
{
engine
.
globalEvent
.
addEventListener
(
'
dragon-boat-race
-game-over'
,
(
e
)
=>
{
console
.
log
(
e
.
type
,
e
.
data
);
});
}
...
...
src/custom/dragon-boat-race/debug/load-assets.js
View file @
3d62bb2f
...
...
@@ -3,60 +3,84 @@
*/
const
assets
=
[
{
"name"
:
"雨滴0"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/badb3627bbcc75276a3eed53daa8b0a454ced6eb.png"
,
"uuid"
:
"d3ce99da-89e1-447d-8c52-b3f391925c3c"
,
"ext"
:
".png"
},
{
"name"
:
"雨滴1"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/5cc0092913c571eeb52317b8e1e0dc715793049c.png"
,
"uuid"
:
"02f17008-1d8d-4108-a0fc-03fbc71fd118"
,
"ext"
:
".png"
},
{
"name"
:
"雨滴2"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/4b938949b85d50b36ef0f66450643495efbf7580.png"
,
"uuid"
:
"46aa4f8a-9a6c-4210-8ffd-92da0dd3bc75"
,
"ext"
:
".png"
},
{
"name"
:
"炸弹"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/171e92283cd13c013ee1b76d28d252ff08815d47.png"
,
"uuid"
:
"eb88b42d-e151-4c1b-94b9-7c16f7bfac29"
,
"ext"
:
".png"
},
{
"name"
:
"石块"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/99b0af0c59fe79a415a3f032149cfacc27e3ac2c.png"
,
"uuid"
:
"ab1bdabc-21ba-46bf-9299-6c638f766c88"
,
"ext"
:
".png"
},
{
"name"
:
"水花"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/11b1f49fa3afa3a48f1dd3e3c1eb294e3fa9d886.svga"
,
"uuid"
:
"cdd2268f-ad65-4b5e-a965-ee61b730da21"
,
"ext"
:
".svga"
},
{
"name"
:
"石头svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/01aa6fcb33aa8231f075257026eab2f0aeb3c27a.svga"
,
"uuid"
:
"846a139d-0990-4db4-a323-f22379932ee4"
,
"ext"
:
".svga"
},
{
"name"
:
"炸弹svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/3b58e7ace031b09c651cf8e7202f9c86e86852c9.svga"
,
"uuid"
:
"d7a3947b-7fcb-48f2-9ddf-2f075d37a619"
,
"ext"
:
".svga"
},
{
"name"
:
"玩家"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/db0130d36ef79865be9c753ea0627027f16341d8.png"
,
"uuid"
:
"4931d296-4421-4a2f-8299-7bab87407c72"
,
"ext"
:
".png"
}
// {
// "name": "循环背景1",
// "url": "//yun.duiba.com.cn/aurora/assets/a57af3e2092f421ebbb47ee7a3d30f4326b5b7cd.jpg",
// "uuid": "d95a5911-1c7c-4b60-9ff1-5cb179738e91",
// "ext": ".jpg"
// },
// {
// "name": "循环背景2",
// "url": "//yun.duiba.com.cn/aurora/assets/489de78a248456d9dee74d8106da3dae40c0268b.jpg",
// "uuid": "2222b6d9-17cb-42a6-a0f2-54c390522ca5",
// "ext": ".jpg"
// },
// {
// "name": "雨滴0",
// "url": "//yun.duiba.com.cn/aurora/assets/badb3627bbcc75276a3eed53daa8b0a454ced6eb.png",
// "uuid": "d3ce99da-89e1-447d-8c52-b3f391925c3c",
// "ext": ".png"
// },
// {
// "name": "雨滴1",
// "url": "//yun.duiba.com.cn/aurora/assets/5cc0092913c571eeb52317b8e1e0dc715793049c.png",
// "uuid": "02f17008-1d8d-4108-a0fc-03fbc71fd118",
// "ext": ".png"
// },
// {
// "name": "雨滴2",
// "url": "//yun.duiba.com.cn/aurora/assets/4b938949b85d50b36ef0f66450643495efbf7580.png",
// "uuid": "46aa4f8a-9a6c-4210-8ffd-92da0dd3bc75",
// "ext": ".png"
// },
// {
// "name": "炸弹",
// "url": "//yun.duiba.com.cn/aurora/assets/171e92283cd13c013ee1b76d28d252ff08815d47.png",
// "uuid": "eb88b42d-e151-4c1b-94b9-7c16f7bfac29",
// "ext": ".png"
// },
// {
// "name": "石块",
// "url": "//yun.duiba.com.cn/aurora/assets/99b0af0c59fe79a415a3f032149cfacc27e3ac2c.png",
// "uuid": "ab1bdabc-21ba-46bf-9299-6c638f766c88",
// "ext": ".png"
// },
// {
// "name": "水花",
// "url": "//yun.duiba.com.cn/aurora/assets/ac85f46bd6e47b729a4d16f91696e12d273cdc75.svga",
// "uuid": "cdd2268f-ad65-4b5e-a965-ee61b730da21",
// "ext": ".svga"
// },
// {
// "name": "石头svga",
// "url": "//yun.duiba.com.cn/aurora/assets/01aa6fcb33aa8231f075257026eab2f0aeb3c27a.svga",
// "uuid": "846a139d-0990-4db4-a323-f22379932ee4",
// "ext": ".svga"
// },
// {
// "name": "炸弹svga",
// "url": "//yun.duiba.com.cn/aurora/assets/862802a8173acc1bde28dd603c7ffd2ccc426700.svga",
// "uuid": "d7a3947b-7fcb-48f2-9ddf-2f075d37a619",
// "ext": ".svga"
// },
// {
// "name": "玩家翻船",
// "url": "//yun.duiba.com.cn/aurora/assets/1615916b51ec577afd09e2392ac8ee3fa32e6891.svga",
// "uuid": "6338498f-78ba-4d4b-a172-85755646baf7",
// "ext": ".svga"
// },
// {
// "name": "玩家滑动",
// "url": "//yun.duiba.com.cn/aurora/assets/790b67abcc05f1690dde2edae058d865ceb1fe6f.svga",
// "uuid": "59920d79-e5bf-46e0-a753-f4e7a1315a97",
// "ext": ".svga"
// },
// {
// "name": "玩家静止",
// "url": "//yun.duiba.com.cn/aurora/assets/db0130d36ef79865be9c753ea0627027f16341d8.png",
// "uuid": "4931d296-4421-4a2f-8299-7bab87407c72",
// "ext": ".png"
// }
];
function
loadAssets
(
customModuleAssets
,
onProgress
,
onComplete
){
...
...
src/custom/dragon-boat-race/debug/main.js
View file @
3d62bb2f
...
...
@@ -25,6 +25,7 @@
inst
.
source
=
'asset://'
+
engine
.
getAssetByName
(
name
).
uuid
;
return
inst
;
}
//# sourceMappingURL=utils.js.map
var
Goods
=
(
function
(
_super
)
{
tslib
.
__extends
(
Goods
,
_super
);
...
...
@@ -32,24 +33,28 @@
var
_this
=
_super
.
call
(
this
)
||
this
;
var
body
;
body
=
_this
.
_body
=
new
engine
.
Rect
();
var
rain
=
new
engine
.
Sprite
(
getTextureByName
(
'雨滴0'
));
var
rain1
=
new
engine
.
Sprite
(
getTextureByName
(
'雨滴1'
));
var
rain2
=
new
engine
.
Sprite
(
getTextureByName
(
'雨滴2'
));
var
rain
=
new
engine
.
Sprite
(
getTextureByName
(
'金币'
));
var
rain1
=
new
engine
.
Sprite
(
getTextureByName
(
'粽子'
));
rain
[
"npcType"
]
=
"rain0"
;
rain1
[
"npcType"
]
=
"rain1"
;
rain2
[
"npcType"
]
=
"rain2"
;
var
stone
=
new
engine
.
Sprite
(
getTextureByName
(
'石块'
));
var
stone
=
new
engine
.
Sprite
(
getTextureByName
(
'木头'
));
stone
[
"npcType"
]
=
"stone"
;
var
boom
=
new
engine
.
Sprite
(
getTextureByName
(
'
炸弹
'
));
var
boom
=
new
engine
.
Sprite
(
getTextureByName
(
'
石块
'
));
boom
[
"npcType"
]
=
"boom"
;
rain
.
visible
=
false
;
rain1
.
visible
=
false
;
rain2
.
visible
=
false
;
stone
.
visible
=
false
;
boom
.
visible
=
false
;
rain
.
anchorX
=
rain
.
width
/
2
;
rain1
.
anchorX
=
rain1
.
width
/
2
;
stone
.
anchorX
=
stone
.
width
/
2
;
boom
.
anchorX
=
boom
.
width
/
2
;
rain
.
anchorY
=
rain
.
height
/
2
;
rain1
.
anchorY
=
rain1
.
height
/
2
;
stone
.
anchorY
=
stone
.
height
/
2
;
boom
.
anchorY
=
boom
.
height
/
2
;
body
.
addChild
(
rain
);
body
.
addChild
(
rain1
);
body
.
addChild
(
rain2
);
body
.
addChild
(
stone
);
body
.
addChild
(
boom
);
_this
.
addChild
(
body
);
...
...
@@ -62,11 +67,20 @@
return
Math
.
floor
(
Math
.
random
()
*
(
end
-
start
)
+
start
);
};
Goods
.
prototype
.
reset
=
function
()
{
this
[
"lifeState"
]
=
true
;
this
.
visible
=
true
;
this
.
rotation
=
0
;
this
.
anchorOffsetY
=
0
;
if
(
this
.
width
<=
0
)
{
this
.
anchorX
=
50
;
}
else
{
this
.
anchorX
=
this
.
width
/
2
;
}
this
.
anchorY
=
this
.
height
/
2
;
this
.
scaleX
=
this
.
scaleY
=
1
;
this
.
y
=
0
;
this
.
x
=
(
750
-
120
)
*
Math
.
random
()
+
30
;
this
.
x
=
(
(
750
-
props
.
maxNpcBound
)
-
120
)
*
Math
.
random
()
+
30
+
props
.
maxNpcBound
;
this
.
rotation
=
0
;
var
random
=
Math
.
random
();
if
(
typeof
(
props
.
goodsProbability
)
==
'string'
)
{
...
...
@@ -74,13 +88,15 @@
console
.
log
(
props
.
goodsProbability
);
}
if
(
random
<
props
.
goodsProbability
[
0
])
{
var
randomNum
=
Math
.
floor
(
Math
.
random
()
*
3
);
this
.
showNpc
(
"rain"
+
randomNum
);
this
.
showNpc
(
"rain0"
);
}
else
if
(
random
>=
props
.
goodsProbability
[
0
]
&&
random
<=
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
]))
{
this
.
showNpc
(
"rain1"
);
}
else
if
(
random
>=
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
])
&&
random
<=
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
]
+
props
.
goodsProbability
[
2
]))
{
this
.
showNpc
(
"stone"
);
}
else
if
(
random
>
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
]))
{
else
if
(
random
>
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
]
+
props
.
goodsProbability
[
2
]
))
{
this
.
showNpc
(
"boom"
);
}
};
...
...
@@ -156,6 +172,9 @@
return
;
}
this
.
_hasSetup
=
true
;
this
.
bg
=
new
engine
.
Container
();
this
.
bg
.
mouseEnabled
=
false
;
this
.
addChild
(
this
.
bg
);
this
.
NpcBg
=
new
engine
.
Container
();
this
.
NpcBg
.
alpha
=
1
;
this
.
NpcBg
.
width
=
0
;
...
...
@@ -163,31 +182,54 @@
this
.
addChild
(
this
.
NpcBg
);
this
.
player
=
new
engine
.
Container
();
this
.
player
.
mouseEnabled
=
false
;
this
.
player
.
mouseChildren
=
false
;
this
.
labelScore
=
new
engine
.
BitmapText
();
this
.
labelScore
.
font
=
props
.
fontName
;
this
.
labelScore
.
scaleX
=
this
.
labelScore
.
scaleY
=
1
;
this
.
addChild
(
this
.
labelScore
);
this
.
waterSvga
=
createSvga
(
"碰到金币svga"
);
this
.
water2Svga
=
createSvga
(
"碰到粽子svga"
);
this
.
boomSvga
=
createSvga
(
"碰到石头svga"
);
this
.
playerSvgaReset
=
new
engine
.
Sprite
(
getTextureByName
(
'玩家静止'
));
this
.
playerSvgaRun
=
createSvga
(
"玩家滑动"
);
this
.
playerSvgaOver
=
createSvga
(
"玩家翻船"
);
this
.
bg1
=
new
engine
.
Sprite
(
getTextureByName
(
'循环背景1'
));
this
.
bg2
=
new
engine
.
Sprite
(
getTextureByName
(
'循环背景2'
));
this
.
bg3
=
new
engine
.
Sprite
(
getTextureByName
(
'循环背景1'
));
this
.
bg4
=
new
engine
.
Sprite
(
getTextureByName
(
'循环背景2'
));
this
.
player
.
addChild
(
this
.
playerSvgaReset
);
this
.
player
.
addChild
(
this
.
playerSvgaRun
);
this
.
player
.
addChild
(
this
.
playerSvgaOver
);
this
.
addChild
(
this
.
waterSvga
);
this
.
addChild
(
this
.
water2Svga
);
this
.
addChild
(
this
.
boomSvga
);
this
.
addChild
(
this
.
player
);
this
.
waterSvga
=
createSvga
(
"水花"
);
this
.
stoneSvga
=
createSvga
(
"石头svga"
);
this
.
playerSvga
=
new
engine
.
Sprite
(
getTextureByName
(
'玩家'
));
this
.
boomSvga
=
createSvga
(
"炸弹svga"
);
this
.
player
.
addChild
(
this
.
playerSvga
);
this
.
player
.
addChild
(
this
.
stoneSvga
);
this
.
player
.
addChild
(
this
.
waterSvga
);
this
.
player
.
addChild
(
this
.
boomSvga
);
this
.
bg
.
addChild
(
this
.
bg1
);
this
.
bg
.
addChild
(
this
.
bg2
);
this
.
bg
.
addChild
(
this
.
bg3
);
this
.
bg
.
addChild
(
this
.
bg4
);
this
.
waterSvga
.
visible
=
false
;
this
.
stone
Svga
.
visible
=
false
;
this
.
water2
Svga
.
visible
=
false
;
this
.
boomSvga
.
visible
=
false
;
this
.
setPlayState
(
this
.
playerSvgaReset
);
this
.
visible
=
false
;
setTimeout
(
function
()
{
_this
.
visible
=
true
;
_this
.
player
.
anchorY
=
_this
.
player
.
height
/
2
;
_this
.
player
.
anchorX
=
_this
.
player
.
width
/
2
;
_this
.
player
.
x
=
375
-
_this
.
player
.
width
/
2
;
_this
.
player
.
y
=
props
.
playerPositionY
;
_this
.
stoneSvga
.
x
=
_this
.
player
.
width
/
2
-
_this
.
stoneSvga
.
width
/
2
+
props
.
boomPosition1Offset
[
0
];
_this
.
stoneSvga
.
y
=
_this
.
player
.
height
/
2
-
_this
.
stoneSvga
.
height
/
2
+
props
.
boomPosition1Offset
[
1
];
_this
.
waterSvga
.
x
=
_this
.
player
.
width
/
2
-
_this
.
waterSvga
.
width
/
2
+
props
.
boomPosition2Offset
[
0
];
_this
.
waterSvga
.
y
=
_this
.
player
.
height
/
2
-
_this
.
waterSvga
.
height
/
2
+
props
.
boomPosition2Offset
[
1
];
_this
.
boomSvga
.
x
=
_this
.
player
.
width
/
2
-
_this
.
boomSvga
.
width
/
2
+
props
.
boomPosition3Offset
[
0
];
_this
.
boomSvga
.
y
=
_this
.
player
.
height
/
2
-
_this
.
boomSvga
.
height
/
2
+
props
.
boomPosition3Offset
[
1
];
_this
.
playerSvgaRun
.
x
=
props
.
playerRunPosition3Offset
[
0
];
_this
.
playerSvgaRun
.
y
=
props
.
playerRunPosition3Offset
[
1
];
_this
.
playerSvgaOver
.
x
=
props
.
playerOverPosition3Offset
[
0
];
_this
.
playerSvgaOver
.
y
=
props
.
playerOverPosition3Offset
[
1
];
_this
.
bg1
.
y
=
0
;
_this
.
bg2
.
y
=
_this
.
bg1
.
height
;
_this
.
bg3
.
y
=
_this
.
bg1
.
height
+
_this
.
bg2
.
height
;
_this
.
bg4
.
y
=
_this
.
bg1
.
height
+
_this
.
bg2
.
height
+
_this
.
bg3
.
height
;
engine
.
Tween
.
get
(
_this
.
playerSvgaReset
,
{
loop
:
true
})
.
to
({
y
:
10
},
500
)
.
to
({
y
:
0
},
500
)
.
to
({
y
:
10
},
500
)
.
call
(
function
()
{
});
},
300
);
this
.
rectBg
=
new
engine
.
Container
();
this
.
rectBg
.
alpha
=
0
;
...
...
@@ -197,33 +239,92 @@
this
.
rectBg
.
addEventListener
(
engine
.
MouseEvent
.
MOUSE_DOWN
,
this
.
onDownStage
,
this
);
this
.
rectBg
.
addEventListener
(
engine
.
MouseEvent
.
MOUSE_MOVE
,
this
.
onMoveStage
,
this
);
this
.
rectBg
.
addEventListener
(
engine
.
MouseEvent
.
MOUSE_OUT
,
this
.
onOutStage
,
this
);
this
.
rectBg
.
addEventListener
(
engine
.
Event
.
ENTER_FRAME
,
this
.
enterFrame
,
this
);
};
GameView
.
prototype
.
setBoomPosition
=
function
(
svga
,
callback
)
{
svga
.
x
=
this
.
player
.
x
;
svga
.
y
=
this
.
player
.
y
;
if
(
svga
==
this
.
waterSvga
)
{
svga
.
x
+=
props
.
boomPosition1Offset
[
0
];
svga
.
y
+=
props
.
boomPosition1Offset
[
1
];
}
else
if
(
svga
==
this
.
water2Svga
)
{
svga
.
x
+=
props
.
boomPosition2Offset
[
0
];
svga
.
y
+=
props
.
boomPosition2Offset
[
1
];
}
else
if
(
svga
==
this
.
boomSvga
)
{
svga
.
x
+=
props
.
boomPosition3Offset
[
0
];
svga
.
y
+=
props
.
boomPosition3Offset
[
1
];
}
svga
.
visible
=
true
;
svga
.
play
(
true
,
false
);
svga
.
once
(
engine
.
Event
.
END_FRAME
,
function
()
{
svga
.
visible
=
false
;
if
(
callback
)
{
callback
();
}
},
this
);
};
GameView
.
prototype
.
enterFrame
=
function
()
{
if
(
this
.
bg
.
y
>=
0
)
{
this
.
bg
.
y
=
-
this
.
bg3
.
y
;
}
if
(
this
.
gameIng
)
{
this
.
bg
.
y
+=
(
4
*
this
.
speed
);
}
};
GameView
.
prototype
.
reset
=
function
()
{
this
.
recycleGoods
();
this
.
score
=
0
;
this
.
speed
=
1
;
this
.
bg
.
y
=
-
1624
;
this
.
player
.
anchorY
=
this
.
player
.
height
/
2
;
this
.
player
.
anchorX
=
this
.
player
.
width
/
2
;
this
.
player
.
x
=
375
-
this
.
player
.
width
/
2
;
this
.
player
.
y
=
props
.
playerPositionY
;
this
.
setPlayState
(
this
.
playerSvgaReset
);
};
GameView
.
prototype
.
setPlayState
=
function
(
svga
)
{
this
.
playerSvgaReset
.
visible
=
false
;
this
.
playerSvgaRun
.
visible
=
false
;
this
.
playerSvgaOver
.
visible
=
false
;
console
.
log
(
svga
);
svga
.
visible
=
true
;
if
(
svga
==
this
.
playerSvgaOver
)
{
svga
.
play
(
false
,
false
);
svga
.
once
(
engine
.
Event
.
END_FRAME
,
function
()
{
},
this
);
}
else
if
(
svga
==
this
.
playerSvgaRun
)
{
svga
.
play
();
}
};
GameView
.
prototype
.
start
=
function
()
{
var
_this
=
this
;
this
.
score
=
0
;
this
.
speed
=
1
;
this
.
gameIng
=
true
;
this
.
creatNpc
();
this
.
beginNpc
();
this
.
countdown
=
props
.
countDown
;
this
.
setPlayState
(
this
.
playerSvgaRun
);
this
.
countdownTimer
=
setInterval
(
function
()
{
if
(
_this
.
gameIng
)
{
if
(
_this
.
countdown
>
0
)
{
engine
.
globalEvent
.
dispatchEvent
(
'
food-fell
-time-update'
,
{
engine
.
globalEvent
.
dispatchEvent
(
'
dragon-boat-race
-time-update'
,
{
time
:
_this
.
countdown
,
});
_this
.
countdown
-=
1
;
}
else
{
engine
.
globalEvent
.
dispatchEvent
(
'
food-fell
-game-over'
,
{
engine
.
globalEvent
.
dispatchEvent
(
'
dragon-boat-race
-game-over'
,
{
score
:
_this
.
score
,
reason
:
1
});
_this
.
died
();
}
_this
.
score
+=
Math
.
round
(
_this
.
speed
*
props
.
runScore
);
engine
.
globalEvent
.
dispatchEvent
(
'dragon-boat-race-score-update'
,
{
score
:
_this
.
score
,
});
}
},
1000
);
};
...
...
@@ -251,7 +352,6 @@
var
_this
=
this
;
var
goods
=
this
.
_goods
=
ObjectPool$1
.
getObject
(
PoolName
);
this
.
goodsItems
.
push
(
goods
);
console
.
log
(
goods
);
this
.
NpcBg
.
addChild
(
goods
);
goods
.
addEventListener
(
engine
.
Event
.
ENTER_FRAME
,
goods
[
"onGoodsEnter"
]
=
function
()
{
if
(
goods
.
y
>
1624
)
{
...
...
@@ -260,42 +360,39 @@
else
{
if
(
_this
.
gameIng
)
{
goods
.
y
+=
(
4
*
_this
.
speed
);
if
(
_this
.
hasHit
(
_this
.
player
,
goods
))
{
if
(
goods
[
"npcType"
].
indexOf
(
"rain"
)
>
-
1
)
{
if
(
goods
[
"lifeState"
]
&&
_this
.
hasHit
(
_this
.
player
,
goods
))
{
goods
[
"lifeState"
]
=
false
;
if
(
goods
[
"npcType"
]
==
"rain0"
)
{
console
.
log
(
"碰到雨滴"
);
_this
.
score
+=
props
.
rainScore
;
_this
.
waterSvga
.
visible
=
true
;
_this
.
waterSvga
.
play
(
false
,
false
);
_this
.
waterSvga
.
once
(
engine
.
Event
.
END_FRAME
,
function
()
{
_this
.
waterSvga
.
visible
=
false
;
},
_this
);
_this
.
setBoomPosition
(
_this
.
waterSvga
);
engine
.
Tween
.
get
(
goods
,
null
,
null
,
true
)
.
to
({
scaleX
:
0
,
scaleY
:
0
},
200
)
.
call
(
function
()
{
_this
.
removeNpc
(
goods
);
});
}
else
if
(
goods
[
"npcType"
]
==
"stone"
)
{
console
.
log
(
"碰到石头"
);
_this
.
score
+=
props
.
stoneScore
;
_this
.
stoneSvga
.
visible
=
true
;
_this
.
stoneSvga
.
play
(
false
,
false
);
_this
.
stoneSvga
.
once
(
engine
.
Event
.
END_FRAME
,
function
()
{
_this
.
stoneSvga
.
visible
=
false
;
},
_this
);
else
if
(
goods
[
"npcType"
]
==
"rain1"
)
{
console
.
log
(
"碰到雨滴"
);
_this
.
score
+=
props
.
rainScore
;
_this
.
setBoomPosition
(
_this
.
water2Svga
);
engine
.
Tween
.
get
(
goods
,
null
,
null
,
true
)
.
to
({
scaleX
:
0
,
scaleY
:
0
},
200
)
.
call
(
function
()
{
_this
.
removeNpc
(
goods
);
});
}
else
if
(
goods
[
"npcType"
]
==
"boom"
)
{
else
if
(
goods
[
"npcType"
]
==
"boom"
||
goods
[
"npcType"
]
==
"stone"
)
{
console
.
log
(
"碰到炸弹"
);
_this
.
boomSvga
.
visible
=
true
;
_this
.
boomSvga
.
play
(
false
,
false
);
_this
.
boomSvga
.
once
(
engine
.
Event
.
END_FRAME
,
function
()
{
_this
.
boomSvga
.
visible
=
false
;
engine
.
globalEvent
.
dispatchEvent
(
'food-fell-game-over'
,
{
_this
.
setBoomPosition
(
_this
.
boomSvga
,
function
()
{
engine
.
globalEvent
.
dispatchEvent
(
'dragon-boat-race-game-over'
,
{
score
:
_this
.
score
,
reason
:
2
});
_this
.
died
();
},
_this
);
});
_this
.
setPlayState
(
_this
.
playerSvgaOver
);
_this
.
pause
();
}
engine
.
globalEvent
.
dispatchEvent
(
'
food-fell
-score-update'
,
{
engine
.
globalEvent
.
dispatchEvent
(
'
dragon-boat-race
-score-update'
,
{
score
:
_this
.
score
,
});
_this
.
removeNpc
(
goods
);
}
}
}
...
...
@@ -331,7 +428,6 @@
var
playerH
=
a
.
height
;
var
playerW
=
a
.
width
;
var
playerX
=
a
.
x
;
console
.
log
(
"props"
,
props
.
playerHeight
);
if
(
props
.
playerHeight
)
{
playerH
=
props
.
playerHeight
;
}
...
...
@@ -350,19 +446,17 @@
};
return
GameView
;
}(
engine
.
Container
));
//# sourceMappingURL=GameView.js.map
var
GameWrapper
=
(
function
(
_super
)
{
tslib
.
__extends
(
GameWrapper
,
_super
);
function
GameWrapper
()
{
var
_this
=
_super
.
call
(
this
)
||
this
;
alert
(
123
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-reset'
,
_this
.
reset
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-start'
,
_this
.
start
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-pause'
,
_this
.
pause
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-resume'
,
_this
.
resume
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-revive'
,
_this
.
revive
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-clear'
,
_this
.
clear
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-reset'
,
_this
.
reset
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-start'
,
_this
.
start
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-pause'
,
_this
.
pause
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-resume'
,
_this
.
resume
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-revive'
,
_this
.
revive
,
_this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-clear'
,
_this
.
clear
,
_this
);
_this
.
addEventListener
(
engine
.
MouseEvent
.
CLICK
,
_this
.
onTap
,
_this
);
var
gameView
=
_this
.
_gameView
=
new
GameView
();
_this
.
addChild
(
gameView
);
...
...
src/custom/dragon-boat-race/debug/main.js.map
View file @
3d62bb2f
{"version":3,"file":"index.js","sources":["src/custom/dragon-boat-race/src/props.ts","src/custom/dragon-boat-race/src/game/utils.ts","src/custom/dragon-boat-race/src/game/Goods.ts","src/custom/dragon-boat-race/src/game/object-pool-init.ts","src/custom/dragon-boat-race/src/game/GameView.ts","src/custom/dragon-boat-race/src/game/GameWrapper.ts","src/custom/dragon-boat-race/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","/**\n * Created by rockyl on 2020-01-21.\n */\n\nexport function getTexture(uuid) {\n\treturn engine.Texture.from(engine.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 * Created by rockyl on 2020-02-02.\n *\n * 掉落物品\n */\nimport {getTextureByName} from \"./utils\";\nimport {props} from \"../props\";\n\nexport class Goods extends engine.Container {\n\tprivate _body:engine.Rect\n\tprivate _toY;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tlet body\n\t\tbody = this._body =new engine.Rect()\n\t\t\n\t\t// let randomNum = Math.floor(Math.random() * 3)\t\t\n\t\t// console.log('雨滴' + randomNum);\n\t\t\n\t\tlet rain = new engine.Sprite(getTextureByName('雨滴0'));\n\t\tlet rain1 = new engine.Sprite(getTextureByName('雨滴1'));\n\t\tlet rain2 = new engine.Sprite(getTextureByName('雨滴2'));\n\t\train[\"npcType\"]=\"rain0\"\n\t\train1[\"npcType\"]=\"rain1\"\n\t\train2[\"npcType\"]=\"rain2\"\n\t\tlet stone = new engine.Sprite(getTextureByName('石块'));\n\t\tstone[\"npcType\"]=\"stone\"\n\t\tlet boom = new engine.Sprite(getTextureByName('炸弹'));\n\t\tboom[\"npcType\"]=\"boom\"\n\n\t\train.visible=false;\n\t\train1.visible=false;\n\t\train2.visible=false;\n\t\tstone.visible=false;\n\t\tboom.visible=false;\n\t\tbody.addChild(rain)\n\t\tbody.addChild(rain1)\n\t\tbody.addChild(rain2)\n\t\tbody.addChild(stone)\n\t\tbody.addChild(boom)\n\t\t\n\t\tthis.addChild(body);\n\t\tbody.width=.0001;\n\t\tbody.height=.0001;\n\t\tbody.mouseEnabled=false;\n\t}\n\n\n\tgetRandomNumberByRange(start, end) {\n\t\treturn Math.floor(Math.random() * (end - start) + start)\n\t}\n\n\treset() {\n\t\tthis.visible = true;\n\t\tthis.rotation = 0;\n\t\tthis.anchorOffsetY = 0;\n\t\tthis.y = 0;\n\t\tthis.x = (750-120)*Math.random()+30;\n\t\tthis.rotation = 0;\n\t\tlet random=Math.random()\n\t\tif(typeof (props.goodsProbability) == 'string'){\n\t\t\tprops.goodsProbability=props.goodsProbability.split(',').map((i: string) => +i)\n\t\t\tconsole.log(props.goodsProbability);\n\t\t\t\n\t\t}\n\t\tif(random<props.goodsProbability[0]){\n\t\t\tlet randomNum = Math.floor(Math.random() * 3)\t\t\n\t\t\tthis.showNpc(\"rain\" + randomNum)\n\t\t}else if(random>=props.goodsProbability[0]&&random<=(props.goodsProbability[0]+props.goodsProbability[1])){\n\t\t\tthis.showNpc(\"stone\")\n\t\t}else if(random>(props.goodsProbability[0]+props.goodsProbability[1])){\n\t\t\tthis.showNpc(\"boom\")\n\t\t}\n\t}\n\n\n\tshowNpc(type){\n\t\tfor(let i=0;i<this._body.children.length;i++){\n\t\t\tthis._body.children[i].visible=false;\n\t\t\tthis._body.children[i].mouseEnabled=false;\n\t\t}\t\t\n\t\tfor(let i=0;i<this._body.children.length;i++){\n\t\t\tif(this._body.children[i][\"npcType\"]==type){\n\t\t\t\tthis[\"npcType\"]=type\n\t\t\t\tthis._body.children[i].visible=true;\n\t\t\t\tthis._body.children[i].mouseEnabled=false;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\tset anchorOffsetY(v) {\n\t\tthis._body.y = v;\n\t}\n}\n","/**\n * Created by rockyl on 2020-02-03.\n */\n\nimport {Goods} from \"./Goods\";\nimport ObjectPool = engine.ObjectPool;\n\nexport const PoolName: string = 'goods';\n\nObjectPool.registerPool(PoolName, function () {\n\treturn new Goods();\n}, function (item: Goods, data) {\n\titem.reset();\n});\n","/**\n * Created by rockyl on 2018/8/16.\n */\n\nimport { props } from \"../props\";\nimport { playSound, createSvga } from \"./utils\";\nimport ObjectPool = engine.ObjectPool;\nimport { getTextureByName } from \"./utils\";\nimport { Goods } from \"./Goods\";\nimport { PoolName } from \"./object-pool-init\";\n\n\n\nexport default class GameView extends engine.Container {\n\n\tprivate _hasSetup;\n\n\t//玩家\n\tprivate player: engine.Container;\n\t//触摸层\n\t// private rectBg: engine.Rect;\n\tprivate rectBg: engine.Container;\n\t//npc层\n\tprivate NpcBg: engine.Container;\n\n\t//当前分数\n\tprivate score\n\n\t//游戏状态\n\tprivate gameIng;\n\n\t//npc出身计时器\n\tprivate timer\n\t//倒计时计时器\n\tprivate countdownTimer: any\n\t//倒计时\n\tprivate countdown: number\n\n\t//当前速度\n\tprivate speed: number\n\n\t// 当前场景上面的物品\n\tprivate goodsItems = []\n\n\n\tprivate _goods: Goods;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.once(engine.Event.ADDED_TO_STAGE, this.setup, this);\n\t}\n\n\tprivate waterSvga\n\tprivate stoneSvga\n\tprivate boomSvga\n\tprivate playerSvga\n\n\tsetup() {\n\t\tif (this._hasSetup) {\n\t\t\treturn;\n\t\t}\n\t\tthis._hasSetup = true;\n\t\tthis.NpcBg = new engine.Container();\n\t\tthis.NpcBg.alpha = 1;\n\t\tthis.NpcBg.width = 0;\n\t\tthis.NpcBg.height = 0;\n\t\tthis.addChild(this.NpcBg);\n\n\t\n\n\t\tthis.player = new engine.Container();\n\t\tthis.player.mouseEnabled = false;\n\t//\tthis.player.fillColor=\"rgba(0, 0, 0,1)\"\n\t\t//console.log(this.player.fillColor)\n\t\n\t\tthis.addChild(this.player);\n\n\t\tthis.waterSvga=createSvga(\"水花\")\n\t\tthis.stoneSvga=createSvga(\"石头svga\")\n\t\t// this.playerSvga=createSvga(\"玩家\")\n\t\tthis.playerSvga= new engine.Sprite(getTextureByName('玩家'))\n\t\tthis.boomSvga=createSvga(\"炸弹svga\")\n\t\tthis.player.addChild(this.playerSvga);\n\t\tthis.player.addChild(this.stoneSvga);\n\t\tthis.player.addChild(this.waterSvga);\n\t\tthis.player.addChild(this.boomSvga);\n\t\t// this.playerSvga.gotoAndPlay(1);\n\n\t\t\n\n\t\tthis.waterSvga.visible = false\n\t\tthis.stoneSvga.visible = false\n\t\tthis.boomSvga.visible = false\n\t\t\n\t\tthis.visible=false;\n\t\tsetTimeout(()=>{\n\t\t\tthis.visible=true;\n\t\t\tthis.player.anchorY = this.player.height / 2;\n\t\t\tthis.player.anchorX = this.player.width / 2;\n\t\t\tthis.player.x = 375 - this.player.width / 2;\n\t\t\tthis.player.y = props.playerPositionY;\n\n\t\t\tthis.stoneSvga.x = this.player.width / 2 - \tthis.stoneSvga.width/2 + props.boomPosition1Offset[0];\n\t\t\tthis.stoneSvga.y = this.player.height / 2 - this.stoneSvga.height/2 + props.boomPosition1Offset[1];\n\n\t\t\tthis.waterSvga.x = this.player.width / 2 - \tthis.waterSvga.width/2+ props.boomPosition2Offset[0];\n\t\t\tthis.waterSvga.y = this.player.height / 2 - this.waterSvga.height/2 + props.boomPosition2Offset[1];\n\n\t\t\tthis.boomSvga.x = this.player.width / 2 - \tthis.boomSvga.width/2+ props.boomPosition3Offset[0];\n\t\t\tthis.boomSvga.y = this.player.height / 2 - this.boomSvga.height/2 + props.boomPosition3Offset[1];\n\n\t\t\t// this.stoneSvga.x=props.boomPositionOffset[0]\n\t\t\t// this.stoneSvga.y=props.boomPositionOffset[1]\n\n\t\t\t// this.waterSvga.x=props.boomPositionOffset[0]\n\t\t\t// this.waterSvga.y=props.boomPositionOffset[1]\n\n\t\t\t// this.boomSvga.x=props.boomPositionOffset[0]\n\t\t\t// this.boomSvga.y=props.boomPositionOffset[1]\n\n\t\t\t\n\t\t},300)\n\n\t\t\n\t\tthis.rectBg = new engine.Container();\n\t\tthis.rectBg.alpha = 0;\n\t\tthis.rectBg.width = 750;\n\t\tthis.rectBg.height = 1624;\n\t\tthis.addChild(this.rectBg)\n\n\t\tthis.rectBg.addEventListener(engine.MouseEvent.MOUSE_DOWN, this.onDownStage, this);\n\t\tthis.rectBg.addEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMoveStage, this);\n\t\tthis.rectBg.addEventListener(engine.MouseEvent.MOUSE_OUT, this.onOutStage, this);\n\n\t\n\t}\n\n\n\t/**\n\t * 重置场景\n\t */\n\treset() {\n\t\tthis.recycleGoods()\n\t}\n\n\t/**\n\t * 开始\n\t */\n\tstart() {\n\t\tthis.score = 0;\n\t\tthis.speed = 1\n\t\tthis.gameIng = true;\n\t\tthis.creatNpc()\n\t\tthis.beginNpc()\n\t\tthis.countdown = props.countDown;\n\t\t\n\t\tthis.countdownTimer = setInterval(() => {\n\t\t\tif (this.gameIng) {\n\t\t\t\tif (this.countdown > 0) {\n\t\t\t\t\tengine.globalEvent.dispatchEvent('food-fell-time-update', {\n\t\t\t\t\t\ttime: this.countdown,\n\t\t\t\t\t});\n\t\t\t\t\tthis.countdown -= 1\n\t\t\t\t} else {\n\t\t\t\t\tengine.globalEvent.dispatchEvent('food-fell-game-over', {\n\t\t\t\t\t\tscore: this.score,\n\t\t\t\t\t\treason: 1\n\t\t\t\t\t});\n\t\t\t\t\tthis.died()\n\t\t\t\t}\n\t\t\t}\n\t\t}, 1000)\n\t}\n\n\t/**\n\t * npc开始掉落\n\t */\n\tbeginNpc() {\n\t\tthis.timer = setTimeout(() => {\n\t\t\tif (this.gameIng) {\n\t\t\t\tthis.speed += props.acceleratedSpeed;\n\t\t\t\tthis.creatNpc()\n\t\t\t}\n\t\t\t//递归执行\n\t\t\tthis.beginNpc()\n\t\t}, 2000 / this.speed)\n\t}\n\n\t/**\n\t * 暂停\n\t */\n\tpause() {\n\t\tthis.gameIng = false;\n\t}\n\n\t/**\n\t * 恢复\n\t */\n\trevive() {\n\t\tthis.gameIng = true;\n\t}\n\n\t/**\n\t * 重新开始\n\t */\n\tresume() {\n\t\tthis.reset()\n\t\tthis.start()\n\t}\n\n\t/**\n\t * 创建NPC\n\t */\n\tprivate creatNpc() {\n\t\tlet goods = this._goods = <Goods>ObjectPool.getObject(PoolName);\n\t\tthis.goodsItems.push(goods)\n\t\tconsole.log(goods);\n\t\t\n\t\tthis.NpcBg.addChild(goods);\n\t\tgoods.addEventListener(engine.Event.ENTER_FRAME, goods[\"onGoodsEnter\"] = () => {\n\t\t\tif (goods.y > 1624) {\n\t\t\t\tthis.removeNpc(goods)\n\t\t\t} else {\n\t\t\t\tif (this.gameIng) {\n\t\t\t\t\t//速度叠加\n\t\t\t\t\tgoods.y += (4 * this.speed)\n\t\t\t\t\t//如果玩家和物品发生碰撞\n\t\t\t\t\tif (this.hasHit(this.player, goods)) {\n\t\t\t\t\t\tif (goods[\"npcType\"].indexOf(\"rain\") > -1) {\n\t\t\t\t\t\t\tconsole.log(\"碰到雨滴\")\n\t\t\t\t\t\t\tthis.score += props.rainScore\n\t\t\t\t\t\t\tthis.waterSvga.visible=true;\n\t\t\t\t\t\t//\tthis.waterSvga.x= goods.x - this.player.x;\n\t\t\t\t\t\t\tthis.waterSvga.play(false, false)\n\t\t\t\t\t\t\tthis.waterSvga.once(engine.Event.END_FRAME, ()=>{\n\t\t\t\t\t\t\t\tthis.waterSvga.visible=false;\n\t\t\t\t\t\t\t}, this);\n\n\t\t\t\t\t\t} else if (goods[\"npcType\"] == \"stone\") {\n\t\t\t\t\t\t\tconsole.log(\"碰到石头\")\n\t\t\t\t\t\t\tthis.score += props.stoneScore\n\t\t\t\t\t\t\tthis.stoneSvga.visible=true;\n\t\t\t\t\t\t\tthis.stoneSvga.play(false, false)\n\t\t\t\t\t\t\tthis.stoneSvga.once(engine.Event.END_FRAME, ()=>{\n\t\t\t\t\t\t\t\tthis.stoneSvga.visible=false;\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t} else if (goods[\"npcType\"] == \"boom\") {\n\t\t\t\t\t\t\tconsole.log(\"碰到炸弹\")\n\t\t\t\t\t\t\tthis.boomSvga.visible=true;\n\t\t\t\t\t\t\tthis.boomSvga.play(false, false)\n\t\t\t\t\t\t\tthis.boomSvga.once(engine.Event.END_FRAME, ()=>{\n\t\t\t\t\t\t\t\tthis.boomSvga.visible=false;\n\t\t\t\t\t\t\t\tengine.globalEvent.dispatchEvent('food-fell-game-over', {\n\t\t\t\t\t\t\t\t\tscore: this.score,\n\t\t\t\t\t\t\t\t\treason: 2\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.died()\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tengine.globalEvent.dispatchEvent('food-fell-score-update', {\n\t\t\t\t\t\t\tscore: this.score,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.removeNpc(goods)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}, this);\n\t}\n\n\t/**\n\t * 玩家死亡\n\t */\n\tprivate died() {\n\t\tthis.score = 0\n\t\tthis.pause()\n\t}\n\n\t/**\n\t * 回收指定物品\n\t * @param goods 物品\n\t */\n\tprivate removeNpc(goods) {\n\t\tthis.NpcBg.removeChild(goods);\n\t\tObjectPool.recycleObject(PoolName, goods);\n\t\tgoods.removeEventListener(engine.Event.ENTER_FRAME, goods[\"onGoodsEnter\"], this);\n\t\tlet index = this.goodsItems.indexOf(goods);\n\t\tif (index > -1) {\n\t\t\tthis.goodsItems.splice(index, 1);\n\t\t}\n\t}\n\n\t/**\n\t * 回收对象\n\t */\n\tprivate recycleGoods() {\n\t\tclearTimeout(this.timer)\n\t\tclearInterval(this.countdownTimer)\n\t\tfor (let goods of this.goodsItems) {\n\t\t\tif (goods) {\n\t\t\t\tthis.NpcBg.removeChild(goods);\n\t\t\t\tObjectPool.recycleObject(PoolName, goods);\n\t\t\t\tgoods.removeEventListener(engine.Event.ENTER_FRAME, goods[\"onGoodsEnter\"], this);\n\t\t\t}\n\t\t}\n\t\tthis.goodsItems = []\n\t}\n\n\tprivate moveCatchX = 0\n\tprivate playerCatchX = 0\n\n\t/**\n\t * 碰撞检测\n\t * @param a a盒子\n\t * @param b b盒子\n\t */\n\tprivate hasHit(a, b) {\n\n\t\tlet playerH=a.height\n\t\tlet playerW=a.width\n\t\tlet playerX=a.x\n\t\tconsole.log(\"props\",props.playerHeight)\n\t\tif(props.playerHeight){\n\t\t\tplayerH=props.playerHeight\n\t\t}\n\t\tif(props.playerWidth){\n\t\t\tplayerW=props.playerWidth\n\t\t\tplayerX=a.x+(a.width-props.playerWidth)/2\n\t\t}\n\n\t\tif (\n\t\t\tMath.abs((playerX + playerW / 2) - (b.x + b.width / 2)) < playerW / 2 + b.width / 2\n\t\t\t&&\n\t\t\t// Math.abs((a.y + a.height / 2 ) - (b.y + b.height / 2)) < a.height / 2 + b.height / 2\n\t\t\tMath.abs((a.y + playerH / 1.3 ) - (b.y + b.height / 2)) < playerH / 2 + b.height / 2\n\t\t) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate onDownStage = (e) => {\n\t\tthis.moveCatchX = e.localX;\n\t\tthis.playerCatchX = this.player.x\n\t}\n\n\tprivate onMoveStage = (e) => {\n\t\tlet maxStageBound=props.maxStageBound;\n\t\tif (this.gameIng) {\n\t\t\tlet playerX=this.playerCatchX + (e.localX - this.moveCatchX)\n\t\t\tif(playerX<maxStageBound){\n\t\t\t\tthis.player.x=maxStageBound\n\t\t\t}else if(playerX+this.player.width+maxStageBound>750){\n\t\t\t\tthis.player.x=750-maxStageBound-this.player.width\n\t\t\t}else{\n\t\t\t\tthis.player.x=playerX\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onOutStage = (e) => {\n\t\tthis.moveCatchX = 0\n\t}\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\tprivate _status;\n\tprivate _gameView: GameView;\n\n\tconstructor() {\n\t\tsuper();\n\t\talert(123)\n\n\t\tengine.globalEvent.addEventListener('food-fell-reset', this.reset, this);\n\t\tengine.globalEvent.addEventListener('food-fell-start', this.start, this);\n\t\tengine.globalEvent.addEventListener('food-fell-pause', this.pause, this);\n\t\tengine.globalEvent.addEventListener('food-fell-resume', this.resume, this);\n\t\tengine.globalEvent.addEventListener('food-fell-revive', this.revive, this);\n\t\tengine.globalEvent.addEventListener('food-fell-clear', this.clear, this);\n\n\t\tthis.addEventListener(engine.MouseEvent.CLICK, this.onTap, this);\n\n\t\tlet gameView = this._gameView = new GameView();\n\t\tthis.addChild(gameView);\n\t\t// gameView.reset()\n\t\t// gameView.start()\n\t}\n\n\treset(event: engine.Event) {\t\t\n\t\tinjectProps(event.data);\n\t\tthis._gameView.visible = true;\n\t\tthis._gameView.reset();\n\t}\n\n\tstart(event: engine.Event) {\n\t\tinjectProps(event.data);\n\t\tthis._status = 1;\n\t\tthis._gameView.start();\n\t}\n\n\tpause() {\n\t\tthis._gameView.pause();\n\t}\n\n\tresume() {\n\t\tthis._gameView.resume();\n\t}\n\n\trevive() {\n\t\tthis._gameView.revive();\n\t}\n\n\tclear() {\n\t\tthis._gameView.visible = false;\n\t}\n\n\tprivate onTap(event) {\n\t//\tthis._gameView.tap(event);\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\treturn instance;\n}\n"],"names":["__extends","ObjectPool"],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"index.js","sources":["src/custom/dragon-boat-race/src/props.ts","src/custom/dragon-boat-race/src/game/utils.ts","src/custom/dragon-boat-race/src/game/Goods.ts","src/custom/dragon-boat-race/src/game/object-pool-init.ts","src/custom/dragon-boat-race/src/game/GameView.ts","src/custom/dragon-boat-race/src/game/GameWrapper.ts","src/custom/dragon-boat-race/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","/**\n * Created by rockyl on 2020-01-21.\n */\n\nexport function getTexture(uuid) {\n\treturn engine.Texture.from(engine.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 * Created by rockyl on 2020-02-02.\n *\n * 掉落物品\n */\nimport {getTextureByName} from \"./utils\";\nimport {props} from \"../props\";\n\nexport class Goods extends engine.Container {\n\tprivate _body:engine.Rect\n\tprivate _toY;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tlet body\n\t\tbody = this._body =new engine.Rect()\n\t\t\n\t\t// let randomNum = Math.floor(Math.random() * 3)\t\t\n\t\t// console.log('雨滴' + randomNum);\n\t\t\n\t\tlet rain = new engine.Sprite(getTextureByName('金币'));\n\t\tlet rain1 = new engine.Sprite(getTextureByName('粽子'));\n\t\train[\"npcType\"]=\"rain0\"\n\t\train1[\"npcType\"]=\"rain1\"\n\t\tlet stone = new engine.Sprite(getTextureByName('木头'));\n\t\tstone[\"npcType\"]=\"stone\"\n\t\tlet boom = new engine.Sprite(getTextureByName('石块'));\n\t\tboom[\"npcType\"]=\"boom\"\n\n\t\train.visible=false;\n\t\train1.visible=false;\n\t\tstone.visible=false;\n\t\tboom.visible=false;\n\n\t\train.anchorX=rain.width/2\n\t\train1.anchorX=rain1.width/2\n\t\tstone.anchorX=stone.width/2\n\t\tboom.anchorX=boom.width/2\n\n\t\train.anchorY=rain.height/2\n\t\train1.anchorY=rain1.height/2\n\t\tstone.anchorY=stone.height/2\n\t\tboom.anchorY=boom.height/2\n\n\t\tbody.addChild(rain)\n\t\tbody.addChild(rain1)\n\t\tbody.addChild(stone)\n\t\tbody.addChild(boom)\n\t\t\n\t\tthis.addChild(body);\n\t\tbody.width=.0001;\n\t\tbody.height=.0001;\n\t\tbody.mouseEnabled=false;\n\t}\n\n\n\tgetRandomNumberByRange(start, end) {\n\t\treturn Math.floor(Math.random() * (end - start) + start)\n\t}\n\n\treset() {\n\t\tthis[\"lifeState\"]=true;\n\t\tthis.visible = true;\n\t\tthis.rotation = 0;\n\t\tthis.anchorOffsetY = 0;\n\t\tif(this.width<=0){\n\t\t\tthis.anchorX=50;\n\t\t}else{\n\t\t\tthis.anchorX=this.width/2;\n\t\t}\n\t\t\n\t\tthis.anchorY=this.height/2;\n\t\tthis.scaleX=this.scaleY=1;\n\t\tthis.y = 0;\n\t\tthis.x = ((750-props.maxNpcBound)-120)*Math.random()+30+props.maxNpcBound;\n\t\tthis.rotation = 0;\n\t\tlet random=Math.random()\n\t\tif(typeof (props.goodsProbability) == 'string'){\n\t\t\tprops.goodsProbability=props.goodsProbability.split(',').map((i: string) => +i)\n\t\t\tconsole.log(props.goodsProbability);\n\t\t}\n\t\tif(random<props.goodsProbability[0]){\n\t\t\tthis.showNpc(\"rain0\")\n\t\t}else if(random>=props.goodsProbability[0]&&random<=(props.goodsProbability[0]+props.goodsProbability[1])){\n\t\t\tthis.showNpc(\"rain1\")\n\t\t}else if(random>=(props.goodsProbability[0]+props.goodsProbability[1])&&random<=(props.goodsProbability[0]+props.goodsProbability[1]+props.goodsProbability[2])){\n\t\t\tthis.showNpc(\"stone\")\n\t\t}else if(random>(props.goodsProbability[0]+props.goodsProbability[1]+props.goodsProbability[2])){\n\t\t\tthis.showNpc(\"boom\")\n\t\t}\n\t}\n\n\n\tshowNpc(type){\n\t\tfor(let i=0;i<this._body.children.length;i++){\n\t\t\tthis._body.children[i].visible=false;\n\t\t\tthis._body.children[i].mouseEnabled=false;\n\t\t}\t\t\n\t\tfor(let i=0;i<this._body.children.length;i++){\n\t\t\tif(this._body.children[i][\"npcType\"]==type){\n\t\t\t\tthis[\"npcType\"]=type\n\t\t\t\tthis._body.children[i].visible=true;\n\t\t\t\tthis._body.children[i].mouseEnabled=false;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\tset anchorOffsetY(v) {\n\t\tthis._body.y = v;\n\t}\n}\n","/**\n * Created by rockyl on 2020-02-03.\n */\n\nimport {Goods} from \"./Goods\";\nimport ObjectPool = engine.ObjectPool;\n\nexport const PoolName: string = 'goods';\n\nObjectPool.registerPool(PoolName, function () {\n\treturn new Goods();\n}, function (item: Goods, data) {\n\titem.reset();\n});\n","/**\n * Created by rockyl on 2018/8/16.\n */\n\nimport { props } from \"../props\";\nimport { playSound, createSvga } from \"./utils\";\nimport ObjectPool = engine.ObjectPool;\nimport { getTextureByName } from \"./utils\";\nimport { Goods } from \"./Goods\";\nimport { PoolName } from \"./object-pool-init\";\n\n\n\nexport default class GameView extends engine.Container {\n\n\tprivate _hasSetup;\n\n\t//玩家\n\tprivate player: engine.Container;\n\t//触摸层\n\t// private rectBg: engine.Rect;\n\tprivate rectBg: engine.Container;\n\t//npc层\n\tprivate NpcBg: engine.Container;\n\n\t//当前分数\n\tprivate score\n\n\t//游戏状态\n\tprivate gameIng;\n\n\t//npc出身计时器\n\tprivate timer\n\t//倒计时计时器\n\tprivate countdownTimer: any\n\t//倒计时\n\tprivate countdown: number\n\n\t//当前速度\n\tprivate speed: number\n\n\t// 当前场景上面的物品\n\tprivate goodsItems = []\n\n\n\tprivate _goods: Goods;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.once(engine.Event.ADDED_TO_STAGE, this.setup, this);\n\t}\n\n\tprivate waterSvga\n\tprivate water2Svga\n\tprivate boomSvga\n\tprivate playerSvgaReset\n\tprivate playerSvgaRun\n\tprivate playerSvgaOver\n\tprivate bg1\n\tprivate bg2\n\tprivate bg3\n\tprivate bg4\n\tprivate bg\n\tprivate labelScore\n\t\n\n\n\tsetup() {\n\t\tif (this._hasSetup) {\n\t\t\treturn;\n\t\t}\n\t\tthis._hasSetup = true;\n\n\t\tthis.bg = new engine.Container();\n\t\tthis.bg.mouseEnabled = false;\n\t\tthis.addChild(this.bg);\n\n\t\tthis.NpcBg = new engine.Container();\n\t\tthis.NpcBg.alpha = 1;\n\t\tthis.NpcBg.width = 0;\n\t\tthis.NpcBg.height = 0;\n\t\tthis.addChild(this.NpcBg);\n\n\t\tthis.player = new engine.Container();\n\t\tthis.player.mouseEnabled=false;\n\t\tthis.player.mouseChildren=false\n\t//\tthis.player.fillColor=\"rgba(0, 0, 0,1)\"\n\t\t//console.log(this.player.fillColor)\n\n\t\t//创建文字\n\t\tthis.labelScore = new engine.BitmapText();\n\t\tthis.labelScore.font = props.fontName;\n\t\tthis.labelScore.scaleX = this.labelScore.scaleY = 1;\n\t\tthis.addChild(this.labelScore);\n\t\n\t\n\n\t\tthis.waterSvga=createSvga(\"碰到金币svga\")\n\t\tthis.water2Svga=createSvga(\"碰到粽子svga\")\n\t\tthis.boomSvga=createSvga(\"碰到石头svga\")\n\t\t// this.playerSvga=createSvga(\"玩家\")\n\t\tthis.playerSvgaReset= new engine.Sprite(getTextureByName('玩家静止'))\n\t\tthis.playerSvgaRun= createSvga(\"玩家滑动\")\n\t\tthis.playerSvgaOver= createSvga(\"玩家翻船\")\n\t\tthis.bg1= new engine.Sprite(getTextureByName('循环背景1'))\n\t\tthis.bg2= new engine.Sprite(getTextureByName('循环背景2'))\n\t\tthis.bg3= new engine.Sprite(getTextureByName('循环背景1'))\n\t\tthis.bg4= new engine.Sprite(getTextureByName('循环背景2'))\n\t\tthis.player.addChild(this.playerSvgaReset);\n\t\tthis.player.addChild(this.playerSvgaRun);\n\t\tthis.player.addChild(this.playerSvgaOver);\n\t\t this.addChild(this.waterSvga);\n\t\t this.addChild(this.water2Svga);\n\t\t this.addChild(this.boomSvga);\n\t\t this.addChild(this.player);\n\t\tthis.bg.addChild(this.bg1);\n\t\tthis.bg.addChild(this.bg2);\n\t\tthis.bg.addChild(this.bg3);\n\t\tthis.bg.addChild(this.bg4);\n\t\t\n\t\t// this.playerSvga.gotoAndPlay(1);\n\n\t\tthis.waterSvga.visible = false\n\t\tthis.water2Svga.visible = false\n\t\tthis.boomSvga.visible = false\n\t\tthis.setPlayState(this.playerSvgaReset)\n\t\t\n\t\tthis.visible=false;\n\t\tsetTimeout(()=>{\n\t\t\tthis.visible=true;\n\t\t\t//this.player.anchorY = this.player.height / 2;\n\t\t//\tthis.player.anchorX = this.player.width / 2;\n\t\t\tthis.player.x = 375 - this.player.width / 2;\n\t\t\tthis.player.y = props.playerPositionY;\n\n\t\t\t// this.stoneSvga.x = this.player.width / 2 - \tthis.stoneSvga.width/2 + props.boomPosition1Offset[0];\n\t\t\t// this.stoneSvga.y = this.player.height / 2 - this.stoneSvga.height/2 + props.boomPosition1Offset[1];\n\n\t\t\t// this.waterSvga.x = this.player.width / 2 - \tthis.waterSvga.width/2+ props.boomPosition2Offset[0];\n\t\t\t// this.waterSvga.y = this.player.height / 2 - this.waterSvga.height/2 + props.boomPosition2Offset[1];\n\n\t\t\t// this.boomSvga.x = this.player.width / 2 - \tthis.boomSvga.width/2+ props.boomPosition3Offset[0];\n\t\t\t// this.boomSvga.y = this.player.height / 2 - this.boomSvga.height/2 + props.boomPosition3Offset[1];\n\n\n\t\t\tthis.playerSvgaRun.x=props.playerRunPosition3Offset[0]\n\t\t\tthis.playerSvgaRun.y=props.playerRunPosition3Offset[1]\n\n\t\t\tthis.playerSvgaOver.x=props.playerOverPosition3Offset[0]\n\t\t\tthis.playerSvgaOver.y=props.playerOverPosition3Offset[1]\n\n\t\t\tthis.bg1.y=0\n\t\t\tthis.bg2.y=this.bg1.height\n\t\t\tthis.bg3.y=this.bg1.height+this.bg2.height\n\t\t\tthis.bg4.y=this.bg1.height+this.bg2.height+this.bg3.height\n\n\t\t\tengine.Tween.get(this.playerSvgaReset, {loop:true})\n\t\t\t.to({y:10}, 500)\n\t\t\t.to({y:0}, 500)\n\t\t\t.to({y:10}, 500)\n\t\t\t.call(()=>{});\n\n\t\t\t// this.stoneSvga.x=props.boomPositionOffset[0]\n\t\t\t// this.stoneSvga.y=props.boomPositionOffset[1]\n\n\t\t\t// this.waterSvga.x=props.boomPositionOffset[0]\n\t\t\t// this.waterSvga.y=props.boomPositionOffset[1]\n\n\t\t\t// this.boomSvga.x=props.boomPositionOffset[0]\n\t\t\t// this.boomSvga.y=props.boomPositionOffset[1]\n\n\t\t\t\n\t\t},300)\n\n\t\t\n\t\tthis.rectBg = new engine.Container();\n\t\tthis.rectBg.alpha = 0;\n\t\tthis.rectBg.width = 750;\n\t\tthis.rectBg.height = 1624;\n\t\tthis.addChild(this.rectBg)\n\n\t\tthis.rectBg.addEventListener(engine.MouseEvent.MOUSE_DOWN, this.onDownStage, this);\n\t\tthis.rectBg.addEventListener(engine.MouseEvent.MOUSE_MOVE, this.onMoveStage, this);\n\t\tthis.rectBg.addEventListener(engine.MouseEvent.MOUSE_OUT, this.onOutStage, this);\n\t\tthis.rectBg.addEventListener(engine.Event.ENTER_FRAME, this.enterFrame, this);\n\t\n\t}\n\n\n\tsetBoomPosition(svga,callback?){\n\t\tsvga.x=this.player.x;\n\t\tsvga.y=this.player.y;\n\t\tif(svga==this.waterSvga){\n\t\t\tsvga.x+=props.boomPosition1Offset[0]\n\t\t\tsvga.y+=props.boomPosition1Offset[1]\n\t\t}else if(svga==this.water2Svga){\n\t\t\tsvga.x+=props.boomPosition2Offset[0]\n\t\t\tsvga.y+=props.boomPosition2Offset[1]\n\t\t}else if(svga==this.boomSvga){\n\t\t\tsvga.x+=props.boomPosition3Offset[0]\n\t\t\tsvga.y+=props.boomPosition3Offset[1]\n\t\t} \n\n\t\tsvga.visible=true;\n\t\tsvga.play(true,false)\n\t\tsvga.once(engine.Event.END_FRAME, ()=>{\n\t\t\tsvga.visible=false;\n\t\t\tif(callback){\n\t\t\t\tcallback()\n\t\t\t}\t\t\n\t\t}, this);\n\n\t}\n\n\tenterFrame(){\n\t\tif(this.bg.y>=0){\n\t\t\tthis.bg.y=-this.bg3.y\n\t\t}\n\t\tif(this.gameIng){\n\t\t\tthis.bg.y += (4 * this.speed)\n\t\t}\n\t}\n\n\n\t/**\n\t * 重置场景\n\t */\n\treset() {\n\t\tthis.recycleGoods()\n\t\tthis.score = 0;\n\t\tthis.speed = 1;\n\t\tthis.bg.y=-1624\n\n\t\tthis.player.anchorY = this.player.height / 2;\n\t\tthis.player.anchorX = this.player.width / 2;\n\t\tthis.player.x = 375 - this.player.width / 2;\n\t\tthis.player.y = props.playerPositionY;\n\t\tthis.setPlayState(this.playerSvgaReset)\n\t}\n\n\n\tsetPlayState(svga){\n\t\tthis.playerSvgaReset.visible=false\n\t\tthis.playerSvgaRun.visible=false\n\t\tthis.playerSvgaOver.visible=false\n\t\tconsole.log(svga)\n\t\tsvga.visible=true;\n if(svga==this.playerSvgaOver){\n\t\t\tsvga.play(false, false)\n\t\t\tsvga.once(engine.Event.END_FRAME, ()=>{\n\t\t\t}, this);\n\t\t}else if(svga==this.playerSvgaRun){\n\t\t\tsvga.play()\n\t\t}\n\t}\n\n\t/**\n\t * 开始\n\t */\n\tstart() {\n\t\tthis.gameIng = true;\n\t\tthis.creatNpc()\n\t\tthis.beginNpc()\n\t\tthis.countdown = props.countDown;\n\t\tthis.setPlayState(this.playerSvgaRun)\n\t\n\t\tthis.countdownTimer = setInterval(() => {\n\t\t\tif (this.gameIng) {\n\t\t\t\tif (this.countdown > 0) {\n\t\t\t\t\tengine.globalEvent.dispatchEvent('dragon-boat-race-time-update', {\n\t\t\t\t\t\ttime: this.countdown,\n\t\t\t\t\t});\n\t\t\t\t\tthis.countdown -= 1\n\t\t\t\t} else {\n\t\t\t\t\tengine.globalEvent.dispatchEvent('dragon-boat-race-game-over', {\n\t\t\t\t\t\tscore: this.score,\n\t\t\t\t\t\treason: 1\n\t\t\t\t\t});\n\t\t\t\t\tthis.died()\n\t\t\t\t}\n\t\t\t\tthis.score += Math.round(this.speed*props.runScore);\n\t\t\t\tengine.globalEvent.dispatchEvent('dragon-boat-race-score-update', {\n\t\t\t\t\tscore: this.score,\n\t\t\t\t});\n\t\t\t}\n\t\t}, 1000)\n\t}\n\n\t/**\n\t * npc开始掉落\n\t */\n\tbeginNpc() {\n\t\tthis.timer = setTimeout(() => {\n\t\t\tif (this.gameIng) {\n\t\t\t\tthis.speed += props.acceleratedSpeed;\n\t\t\t\tthis.creatNpc()\n\t\t\t}\n\t\t\t//递归执行\n\t\t\tthis.beginNpc()\n\t\t}, 2000 / this.speed)\n\t}\n\n\t/**\n\t * 暂停\n\t */\n\tpause() {\n\t\tthis.gameIng = false;\n\t}\n\n\t/**\n\t * 恢复\n\t */\n\trevive() {\n\t\tthis.gameIng = true;\n\t}\n\n\t/**\n\t * 重新开始\n\t */\n\tresume() {\n\t\tthis.reset()\n\t\tthis.start()\n\t}\n\n\t/**\n\t * 创建NPC\n\t */\n\tprivate creatNpc() {\n\t\tlet goods = this._goods = <Goods>ObjectPool.getObject(PoolName);\n\t\tthis.goodsItems.push(goods)\n\t\t//console.log(goods);\n\t\t\n\t\tthis.NpcBg.addChild(goods);\n\t\tgoods.addEventListener(engine.Event.ENTER_FRAME, goods[\"onGoodsEnter\"] = () => {\n\t\t\tif (goods.y > 1624) {\n\t\t\t\tthis.removeNpc(goods)\n\t\t\t} else {\n\t\t\t\tif (this.gameIng) {\n\t\t\t\t\t//速度叠加\n\t\t\t\t\tgoods.y += (4 * this.speed)\n\t\t\t\t\t//如果玩家和物品发生碰撞\n\t\t\t\t\tif (goods[\"lifeState\"]&&this.hasHit(this.player, goods)) {\n\t\t\t\t\t\tgoods[\"lifeState\"]=false;\n\t\t\t\t\t\tif (goods[\"npcType\"] == \"rain0\") {\n\t\t\t\t\t\t\tconsole.log(\"碰到雨滴\")\n\t\t\t\t\t\t\tthis.score += props.rainScore\n\t\t\t\t\t\t\tthis.setBoomPosition(this.waterSvga)\n\t\t\t\t\t\t\t engine.Tween.get(goods, null, null, true)\n\t\t\t\t\t\t\t .to({scaleX: 0,scaleY:0}, 200)\n\t\t\t\t\t\t\t .call(()=>{this.removeNpc(goods)});\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t}else if (goods[\"npcType\"] == \"rain1\") {\n\t\t\t\t\t\t\tconsole.log(\"碰到雨滴\")\n\t\t\t\t\t\t\tthis.score += props.rainScore\n\t\t\t\t\t\t\tthis.setBoomPosition(this.water2Svga)\n\t\t\t\t\t\t\t engine.Tween.get(goods, null, null, true)\n\t\t\t\t\t\t\t .to({scaleX: 0,scaleY:0}, 200)\n\t\t\t\t\t\t\t .call(()=>{this.removeNpc(goods)});\n\n\t\t\t\t\t\t} else if (goods[\"npcType\"] == \"boom\"||goods[\"npcType\"] == \"stone\") {\n\t\t\t\t\t\t\tconsole.log(\"碰到炸弹\")\n\t\t\t\t\t\t\tthis.setBoomPosition(this.boomSvga,()=>{\n\t\t\t\t\t\t\t\tengine.globalEvent.dispatchEvent('dragon-boat-race-game-over', {\n\t\t\t\t\t\t\t\t\tscore: this.score,\n\t\t\t\t\t\t\t\t\treason: 2\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.died()\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tthis.setPlayState(this.playerSvgaOver)\n\t\t\t\t\t\t\tthis.pause()\n\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\tengine.globalEvent.dispatchEvent('dragon-boat-race-score-update', {\n\t\t\t\t\t\t\tscore: this.score,\n\t\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}, this);\n\t}\n\n\t/**\n\t * 玩家死亡\n\t */\n\tprivate died() {\n\t\tthis.score = 0\n\t\tthis.pause()\n\t}\n\n\t/**\n\t * 回收指定物品\n\t * @param goods 物品\n\t */\n\tprivate removeNpc(goods) {\n\t\tthis.NpcBg.removeChild(goods);\n\t\tObjectPool.recycleObject(PoolName, goods);\n\t\tgoods.removeEventListener(engine.Event.ENTER_FRAME, goods[\"onGoodsEnter\"], this);\n\t\tlet index = this.goodsItems.indexOf(goods);\n\t\tif (index > -1) {\n\t\t\tthis.goodsItems.splice(index, 1);\n\t\t}\n\t}\n\n\t/**\n\t * 回收对象\n\t */\n\tprivate recycleGoods() {\n\t\tclearTimeout(this.timer)\n\t\tclearInterval(this.countdownTimer)\n\t\tfor (let goods of this.goodsItems) {\n\t\t\tif (goods) {\n\t\t\t\tthis.NpcBg.removeChild(goods);\n\t\t\t\tObjectPool.recycleObject(PoolName, goods);\n\t\t\t\tgoods.removeEventListener(engine.Event.ENTER_FRAME, goods[\"onGoodsEnter\"], this);\n\t\t\t}\n\t\t}\n\t\tthis.goodsItems = []\n\t}\n\n\tprivate moveCatchX = 0\n\tprivate playerCatchX = 0\n\n\t/**\n\t * 碰撞检测\n\t * @param a a盒子\n\t * @param b b盒子\n\t */\n\tprivate hasHit(a, b) {\n\n\t\tlet playerH=a.height\n\t\tlet playerW=a.width\n\t\tlet playerX=a.x\n\t\tif(props.playerHeight){\n\t\t\tplayerH=props.playerHeight\n\t\t}\n\t\tif(props.playerWidth){\n\t\t\tplayerW=props.playerWidth\n\t\t\tplayerX=a.x+(a.width-props.playerWidth)/2\n\t\t}\n\n\t\tif (\n\t\t\tMath.abs((playerX + playerW / 2) - (b.x + b.width / 2)) < playerW / 2 + b.width / 2\n\t\t\t&&\n\t\t\t// Math.abs((a.y + a.height / 2 ) - (b.y + b.height / 2)) < a.height / 2 + b.height / 2\n\t\t\tMath.abs((a.y + playerH / 1.3 ) - (b.y + b.height / 2)) < playerH / 2 + b.height / 2\n\t\t) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate onDownStage = (e) => {\n\t\tthis.moveCatchX = e.localX;\n\t\tthis.playerCatchX = this.player.x\n\t}\n\n\tprivate onMoveStage = (e) => {\n\t\tlet maxStageBound=props.maxStageBound;\n\t\tif (this.gameIng) {\n\t\t\tlet playerX=this.playerCatchX + (e.localX - this.moveCatchX)\n\t\t\tif(playerX<maxStageBound){\n\t\t\t\tthis.player.x=maxStageBound\n\t\t\t}else if(playerX+this.player.width+maxStageBound>750){\n\t\t\t\tthis.player.x=750-maxStageBound-this.player.width\n\t\t\t}else{\n\t\t\t\tthis.player.x=playerX\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onOutStage = (e) => {\n\t\tthis.moveCatchX = 0\n\t}\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\tprivate _status;\n\tprivate _gameView: GameView;\n\n\tconstructor() {\n\t\tsuper();\n\t\tengine.globalEvent.addEventListener('dragon-boat-race-reset', this.reset, this);\n\t\tengine.globalEvent.addEventListener('dragon-boat-race-start', this.start, this);\n\t\tengine.globalEvent.addEventListener('dragon-boat-race-pause', this.pause, this);\n\t\tengine.globalEvent.addEventListener('dragon-boat-race-resume', this.resume, this);\n\t\tengine.globalEvent.addEventListener('dragon-boat-race-revive', this.revive, this);\n\t\tengine.globalEvent.addEventListener('dragon-boat-race-clear', this.clear, this);\n\n\t\tthis.addEventListener(engine.MouseEvent.CLICK, this.onTap, this);\n\n\t\tlet gameView = this._gameView = new GameView();\n\t\tthis.addChild(gameView);\n\t\t// gameView.reset()\n\t\t// gameView.start()\n\t}\n\n\treset(event: engine.Event) {\t\t\n\t\tinjectProps(event.data);\n\t\tthis._gameView.visible = true;\n\t\tthis._gameView.reset();\n\t}\n\n\tstart(event: engine.Event) {\n\t\tinjectProps(event.data);\n\t\tthis._status = 1;\n\t\tthis._gameView.start();\n\t}\n\n\tpause() {\n\t\tthis._gameView.pause();\n\t}\n\n\tresume() {\n\t\tthis._gameView.resume();\n\t}\n\n\trevive() {\n\t\tthis._gameView.revive();\n\t}\n\n\tclear() {\n\t\tthis._gameView.visible = false;\n\t}\n\n\tprivate onTap(event) {\n\t//\tthis._gameView.tap(event);\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\treturn instance;\n}\n"],"names":["__extends","ObjectPool"],"mappings":"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"}
\ No newline at end of file
src/custom/dragon-boat-race/meta.json
View file @
3d62bb2f
...
...
@@ -7,15 +7,20 @@
"type"
:
"number"
,
"default"
:
900
},
"r
ai
nScore"
:
{
"alias"
:
"
接中雨滴获得分数
"
,
"r
u
nScore"
:
{
"alias"
:
"
每前进1米加分(不能小于1)
"
,
"type"
:
"number"
,
"default"
:
1
},
"stoneScore"
:
{
"alias"
:
"接中石块获得分数"
,
"rainScore"
:
{
"alias"
:
"接金币获得分数"
,
"type"
:
"number"
,
"default"
:
5
},
"rain2Score"
:
{
"alias"
:
"接粽子获得分数"
,
"type"
:
"number"
,
"default"
:
-1
"default"
:
10
},
"speed"
:
{
"alias"
:
"道具掉落初始速度"
,
...
...
@@ -43,127 +48,157 @@
"type"
:
"number"
,
"default"
:
-20
},
"maxNpcBound"
:
{
"alias"
:
"道具随机出现的边距"
,
"type"
:
"number"
,
"default"
:
100
},
"gameOverCondition"
:
{
"alias"
:
"游戏结束条件(1:接到炸弹死亡,2:分数负数或接到炸弹死亡)"
,
"type"
:
"number"
,
"default"
:
1
},
"boomPosition1Offset"
:
{
"alias"
:
"爆炸svga位置偏移[x,y]"
,
"alias"
:
"
奖励
爆炸svga位置偏移[x,y]"
,
"type"
:
"array<number>"
,
"default"
:
"0,0"
}
,
"default"
:
"-80,-200"
},
"boomPosition2Offset"
:
{
"alias"
:
"爆炸svga位置偏移[x,y]"
,
"alias"
:
"
奖励
爆炸svga位置偏移[x,y]"
,
"type"
:
"array<number>"
,
"default"
:
"0,0"
}
,
"default"
:
"-80,-200"
},
"boomPosition3Offset"
:
{
"alias"
:
"爆炸svga位置偏移[x,y]"
,
"alias"
:
"障碍爆炸svga位置偏移[x,y]"
,
"type"
:
"array<number>"
,
"default"
:
"0,-100"
},
"playerRunPosition3Offset"
:
{
"alias"
:
"玩家滑动位置偏移"
,
"type"
:
"array<number>"
,
"default"
:
"-100,-120"
},
"playerOverPosition3Offset"
:
{
"alias"
:
"玩家翻船位置偏移"
,
"type"
:
"array<number>"
,
"default"
:
"-100,-1
0
0"
"default"
:
"-100,-1
2
0"
}
},
"assets"
:
[
{
"name"
:
"
雨滴0
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
badb3627bbcc75276a3eed53daa8b0a454ced6eb.pn
g"
,
"uuid"
:
"d
3ce99da-89e1-447d-8c52-b3f391925c3c
"
,
"ext"
:
".
pn
g"
"name"
:
"
循环背景1
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
a57af3e2092f421ebbb47ee7a3d30f4326b5b7cd.jp
g"
,
"uuid"
:
"d
95a5911-1c7c-4b60-9ff1-5cb179738e91
"
,
"ext"
:
".
jp
g"
},
{
"name"
:
"雨滴1"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/5cc0092913c571eeb52317b8e1e0dc715793049c.png"
,
"uuid"
:
"02f17008-1d8d-4108-a0fc-03fbc71fd118"
,
"name"
:
"循环背景2"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/489de78a248456d9dee74d8106da3dae40c0268b.jpg"
,
"uuid"
:
"2222b6d9-17cb-42a6-a0f2-54c390522ca5"
,
"ext"
:
".jpg"
},
{
"name"
:
"金币"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/6d2719418a59a95fc0db0c0b761d00b4b4519b81.png"
,
"uuid"
:
"d3ce99da-89e1-447d-8c52-b3f391925c3c"
,
"ext"
:
".png"
},
{
"name"
:
"
雨滴2
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
4b938949b85d50b36ef0f66450643495efbf7580
.png"
,
"uuid"
:
"
46aa4f8a-9a6c-4210-8ffd-92da0dd3bc75
"
,
"name"
:
"
粽子
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
89ec786e36cd306225502b384ddb7550d79166c2
.png"
,
"uuid"
:
"
02f17008-1d8d-4108-a0fc-03fbc71fd118
"
,
"ext"
:
".png"
},
{
"name"
:
"
炸弹
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/1
71e92283cd13c013ee1b76d28d252ff08815d47
.png"
,
"name"
:
"
石块
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/1
3efce5d31f114e2db9c9b0baac057bc1baf89d2
.png"
,
"uuid"
:
"eb88b42d-e151-4c1b-94b9-7c16f7bfac29"
,
"ext"
:
".png"
},
{
"name"
:
"
石块
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
99b0af0c59fe79a415a3f032149cfacc27e3ac2
c.png"
,
"name"
:
"
木头
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
3071bf51a8cc4e1733fe7ab6549206d27be15e7
c.png"
,
"uuid"
:
"ab1bdabc-21ba-46bf-9299-6c638f766c88"
,
"ext"
:
".png"
},
{
"name"
:
"
水花
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
11b1f49fa3afa3a48f1dd3e3c1eb294e3fa9d886
.svga"
,
"name"
:
"
碰到金币svga
"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
ebd0dc01e7154970bc2b1e65a6a3641aec0e319c
.svga"
,
"uuid"
:
"cdd2268f-ad65-4b5e-a965-ee61b730da21"
,
"ext"
:
".svga"
},
{
"name"
:
"
石头
svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
01aa6fcb33aa8231f075257026eab2f0aeb3c27a
.svga"
,
"uuid"
:
"
846a139d-0990-4db4-a323-f22379932ee4
"
,
"name"
:
"
碰到粽子
svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
b9d21ca9758a8503dc5271949924f7cb08adcdf2
.svga"
,
"uuid"
:
"
ce252ae3-9cc5-490b-9c18-a4111317c473
"
,
"ext"
:
".svga"
},
{
"name"
:
"
炸弹
svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
3b58e7ace031b09c651cf8e7202f9c86e86852c9
.svga"
,
"name"
:
"
碰到石头
svga"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/
862802a8173acc1bde28dd603c7ffd2ccc426700
.svga"
,
"uuid"
:
"d7a3947b-7fcb-48f2-9ddf-2f075d37a619"
,
"ext"
:
".svga"
},
{
"name"
:
"玩家"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/db0130d36ef79865be9c753ea0627027f16341d8.png"
,
"name"
:
"玩家翻船"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/4dd3f3d80c8560d534abfd4c55f4ed758fd9c6f1.svga"
,
"uuid"
:
"6338498f-78ba-4d4b-a172-85755646baf7"
,
"ext"
:
".svga"
},
{
"name"
:
"玩家滑动"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/83c888fcce01d2202a9b4ab73090b3f9e2bc11cd.svga"
,
"uuid"
:
"59920d79-e5bf-46e0-a753-f4e7a1315a97"
,
"ext"
:
".svga"
},
{
"name"
:
"玩家静止"
,
"url"
:
"//yun.duiba.com.cn/aurora/assets/9e1d76f3ce486edd17c81e97782ed8afe3f66c0b.png"
,
"uuid"
:
"4931d296-4421-4a2f-8299-7bab87407c72"
,
"ext"
:
".png"
}
],
"events"
:
{
"in"
:
{
"
food-fell
-reset"
:
{
"
dragon-boat-race
-reset"
:
{
"alias"
:
"重置"
,
"data"
:
{
"goodsProbability"
:
"[0.2,0.
5,0.3]道具概率(雨滴、石头、炸弹
),所有概率相加为1"
,
"goodsProbability"
:
"[0.2,0.
2,0.3,0.3]道具概率(金币、粽子、木头、石块
),所有概率相加为1"
,
"countDown"
:
"倒计时(s)"
,
"acceleratedSpeed"
:
"道具掉落加速度(单位:每秒)"
}
},
"
food-fell
-start"
:
{
"
dragon-boat-race
-start"
:
{
"alias"
:
"开始"
},
"
food-fell
-revive"
:
{
"
dragon-boat-race
-revive"
:
{
"alias"
:
"复活"
},
"
food-fell
-pause"
:
{
"
dragon-boat-race
-pause"
:
{
"alias"
:
"暂停"
},
"
food-fell
-resume"
:
{
"
dragon-boat-race
-resume"
:
{
"alias"
:
"恢复"
},
"
food-fell
-clear"
:
{
"
dragon-boat-race
-clear"
:
{
"alias"
:
"清空,通过reset事件恢复"
}
},
"out"
:
{
"
food-fell
-score-update"
:
{
"
dragon-boat-race
-score-update"
:
{
"alias"
:
"分数更新"
,
"data"
:
{
"score"
:
"分数"
}
},
"
food-fell
-time-update"
:
{
"
dragon-boat-race
-time-update"
:
{
"alias"
:
"倒计时更新"
,
"data"
:
{
"time"
:
"剩余时间"
}
},
"
food-fell
-game-over"
:
{
"
dragon-boat-race
-game-over"
:
{
"alias"
:
"游戏结束"
,
"data"
:
{
"score"
:
"分数"
,
...
...
src/custom/dragon-boat-race/src/game/GameView.ts
View file @
3d62bb2f
...
...
@@ -51,63 +51,114 @@ export default class GameView extends engine.Container {
}
private
waterSvga
private
stone
Svga
private
water2
Svga
private
boomSvga
private
playerSvga
private
playerSvgaReset
private
playerSvgaRun
private
playerSvgaOver
private
bg1
private
bg2
private
bg3
private
bg4
private
bg
private
labelScore
setup
()
{
if
(
this
.
_hasSetup
)
{
return
;
}
this
.
_hasSetup
=
true
;
this
.
bg
=
new
engine
.
Container
();
this
.
bg
.
mouseEnabled
=
false
;
this
.
addChild
(
this
.
bg
);
this
.
NpcBg
=
new
engine
.
Container
();
this
.
NpcBg
.
alpha
=
1
;
this
.
NpcBg
.
width
=
0
;
this
.
NpcBg
.
height
=
0
;
this
.
addChild
(
this
.
NpcBg
);
this
.
player
=
new
engine
.
Container
();
this
.
player
.
mouseEnabled
=
false
;
this
.
player
.
mouseEnabled
=
false
;
this
.
player
.
mouseChildren
=
false
// this.player.fillColor="rgba(0, 0, 0,1)"
//console.log(this.player.fillColor)
//创建文字
this
.
labelScore
=
new
engine
.
BitmapText
();
this
.
labelScore
.
font
=
props
.
fontName
;
this
.
labelScore
.
scaleX
=
this
.
labelScore
.
scaleY
=
1
;
this
.
addChild
(
this
.
labelScore
);
this
.
addChild
(
this
.
player
);
this
.
waterSvga
=
createSvga
(
"水花"
)
this
.
stoneSvga
=
createSvga
(
"石头svga"
)
this
.
waterSvga
=
createSvga
(
"碰到金币svga"
)
this
.
water2Svga
=
createSvga
(
"碰到粽子svga"
)
this
.
boomSvga
=
createSvga
(
"碰到石头svga"
)
// this.playerSvga=createSvga("玩家")
this
.
playerSvga
=
new
engine
.
Sprite
(
getTextureByName
(
'玩家'
))
this
.
boomSvga
=
createSvga
(
"炸弹svga"
)
this
.
player
.
addChild
(
this
.
playerSvga
);
this
.
player
.
addChild
(
this
.
stoneSvga
);
this
.
player
.
addChild
(
this
.
waterSvga
);
this
.
player
.
addChild
(
this
.
boomSvga
);
// this.playerSvga.gotoAndPlay(1);
this
.
playerSvgaReset
=
new
engine
.
Sprite
(
getTextureByName
(
'玩家静止'
))
this
.
playerSvgaRun
=
createSvga
(
"玩家滑动"
)
this
.
playerSvgaOver
=
createSvga
(
"玩家翻船"
)
this
.
bg1
=
new
engine
.
Sprite
(
getTextureByName
(
'循环背景1'
))
this
.
bg2
=
new
engine
.
Sprite
(
getTextureByName
(
'循环背景2'
))
this
.
bg3
=
new
engine
.
Sprite
(
getTextureByName
(
'循环背景1'
))
this
.
bg4
=
new
engine
.
Sprite
(
getTextureByName
(
'循环背景2'
))
this
.
player
.
addChild
(
this
.
playerSvgaReset
);
this
.
player
.
addChild
(
this
.
playerSvgaRun
);
this
.
player
.
addChild
(
this
.
playerSvgaOver
);
this
.
addChild
(
this
.
waterSvga
);
this
.
addChild
(
this
.
water2Svga
);
this
.
addChild
(
this
.
boomSvga
);
this
.
addChild
(
this
.
player
);
this
.
bg
.
addChild
(
this
.
bg1
);
this
.
bg
.
addChild
(
this
.
bg2
);
this
.
bg
.
addChild
(
this
.
bg3
);
this
.
bg
.
addChild
(
this
.
bg4
);
// this.playerSvga.gotoAndPlay(1);
this
.
waterSvga
.
visible
=
false
this
.
stone
Svga
.
visible
=
false
this
.
water2
Svga
.
visible
=
false
this
.
boomSvga
.
visible
=
false
this
.
setPlayState
(
this
.
playerSvgaReset
)
this
.
visible
=
false
;
setTimeout
(()
=>
{
this
.
visible
=
true
;
this
.
player
.
anchorY
=
this
.
player
.
height
/
2
;
this
.
player
.
anchorX
=
this
.
player
.
width
/
2
;
//
this.player.anchorY = this.player.height / 2;
//
this.player.anchorX = this.player.width / 2;
this
.
player
.
x
=
375
-
this
.
player
.
width
/
2
;
this
.
player
.
y
=
props
.
playerPositionY
;
this
.
stoneSvga
.
x
=
this
.
player
.
width
/
2
-
this
.
stoneSvga
.
width
/
2
+
props
.
boomPosition1Offset
[
0
];
this
.
stoneSvga
.
y
=
this
.
player
.
height
/
2
-
this
.
stoneSvga
.
height
/
2
+
props
.
boomPosition1Offset
[
1
];
// this.stoneSvga.x = this.player.width / 2 - this.stoneSvga.width/2 + props.boomPosition1Offset[0];
// this.stoneSvga.y = this.player.height / 2 - this.stoneSvga.height/2 + props.boomPosition1Offset[1];
// this.waterSvga.x = this.player.width / 2 - this.waterSvga.width/2+ props.boomPosition2Offset[0];
// this.waterSvga.y = this.player.height / 2 - this.waterSvga.height/2 + props.boomPosition2Offset[1];
// this.boomSvga.x = this.player.width / 2 - this.boomSvga.width/2+ props.boomPosition3Offset[0];
// this.boomSvga.y = this.player.height / 2 - this.boomSvga.height/2 + props.boomPosition3Offset[1];
this
.
playerSvgaRun
.
x
=
props
.
playerRunPosition3Offset
[
0
]
this
.
playerSvgaRun
.
y
=
props
.
playerRunPosition3Offset
[
1
]
this
.
waterSvga
.
x
=
this
.
player
.
width
/
2
-
this
.
waterSvga
.
width
/
2
+
props
.
boomPosition2Offset
[
0
];
this
.
waterSvga
.
y
=
this
.
player
.
height
/
2
-
this
.
waterSvga
.
height
/
2
+
props
.
boomPosition2Offset
[
1
];
this
.
playerSvgaOver
.
x
=
props
.
playerOverPosition3Offset
[
0
]
this
.
playerSvgaOver
.
y
=
props
.
playerOverPosition3Offset
[
1
]
this
.
boomSvga
.
x
=
this
.
player
.
width
/
2
-
this
.
boomSvga
.
width
/
2
+
props
.
boomPosition3Offset
[
0
];
this
.
boomSvga
.
y
=
this
.
player
.
height
/
2
-
this
.
boomSvga
.
height
/
2
+
props
.
boomPosition3Offset
[
1
];
this
.
bg1
.
y
=
0
this
.
bg2
.
y
=
this
.
bg1
.
height
this
.
bg3
.
y
=
this
.
bg1
.
height
+
this
.
bg2
.
height
this
.
bg4
.
y
=
this
.
bg1
.
height
+
this
.
bg2
.
height
+
this
.
bg3
.
height
engine
.
Tween
.
get
(
this
.
playerSvgaReset
,
{
loop
:
true
})
.
to
({
y
:
10
},
500
)
.
to
({
y
:
0
},
500
)
.
to
({
y
:
10
},
500
)
.
call
(()
=>
{});
// this.stoneSvga.x=props.boomPositionOffset[0]
// this.stoneSvga.y=props.boomPositionOffset[1]
...
...
@@ -131,43 +182,106 @@ export default class GameView extends engine.Container {
this
.
rectBg
.
addEventListener
(
engine
.
MouseEvent
.
MOUSE_DOWN
,
this
.
onDownStage
,
this
);
this
.
rectBg
.
addEventListener
(
engine
.
MouseEvent
.
MOUSE_MOVE
,
this
.
onMoveStage
,
this
);
this
.
rectBg
.
addEventListener
(
engine
.
MouseEvent
.
MOUSE_OUT
,
this
.
onOutStage
,
this
);
this
.
rectBg
.
addEventListener
(
engine
.
Event
.
ENTER_FRAME
,
this
.
enterFrame
,
this
);
}
setBoomPosition
(
svga
,
callback
?){
svga
.
x
=
this
.
player
.
x
;
svga
.
y
=
this
.
player
.
y
;
if
(
svga
==
this
.
waterSvga
){
svga
.
x
+=
props
.
boomPosition1Offset
[
0
]
svga
.
y
+=
props
.
boomPosition1Offset
[
1
]
}
else
if
(
svga
==
this
.
water2Svga
){
svga
.
x
+=
props
.
boomPosition2Offset
[
0
]
svga
.
y
+=
props
.
boomPosition2Offset
[
1
]
}
else
if
(
svga
==
this
.
boomSvga
){
svga
.
x
+=
props
.
boomPosition3Offset
[
0
]
svga
.
y
+=
props
.
boomPosition3Offset
[
1
]
}
svga
.
visible
=
true
;
svga
.
play
(
true
,
false
)
svga
.
once
(
engine
.
Event
.
END_FRAME
,
()
=>
{
svga
.
visible
=
false
;
if
(
callback
){
callback
()
}
},
this
);
}
enterFrame
(){
if
(
this
.
bg
.
y
>=
0
){
this
.
bg
.
y
=-
this
.
bg3
.
y
}
if
(
this
.
gameIng
){
this
.
bg
.
y
+=
(
4
*
this
.
speed
)
}
}
/**
* 重置场景
*/
reset
()
{
this
.
recycleGoods
()
this
.
score
=
0
;
this
.
speed
=
1
;
this
.
bg
.
y
=-
1624
this
.
player
.
anchorY
=
this
.
player
.
height
/
2
;
this
.
player
.
anchorX
=
this
.
player
.
width
/
2
;
this
.
player
.
x
=
375
-
this
.
player
.
width
/
2
;
this
.
player
.
y
=
props
.
playerPositionY
;
this
.
setPlayState
(
this
.
playerSvgaReset
)
}
setPlayState
(
svga
){
this
.
playerSvgaReset
.
visible
=
false
this
.
playerSvgaRun
.
visible
=
false
this
.
playerSvgaOver
.
visible
=
false
console
.
log
(
svga
)
svga
.
visible
=
true
;
if
(
svga
==
this
.
playerSvgaOver
){
svga
.
play
(
false
,
false
)
svga
.
once
(
engine
.
Event
.
END_FRAME
,
()
=>
{
},
this
);
}
else
if
(
svga
==
this
.
playerSvgaRun
){
svga
.
play
()
}
}
/**
* 开始
*/
start
()
{
this
.
score
=
0
;
this
.
speed
=
1
this
.
gameIng
=
true
;
this
.
creatNpc
()
this
.
beginNpc
()
this
.
countdown
=
props
.
countDown
;
this
.
setPlayState
(
this
.
playerSvgaRun
)
this
.
countdownTimer
=
setInterval
(()
=>
{
if
(
this
.
gameIng
)
{
if
(
this
.
countdown
>
0
)
{
engine
.
globalEvent
.
dispatchEvent
(
'
food-fell
-time-update'
,
{
engine
.
globalEvent
.
dispatchEvent
(
'
dragon-boat-race
-time-update'
,
{
time
:
this
.
countdown
,
});
this
.
countdown
-=
1
}
else
{
engine
.
globalEvent
.
dispatchEvent
(
'
food-fell
-game-over'
,
{
engine
.
globalEvent
.
dispatchEvent
(
'
dragon-boat-race
-game-over'
,
{
score
:
this
.
score
,
reason
:
1
});
this
.
died
()
}
this
.
score
+=
Math
.
round
(
this
.
speed
*
props
.
runScore
);
engine
.
globalEvent
.
dispatchEvent
(
'dragon-boat-race-score-update'
,
{
score
:
this
.
score
,
});
}
},
1000
)
}
...
...
@@ -214,7 +328,7 @@ export default class GameView extends engine.Container {
private
creatNpc
()
{
let
goods
=
this
.
_goods
=
<
Goods
>
ObjectPool
.
getObject
(
PoolName
);
this
.
goodsItems
.
push
(
goods
)
console
.
log
(
goods
);
//
console.log(goods);
this
.
NpcBg
.
addChild
(
goods
);
goods
.
addEventListener
(
engine
.
Event
.
ENTER_FRAME
,
goods
[
"onGoodsEnter"
]
=
()
=>
{
...
...
@@ -225,42 +339,43 @@ export default class GameView extends engine.Container {
//速度叠加
goods
.
y
+=
(
4
*
this
.
speed
)
//如果玩家和物品发生碰撞
if
(
this
.
hasHit
(
this
.
player
,
goods
))
{
if
(
goods
[
"npcType"
].
indexOf
(
"rain"
)
>
-
1
)
{
if
(
goods
[
"lifeState"
]
&&
this
.
hasHit
(
this
.
player
,
goods
))
{
goods
[
"lifeState"
]
=
false
;
if
(
goods
[
"npcType"
]
==
"rain0"
)
{
console
.
log
(
"碰到雨滴"
)
this
.
score
+=
props
.
rainScore
this
.
waterSvga
.
visible
=
true
;
// this.waterSvga.x= goods.x - this.player.x;
this
.
waterSvga
.
play
(
false
,
false
)
this
.
waterSvga
.
once
(
engine
.
Event
.
END_FRAME
,
()
=>
{
this
.
waterSvga
.
visible
=
false
;
},
this
);
}
else
if
(
goods
[
"npcType"
]
==
"stone"
)
{
console
.
log
(
"碰到石头"
)
this
.
score
+=
props
.
stoneScore
this
.
stoneSvga
.
visible
=
true
;
this
.
stoneSvga
.
play
(
false
,
false
)
this
.
stoneSvga
.
once
(
engine
.
Event
.
END_FRAME
,
()
=>
{
this
.
stoneSvga
.
visible
=
false
;
},
this
);
}
else
if
(
goods
[
"npcType"
]
==
"boom"
)
{
this
.
setBoomPosition
(
this
.
waterSvga
)
engine
.
Tween
.
get
(
goods
,
null
,
null
,
true
)
.
to
({
scaleX
:
0
,
scaleY
:
0
},
200
)
.
call
(()
=>
{
this
.
removeNpc
(
goods
)});
}
else
if
(
goods
[
"npcType"
]
==
"rain1"
)
{
console
.
log
(
"碰到雨滴"
)
this
.
score
+=
props
.
rainScore
this
.
setBoomPosition
(
this
.
water2Svga
)
engine
.
Tween
.
get
(
goods
,
null
,
null
,
true
)
.
to
({
scaleX
:
0
,
scaleY
:
0
},
200
)
.
call
(()
=>
{
this
.
removeNpc
(
goods
)});
}
else
if
(
goods
[
"npcType"
]
==
"boom"
||
goods
[
"npcType"
]
==
"stone"
)
{
console
.
log
(
"碰到炸弹"
)
this
.
boomSvga
.
visible
=
true
;
this
.
boomSvga
.
play
(
false
,
false
)
this
.
boomSvga
.
once
(
engine
.
Event
.
END_FRAME
,
()
=>
{
this
.
boomSvga
.
visible
=
false
;
engine
.
globalEvent
.
dispatchEvent
(
'food-fell-game-over'
,
{
this
.
setBoomPosition
(
this
.
boomSvga
,()
=>
{
engine
.
globalEvent
.
dispatchEvent
(
'dragon-boat-race-game-over'
,
{
score
:
this
.
score
,
reason
:
2
});
this
.
died
()
},
this
);
})
this
.
setPlayState
(
this
.
playerSvgaOver
)
this
.
pause
()
}
engine
.
globalEvent
.
dispatchEvent
(
'
food-fell
-score-update'
,
{
engine
.
globalEvent
.
dispatchEvent
(
'
dragon-boat-race
-score-update'
,
{
score
:
this
.
score
,
});
this
.
removeNpc
(
goods
)
}
}
}
...
...
@@ -319,7 +434,6 @@ export default class GameView extends engine.Container {
let
playerH
=
a
.
height
let
playerW
=
a
.
width
let
playerX
=
a
.
x
console
.
log
(
"props"
,
props
.
playerHeight
)
if
(
props
.
playerHeight
){
playerH
=
props
.
playerHeight
}
...
...
src/custom/dragon-boat-race/src/game/GameWrapper.ts
View file @
3d62bb2f
...
...
@@ -12,14 +12,12 @@ export class GameWrapper extends engine.Container {
constructor
()
{
super
();
alert
(
123
)
engine
.
globalEvent
.
addEventListener
(
'food-fell-reset'
,
this
.
reset
,
this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-start'
,
this
.
start
,
this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-pause'
,
this
.
pause
,
this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-resume'
,
this
.
resume
,
this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-revive'
,
this
.
revive
,
this
);
engine
.
globalEvent
.
addEventListener
(
'food-fell-clear'
,
this
.
clear
,
this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-reset'
,
this
.
reset
,
this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-start'
,
this
.
start
,
this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-pause'
,
this
.
pause
,
this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-resume'
,
this
.
resume
,
this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-revive'
,
this
.
revive
,
this
);
engine
.
globalEvent
.
addEventListener
(
'dragon-boat-race-clear'
,
this
.
clear
,
this
);
this
.
addEventListener
(
engine
.
MouseEvent
.
CLICK
,
this
.
onTap
,
this
);
...
...
src/custom/dragon-boat-race/src/game/Goods.ts
View file @
3d62bb2f
...
...
@@ -19,25 +19,32 @@ export class Goods extends engine.Container {
// let randomNum = Math.floor(Math.random() * 3)
// console.log('雨滴' + randomNum);
let
rain
=
new
engine
.
Sprite
(
getTextureByName
(
'雨滴0'
));
let
rain1
=
new
engine
.
Sprite
(
getTextureByName
(
'雨滴1'
));
let
rain2
=
new
engine
.
Sprite
(
getTextureByName
(
'雨滴2'
));
let
rain
=
new
engine
.
Sprite
(
getTextureByName
(
'金币'
));
let
rain1
=
new
engine
.
Sprite
(
getTextureByName
(
'粽子'
));
rain
[
"npcType"
]
=
"rain0"
rain1
[
"npcType"
]
=
"rain1"
rain2
[
"npcType"
]
=
"rain2"
let
stone
=
new
engine
.
Sprite
(
getTextureByName
(
'石块'
));
let
stone
=
new
engine
.
Sprite
(
getTextureByName
(
'木头'
));
stone
[
"npcType"
]
=
"stone"
let
boom
=
new
engine
.
Sprite
(
getTextureByName
(
'
炸弹
'
));
let
boom
=
new
engine
.
Sprite
(
getTextureByName
(
'
石块
'
));
boom
[
"npcType"
]
=
"boom"
rain
.
visible
=
false
;
rain1
.
visible
=
false
;
rain2
.
visible
=
false
;
stone
.
visible
=
false
;
boom
.
visible
=
false
;
rain
.
anchorX
=
rain
.
width
/
2
rain1
.
anchorX
=
rain1
.
width
/
2
stone
.
anchorX
=
stone
.
width
/
2
boom
.
anchorX
=
boom
.
width
/
2
rain
.
anchorY
=
rain
.
height
/
2
rain1
.
anchorY
=
rain1
.
height
/
2
stone
.
anchorY
=
stone
.
height
/
2
boom
.
anchorY
=
boom
.
height
/
2
body
.
addChild
(
rain
)
body
.
addChild
(
rain1
)
body
.
addChild
(
rain2
)
body
.
addChild
(
stone
)
body
.
addChild
(
boom
)
...
...
@@ -53,24 +60,33 @@ export class Goods extends engine.Container {
}
reset
()
{
this
[
"lifeState"
]
=
true
;
this
.
visible
=
true
;
this
.
rotation
=
0
;
this
.
anchorOffsetY
=
0
;
if
(
this
.
width
<=
0
){
this
.
anchorX
=
50
;
}
else
{
this
.
anchorX
=
this
.
width
/
2
;
}
this
.
anchorY
=
this
.
height
/
2
;
this
.
scaleX
=
this
.
scaleY
=
1
;
this
.
y
=
0
;
this
.
x
=
(
750
-
120
)
*
Math
.
random
()
+
30
;
this
.
x
=
(
(
750
-
props
.
maxNpcBound
)
-
120
)
*
Math
.
random
()
+
30
+
props
.
maxNpcBound
;
this
.
rotation
=
0
;
let
random
=
Math
.
random
()
if
(
typeof
(
props
.
goodsProbability
)
==
'string'
){
props
.
goodsProbability
=
props
.
goodsProbability
.
split
(
','
).
map
((
i
:
string
)
=>
+
i
)
console
.
log
(
props
.
goodsProbability
);
}
if
(
random
<
props
.
goodsProbability
[
0
]){
let
randomNum
=
Math
.
floor
(
Math
.
random
()
*
3
)
this
.
showNpc
(
"rain"
+
randomNum
)
this
.
showNpc
(
"rain0"
)
}
else
if
(
random
>=
props
.
goodsProbability
[
0
]
&&
random
<=
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
])){
this
.
showNpc
(
"rain1"
)
}
else
if
(
random
>=
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
])
&&
random
<=
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
]
+
props
.
goodsProbability
[
2
])){
this
.
showNpc
(
"stone"
)
}
else
if
(
random
>
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
])){
}
else
if
(
random
>
(
props
.
goodsProbability
[
0
]
+
props
.
goodsProbability
[
1
]
+
props
.
goodsProbability
[
2
]
)){
this
.
showNpc
(
"boom"
)
}
}
...
...
src/custom/shoot-planet-2/debug/index.html
View file @
3d62bb2f
...
...
@@ -17,7 +17,6 @@
padding
:
0
;
margin
:
0
;
border
:
0
;
width
:
100%
;
height
:
100%
;
overflow
:
hidden
;
...
...
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