Commit 6794a9ed authored by Master Q's avatar Master Q

Initial commit

parents
# project ignores
node_modules
released
.DS_Store
.idea
output.js
output.js.map
\ No newline at end of file
# 最新模板分支newTemplate0805
### psd命名规则
按钮单图 图层名字_btn_id
按钮多图 组名_btn_id (里面多图层,0常态,1不可点击,2按钮)
普通图片png 图层名字_id
普通图片jpg 图层名字_jpg_id
矩形 图层名字_id
文本 图层名字_id (默认都居左,未改文本前, 调整调用Tool里方法changeTextAlign)
贴图 图层名字_tex (只切图,不进皮肤)
作为item的皮肤不进root 组名_item (比如自定义的类或滚动列表的item)
(组名,图层名字,id均为动态)
(id为英文,显示对象原属性名不能作为id,比如"name")
(同名的的图片只要图片相同就行,用clearSameImg脚本将同图移进common)
(能合并的图自行合并)
(视图模块名字命名成...Panel,...Scene,例如StartScene,RulePanel,方便生成模块传参,否则自行修改createModule脚本里的参数)
(id必须是英文,作为item的组名必须是英文,因为会生成类)
### psd解析
生成./resource/skinJson.json和./src/SkinJson.ts,
初始一致,json只用于脚本createModule.js生成场景或弹框模块,实际作用数据是ts,有需要自行修改SkinJson.ts
执行,会刷新资源配置及覆盖SkinJson.ts,注意
```shell script
#多视图解析,会解析./psd文件夹内所有psd及内视图
npm run psd
#单视图解析,主要用于处理后添加的视图,传参./psd文件夹内psd名字,
#资源及皮肤数据skin.json会在./psd文件夹内生成,自行处理进./resource/skin.json和./src/SkinJson.ts文件
npm run psdSin
```
### 生成模块 有psd生成皮肤数据时使用
会根据参数Panel或者Scene生成ts文件写入./src/panels或./src/scenes文件夹
```shell script
npm run createModule RulePanel
```
### 资源配置刷新
有资源删除或增加时执行
会根据resource里的子级文件夹分组
文件夹名字用于各模块里的groupNames,用于按需资源加载
```shell script
npm run flushRes
```
### 本地开发
```shell script
npm run dev
```
### 图集工具安装
```shell script
#全局安装
cnpm install pack_textures -g
#终端输入packTextures检查环境变量是否存在
```
### 淘宝打包流程
```shell script
#带资源打包,并生成./released/resource文件夹和./released/output.js文件
npm run build
#只打包代码,
npm run buildTS
#脚本copyJs.js自行修改小程序output.js文件路径,嫌麻烦自行修改package.json里的build和buildTS,也可自行复制output.js
npm run copyJs
```
### web打包流程
```shell script
#带资源打包,并生成./released/resource文件夹和./output.js文件及./released/index.html,可复制进皮肤
npm run buildWeb
#只打包代码,并生成./output.js文件及./released/index.html,会打印版本号,可直接更换皮肤的版本号
npm run buildWebTS
```
### 适配
./module/views/layers.ts可设置所有层级适配(弹框场景等等)
单独模块的适配自行在模块里处理,修改this.y
### psd导出文本
部分文案尺寸错误自行在SkinJson,ts里修改
居中居右,在未修改文本字号字符等属性前调用Tools.changeTextAlign修改,可与psd表现保持一致
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Document</title>
<meta name="viewport"
content="width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="full-screen" content="true" />
<meta name="screen-orientation" content="portrait" />
<meta name="x5-fullscreen" content="true" />
<meta name="360-fullscreen" content="true" />
<!-- 渲染引擎 -->
<!-- <script src="//yun.duiba.com.cn/db_games/libs0924/fyge2020.min.js" crossorigin="anonymous"></script>-->
<!-- svga解析库 -->
<!-- <script src="//yun.duiba.com.cn/db_games/libs0924/svgaParser.minWeb.js" crossorigin="anonymous"></script>-->
<!-- 本地的js,需要souremap调试的用本地js -->
<script src="libs/fyge.min.js"></script>
<script src="libs/svgaParser.min.js"></script>
<!-- <script src="libs/svgaParser.min1.js"></script> -->
<style>
html,
body {
padding: 0;
margin: 0;
border: 0;
width: 100%;
height: 100%;
overflow: hidden;
position: absolute;
background-color: #ffffff;
/* background: linear-gradient(#93dbb7,#ff0,#b5d89a); */
/* background: linear-gradient(#93dbb7,#b5d89a); */
/* 背景图片,解决加载太慢,白屏问题,加了这个下面的__loading__可以删掉了 */
/* background-size: 100%;
background-position: center;
background-image: url("https://yun.duiba.com.cn/db_games/activity/game/1550472986/resource/assets/playscene/playscenebg.jpg"); */
}
</style>
</head>
<body>
<script>
const app = {};
function getApp() {
return app;
}
</script>
<div id="__loading__" style="position:absolute;left:50%;top:50%;margin-left:-45px;color:#ffffff">拼命加载中...</div>
<div id="cusEngine" style="line-height:0;font-size:0;position: absolute;">
<canvas id="canvas" style="width: 100%;height: 100%"></canvas>
</div>
<!-- 帧率检测 -->
<!-- <script src="//yun.duiba.com.cn/db_games/libs0924/stats.js"></script> -->
<!-- <script src="https://yun.duiba.com.cn/db_games/libs0126/stats.js"></script>-->
<script>
window.addEventListener("load", function () {
//获取canvas
var canvas = document.getElementById("canvas");
canvas.width = document.body.clientWidth * (window.devicePixelRatio || 1)
canvas.height = document.body.clientHeight * (window.devicePixelRatio || 1)
var main = new Main(canvas);
var mouseEvent = main.stage.onMouseEvent.bind(main.stage);
canvas.addEventListener("touchstart", mouseEvent, false);
canvas.addEventListener('touchmove', mouseEvent, false);
canvas.addEventListener('touchend', mouseEvent, false);
window.stage = main.stage
})
</script>
<!-- 构建的js -->
<script src="output.js" crossorigin="anonymous"></script>
</body>
</html>
This diff is collapsed.
declare module SvgaParser {
/**
* 加载方法
* @param url 资源路径
* @param success
* @param failure
*/
export function loadSvga(url: string, success: (videoItem: VideoEntity) => void, failure?: (err: string) => void): void;
/**
* 导出只是当作类型接口用
*/
export interface VideoEntity {
/**
* SVGA 文件版本
*/
version: string;
/**
* 影片尺寸
*/
videoSize: {
width: number;
height: number;
};
/**
* 帧率,60,30等每秒
*/
FPS: number;
/**
* 总帧数
*/
frames: number;
/**
* base64图片数据记录
*/
images: {
[key: string]: string
};
/**
* 图片是否已被缓存,缓存全局,注意名字覆盖
*/
hasBeenCached: boolean;
/**
* sprite对象数据
*/
sprites: SpriteEntity[];
}
interface SpriteEntity {
/**
* 标识
*/
matteKey: string;
/**
* 图片key值
*/
imageKey: string;
/**
* 帧数据数组
*/
frames: FrameEntity[];
}
/**
* 还有很多其他数据,暂不需要,比如矢量路径和遮罩路径暂时都无
*/
interface FrameEntity {
/**
* 透明度
*/
alpha: number;
/**
* 2维矩阵数据
*/
transform: {
a: number,
b: number,
c: number,
d: number,
tx: number,
ty: number,
};
}
}
declare module "svga-parser" { export = SvgaParser; }
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
// Type definitions for howler.js v2.1.1
// Project: https://github.com/goldfire/howler.js
// Definitions by: Pedro Casaubon <https://github.com/xperiments>
// Alexander Leon <https://github.com/alien35>
// Nicholas Higgins <https://github.com/nicholashza>
// Carlos Urango <https://github.com/cjurango>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
interface HowlerGlobal {
usingWebAudio: boolean;
html5PoolSize: number;
noAudio: boolean;
autoUnlock: boolean;
autoSuspend: boolean;
ctx: AudioContext;
masterGain: GainNode;
mute(muted: boolean): this;
volume(): number;
volume(volume: number): this;
codecs(ext: string): boolean;
unload(): this;
stereo(pan: number): this;
pos(x: number, y: number, z: number): this | void;
orientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): this | void;
}
declare let Howler: HowlerGlobal;
interface IHowlSoundSpriteDefinition {
[name: string]: [number, number] | [number, number, boolean]
}
interface IHowlProperties {
src: string | string[];
volume?: number;
html5?: boolean;
loop?: boolean;
preload?: boolean;
autoplay?: boolean;
mute?: boolean;
sprite?: IHowlSoundSpriteDefinition;
rate?: number;
pool?: number;
format?: string[] | string;
xhrWithCredentials?: boolean;
onload?: () => void;
onloaderror?: (soundId: number, error: any) => void;
onplay?: (soundId: number) => void;
onplayerror?: (soundId: number, error: any) => void;
onend?: (soundId: number) => void;
onpause?: (soundId: number) => void;
onstop?: (soundId: number) => void;
onmute?: (soundId: number) => void;
onvolume?: (soundId: number) => void;
onrate?: (soundId: number) => void;
onseek?: (soundId: number) => void;
onfade?: (soundId: number) => void;
onunlock?: (soundId: number) => void;
}
interface Howl {
play(spriteOrId?: string | number): number; // .play() is not chainable; the other methods are
pause(id?: number): this;
stop(id?: number): this;
mute(): boolean;
mute(muted: boolean, id?: number): this;
volume(): number;
volume(idOrSetVolume: number): this | number;
volume(volume: number, id: number): this;
fade(from: number, to: number, duration: number, id?: number): this;
rate(): number;
rate(idOrSetRate: number): this | number;
rate(rate: number, id: number): this;
seek(seek?: number, id?: number): this | number;
loop(id?: number): boolean;
loop(loop: boolean, id?: number): this;
playing(id?: number): boolean;
duration(id?: number): number;
state(): 'unloaded' | 'loading' | 'loaded';
load(): this;
unload(): void;
on(event: 'load', callback: () => void, id?: number): this;
on(event: 'loaderror', callback: (soundId: number, error: any) => void, id?: number): this;
on(event: 'play', callback: (soundId: number) => void, id?: number): this;
on(event: 'playerror', callback: (soundId: number, error: any) => void, id?: number): this;
on(event: 'end', callback: (soundId: number) => void, id?: number): this;
on(event: 'pause', callback: (soundId: number) => void, id?: number): this;
on(event: 'stop', callback: (soundId: number) => void, id?: number): this;
on(event: 'mute', callback: (soundId: number) => void, id?: number): this;
on(event: 'volume', callback: (soundId: number) => void, id?: number): this;
on(event: 'rate', callback: (soundId: number) => void, id?: number): this;
on(event: 'seek', callback: (soundId: number) => void, id?: number): this;
on(event: 'fade', callback: (soundId: number) => void, id?: number): this;
on(event: string, callback: Function, id?: number): this;
on(event: 'unlock', callback: (soundId: number) => void, id?: number): this;
once(event: 'load', callback: () => void, id?: number): this;
once(event: 'loaderror', callback: (soundId: number, error: any) => void, id?: number): this;
once(event: 'play', callback: (soundId: number) => void, id?: number): this;
once(event: 'playerror', callback: (soundId: number, error: any) => void, id?: number): this;
once(event: 'end', callback: (soundId: number) => void, id?: number): this;
once(event: 'pause', callback: (soundId: number) => void, id?: number): this;
once(event: 'stop', callback: (soundId: number) => void, id?: number): this;
once(event: 'mute', callback: (soundId: number) => void, id?: number): this;
once(event: 'volume', callback: (soundId: number) => void, id?: number): this;
once(event: 'rate', callback: (soundId: number) => void, id?: number): this;
once(event: 'seek', callback: (soundId: number) => void, id?: number): this;
once(event: 'fade', callback: (soundId: number) => void, id?: number): this;
once(event: string, callback: Function, id?: number): this;
once(event: 'unlock', callback: (soundId: number) => void, id?: number): this;
off(event: string, callback?: Function, id?: number): this;
off(): this;
stereo(pan: number, id?: number): this | void;
pos(x: number, y: number, z: number, id?: number): this | void;
orientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): this | void;
pannerAttr(o: {
coneInnerAngle?: number,
coneOuterAngle?: number, coneOuterGain?: number,
distanceModel: 'inverse' | 'linear', maxDistance: number,
panningModel: 'HRTF' | 'equalpower', refDistance: number, rolloffFactor: number
}, id?: number): this;
}
interface HowlStatic {
new(properties: IHowlProperties): Howl;
}
declare let Howl: HowlStatic;
declare module "howler" {
export let Howler: HowlerGlobal;
export let Howl: HowlStatic;
}
This diff is collapsed.
var Stats = function () {
var startTime = Date.now(), prevTime = startTime;
var ms = 0, msMin = Infinity, msMax = 0;
var fps = 0, fpsMin = Infinity, fpsMax = 0;
var frames = 0, mode = 0;
var container = document.createElement('div');
container.id = 'stats';
container.addEventListener('mousedown', function (event) {
event.preventDefault();
setMode(++mode % 2)
}, false);
container.style.cssText = 'width:80px;opacity:0.9;cursor:pointer';
var fpsDiv = document.createElement('div');
fpsDiv.id = 'fps';
fpsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#002';
container.appendChild(fpsDiv);
var fpsText = document.createElement('div');
fpsText.id = 'fpsText';
fpsText.style.cssText = 'color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';
fpsText.innerHTML = 'FPS';
fpsDiv.appendChild(fpsText);
var fpsGraph = document.createElement('div');
fpsGraph.id = 'fpsGraph';
fpsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0ff';
fpsDiv.appendChild(fpsGraph);
while (fpsGraph.children.length < 74) {
var bar = document.createElement('span');
bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#113';
fpsGraph.appendChild(bar);
}
var msDiv = document.createElement('div');
msDiv.id = 'ms';
msDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#020;display:none';
container.appendChild(msDiv);
var msText = document.createElement('div');
msText.id = 'msText';
msText.style.cssText = 'color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';
msText.innerHTML = 'MS';
msDiv.appendChild(msText);
var msGraph = document.createElement('div');
msGraph.id = 'msGraph';
msGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0f0';
msDiv.appendChild(msGraph);
while (msGraph.children.length < 74) {
var bar = document.createElement('span');
bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#131';
msGraph.appendChild(bar);
}
var setMode = function (value) {
mode = value;
switch (mode) {
case 0:
fpsDiv.style.display = 'block';
msDiv.style.display = 'none';
break;
case 1:
fpsDiv.style.display = 'none';
msDiv.style.display = 'block';
break;
}
}
var updateGraph = function (dom, value) {
var child = dom.appendChild(dom.firstChild);
child.style.height = value + 'px';
}
return {
REVISION: 11,
domElement: container,
setMode: setMode,
begin: function () {
startTime = Date.now();
},
end: function () {
var time = Date.now();
ms = time - startTime;
msMin = Math.min(msMin, ms);
msMax = Math.max(msMax, ms);
msText.textContent = ms + ' MS (' + msMin + '-' + msMax + ')';
updateGraph(msGraph, Math.min(30, 30 - (ms / 200) * 30));
frames++;
if (time > prevTime + 1000) {
fps = Math.round((frames * 1000) / (time - prevTime));
fpsMin = Math.min(fpsMin, fps);
fpsMax = Math.max(fpsMax, fps);
fpsText.textContent = fps + ' FPS (' + fpsMin + '-' + fpsMax + ')';
updateGraph(fpsGraph, Math.min(30, 30 - (fps / 100) * 30));
prevTime = time;
frames = 0;
}
return time;
},
update: function () {
startTime = this.end();
}
}
};
//执行
var stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.top = '0px';
document.body.appendChild(stats.domElement);
aa();
function aa() {
stats.update();
requestAnimationFrame(aa)
}
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
declare const app;
declare const PAGE;
declare function getApp();
declare namespace my {
export function postMessage(e);
export function onMessage(e);
export const tb;
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
{"v":"5.6.3","fr":30,"ip":0,"op":97,"w":473,"h":203,"nm":"按钮更新","ddd":0,"assets":[{"id":"0","w":368,"h":154,"u":"","p":"data:image/png;base64,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","e":1},{"id":"1","w":390,"h":176,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYYAAACwBAMAAAD5+tTSAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMAXNWlK4m/aDWWAAACjElEQVR42u3dz07CQBAGcFoK58Y/PSNqz0i050UTzlUTztCWff9HEESBagXsNul8wzdPwC873dndsDudztmE92ZbifsQXdCgwotti5E1gpjZVmPZAOHZthx37oa4bUPmTOjZ1iN1NUTtGxbwqeSeTJ4VECH85+D8QfgSDAM3Q1+CYQ4/LTlPTDMJhiX81Oo8uVoRQQMNNJy7YfI+jK28yIZPVycKriX+/q3j9QTBpWTBp+Lh2G4hsfIjD+WeJDVy5NTDIKwQKXQiHU6nAIewQhi5ux23bVHXYsWoIpNiMENmwDOpMps8ixch/DD8GgjEYfg5EBGkoTQQgcUMI+1QtUbsn8MmoIYc/Ysuf9VTWEMBn0p7yYSbSrtkmgIbCvhU2iZTYJHDQG5+qrZCPrRhALzeK6/7EmhDLuh0vnagV7jvKtcFN4zgp6XNxDQFNxTwU+tmcp2BG5ZS/pDhEBl+eVgXCA/eEMr4v55TpPAlbl3kfHjDQIWhD2+Y00ADDTTQQAMNNNBAAw000EADDTTQQAMNNNBAAw000EADDTTQQAMNNNBAAw000EADDTTQoMjg0yAgBir+s67h7oCGOxwBvMGouA9Eg4DIlNyPS8ANuZK7lhG4YSHlMXinJZ+OO+DoC6ZUyZsI6Asm04Evcpmad06wC8RCTrcQp/Kg4/0l7Mk1FNQuxGlaUvGmmoq37brwnzT2asNgv6K7q3DYyTSCfwq49BhwBJ9KuMk0EtfZq3aRRi5zhbp31jW8d6+i74CG/g+AAxEKbNH8z6js6Iy1FcrldtZ1yaR1vAARHkX3dK05J8F1m/qj0xQSYmkONsG7ACDcHO37PRYuuD2lL+RkjC746s0pEnB6b064+ABVyde4CqqVygAAAABJRU5ErkJggg==","e":1}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"开始寻找仔仔按钮","refId":"0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[235,102,0],"ix":2},"a":{"a":0,"k":[184,77,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":5.75,"s":[90,102.983,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":11.5,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":17.25,"s":[90,102.983,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":23,"s":[105,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":30,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":65.75,"s":[90,102.983,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":71.5,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":77.25,"s":[90,102.983,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":83,"s":[105,100,100]},{"t":90,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"白色光晕.png","cl":"png","refId":"1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":23,"s":[40]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":37,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":82,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":83,"s":[40]},{"t":97,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[236.469,101.5,0],"ix":2},"a":{"a":0,"k":[195,88,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":23,"s":[104.469,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":37,"s":[122.229,117,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":83,"s":[104.469,100,100]},{"t":97,"s":[122.229,117,100]}],"ix":6}},"ao":0,"ip":23,"op":623,"st":23,"bm":0}],"markers":[{"tm":109,"cm":"1","dr":0}],"tiny":0.55}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
const path = require('path');
const config = {
'/ngame/new/datapash': {
data: './json/datapash.json'
},
'/hdtool/recon/ngame/ngameSubmit': {
data: './json/ngameSubmit.json'
},
'/hdtool/recon/ajaxElement': {
data: './json/ajaxElement.json'
},
'/hdtool/recon/getOrderStatus': {
data: './json/getOrderStatus.json'
},
'/hdtool/recon/doJoin': {
data: './json/doJoin.json'
},
'/hdtool/recon/ngame/getNgameStartStatus': {
data: './json/getNgameStartStatus.json'
},
}
for (let item in config) {
if (config.hasOwnProperty(item))
config[item].path = path.resolve(__dirname, config[item].data);
}
module.exports = config;
\ No newline at end of file
{
"code": "0000000000",
"data": {
"creditsConf": {
"creditsUp": 100,
"creditsType": "virtual",
"creditsDown": 50,
"prize": [
{
"img": "adsfsadf",
"credits": 20,
"id": 4,
"title": "0.3"
},
{
"img": "sadfasdf",
"credits": 150,
"id": 3,
"title": "1.5倍"
},
{
"img": "sadfasdf",
"credits": 100,
"id": 2,
"title": "1倍"
},
{
"img": "sadfasdf",
"credits": 50,
"id": 1,
"title": "0.5倍"
}
]
},
"floating": {
"jsTest": "//yun1.duiba.com.cn/h5/showCouponPrize/4.0.0/index_201710191434.js",
"cssTest": "//yun1.duiba.com.cn/h5/showCouponPrize/4.0.0/index_201710191440.css"
},
"options": [
{
"itemId": 47861,
"hidden": false,
"prizeType": "thanks",
"name": "谢谢参与",
"description": "",
"logo": "//yun1.duiba.com.cn/upload/uP99F1462438316972.png",
"id": 15581
},
{
"itemId": 47862,
"hidden": false,
"prizeType": "lucky",
"name": "幸运福袋",
"description": "",
"logo": "//yun1.duiba.com.cn/webapp/img/luckynewn.png",
"id": 15582
},
{
"itemId": 47863,
"scoreArea": "",
"hidden": false,
"prizeType": "alipay",
"name": "支付宝1",
"description": "",
"logo": "//yun1.duiba.com.cn/developer/img/activityTool/slotMachine/alipay.png",
"id": 15585
},
{
"itemId": 47864,
"scoreArea": "",
"hidden": false,
"prizeType": "alipay",
"name": "支付宝1",
"description": "",
"logo": "//yun1.duiba.com.cn/developer/img/activityTool/slotMachine/alipay.png",
"id": 15585
}
],
"rule": "adsfasdfasd啊实打实爱的额求稳怕哦i求稳怕请问赔钱片尾曲哦物品i区乌日千万人i去我日哦确认iqo【iadsfasdfasd啊实打实爱的额求稳怕哦i求稳怕请问赔钱片尾曲哦物品i区乌日千万人i去我日哦确认iqo【iadsfasdfasd啊实打实爱的额求稳怕哦i求稳怕请问赔钱片尾曲哦物品i区乌日千万人i去我日哦确认iqo【i",
"type": "hdtool",
"element": {
"isCreditsTypeOpen": false,
"myCreditsLong": 999999632167,
"freeLimit": 5,
"success": false,
"myCredits": "999999632167",
"needCredits": "100",
"freeEmpty": true,
"needCreditsLong": 9,
"status": 7
},
"coinPusherConf": {
"exchangeRate": 60,
"creditsGear": "25,60,75,80"
}
},
"success": true,
"desc": "OK",
"timestamp": 1548832971636
}
\ No newline at end of file
{
"success":true,
"code":"0000000000",
"desc":"OK",
"timestamp":1548915321930,
"data":123456
}
\ No newline at end of file
{
"success":true,
"code":"0000000000",
"desc":"OK",
"timestamp":1550570639368,
"data":{
"orderId":"883006813674240289",
"submitToken":"d895deb9118f4b938d0b70a3dd2ace19",
"credits":"999999491765",
"unitName":"金币",
"consumerCredits":999999491765
}
}
\ No newline at end of file
{
"success":true,
"code":"0000000000",
"desc":"OK",
"timestamp":1548923950498,
"data":{
"element":{
"success":false,
"isCreditsTypeOpen":false,
"needCredits":"100",
"myCredits":"1123",
"myCreditsLong":1123,
"needCreditsLong":9,
"freeLimit":2,
"status":6,
"freeEmpty":true
},
"lottery":{
"id":null,
"type":"111",
"imgUrl":"//yun.duiba.com.cn/images/201607/73htz55ih9.jpg",
"link":null,
"title":"重复券测试grape",
"itemId":null,
"appItemId":null,
"bonus":null,
"bonusMin":null,
"bonusMax":null,
"needAccount":null,
"appLucky":null,
"tip":null,
"useBtnText":null,
"validate":null,
"couponCode":null,
"couponKey":null,
"stInfoDpmImg":null,
"stInfoDpmClose":null,
"stInfoDpmGoUse":null,
"showUse":null,
"openUrl":null,
"iosDownloadUrl":null,
"androidDownloadUrl":null,
"isDownloadUrl":null,
"confirm":null,
"phaseNumber":null,
"happyCode":null,
"appHidden":true,
"zybangJson":null
},
"exposure":11111,
"creditsInfo":{
"activityId":82567,
"prizeId":4,
"orderNum":null,
"developerBizId":"3029576",
"score":null,
"recordStatus":1,
"errorMsg":null
},
"againTag":null
}
}
\ No newline at end of file
{
"success":true,
"code":"0000000000",
"desc":"OK",
"timestamp":1550646190489,
"data":{
"score":100,
"maxScore":100
}
}
\ No newline at end of file
{
"success": true
}
\ No newline at end of file
This diff is collapsed.
{
"data": null,
"success": true,
"code": "111",
"message": "ok"
}
{
"success": true,
"data": {
"id": "123456",
"type": 5,
"name": "吕秀兰",
"image": "https://yun.duiba.com.cn/aurora/assets/8c6cce25b4970d776a4ac89780ffe97b2c69c56c.png"
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
{
"success": true,
"message": "",
"code": "",
"data": 1234
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
{}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
import { Module } from "./Module";
export class Scene extends Module {
/**
* 显示动画
* 继承时注意,回调要加
* 因为这种动画基本原场景最好不消失
*/
showAni(callback: Function) {
callback()
}
/**
* 统一更新方法
*/
updateScene() {
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment