Commit 58c06c41 authored by huoshizhe's avatar huoshizhe

feat: ET17

parent ff9e0d97
No preview for this file type
...@@ -5,6 +5,12 @@ ...@@ -5,6 +5,12 @@
/publish/publish/play /publish/publish/play
/publish/publish/form /publish/publish/form
/publish/publish/android /publish/publish/android
/publish/publish/web_desktop
/publish/publish/ios /publish/publish/ios
/publish/publish/*.zip /publish/publish/*.zip
/publish/publish/config.json
/publish/publish/Release*
/node_modules /node_modules
/play/build_android
/play/build_ios
/play/build_web_desktop
\ No newline at end of file
...@@ -128,5 +128,8 @@ ...@@ -128,5 +128,8 @@
} }
} }
}, },
"defaultProject": "ng-template-generator" "defaultProject": "ng-template-generator",
"cli": {
"analytics": false
}
} }
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<div class="model-content"> <div class="model-content">
<div class="border" style=" width: 520px; height: 130px;">
<div style="padding: 10px;"> <span style="height: 30px; font-size: 18px; float: left;">标题文字:</span>
<input style="width: 150px; float: left;" type="text" nz-input [(ngModel)]="item.titleTxt" (blur)="save()">
<div style="width: 300px;" align='center'> <br><br>
<span>图1: </span> <span style="height: 30px; font-size: 18px; float: left;">标题音频:</span>
<app-upload-image-with-preview <app-audio-recorder style="float: left;" [audioUrl]="item.titleAudio" (audioUploaded)="onAudioUploadSuccess($event)">
[picUrl]="item.pic_url" </app-audio-recorder>
(imageUploaded)="onImageUploadSuccess($event, 'pic_url')">
</app-upload-image-with-preview>
</div> </div>
<div class="border" style=" width: 520px;">
<div style="width: 300px; margin-top: 5px;" align='center'> <span style="height: 30px; font-size: 18px;">已选字母:</span>
<span>图2: </span> <div *ngFor="let letter of item.letterList; let i = index">
<app-upload-image-with-preview <div style="float: left; width: 60px;">
[picUrl]="item.pic_url_2" <span style="font-size: 50px;align-content: center;">{{letter}}</span>
(imageUploaded)="onImageUploadSuccess($event, 'pic_url_2')"> <br>
</app-upload-image-with-preview> <button style="color: red;" nz-button nzType="dashed" class="add-btn" (click)="removeLetter(i)">
X
</button>
</div> </div>
<div style="width: 300px; margin-top: 15px;">
<span>文本: </span>
<input type="text" nz-input [(ngModel)]="item.text" (blur)="save()">
</div> </div>
<div style="float: none;clear: both;">&nbsp;</div>
<div style="margin-top: 5px"> </div>
<span>音频: </span> <!-- <div class="border" style=" width: 520px;">
<app-audio-recorder <span style="height: 30px; font-size: 18px;">可选字母(点击下方字母选择):</span>
[audioUrl]="item.audio_url" <br>
(audioUploaded)="onAudioUploadSuccess($event, 'audio_url')" <a (click)="addLetter('Q')" style="font-size: 50px; width: 50px;">Q&nbsp;</a>
></app-audio-recorder> <a (click)="addLetter('W')" style="font-size: 50px; width: 50px;">W&nbsp;</a>
<a (click)="addLetter('E')" style="font-size: 50px; width: 50px;">E&nbsp;</a>
<a (click)="addLetter('R')" style="font-size: 50px; width: 50px;">R&nbsp;</a>
<a (click)="addLetter('T')" style="font-size: 50px; width: 50px;">T&nbsp;</a>
<a (click)="addLetter('Y')" style="font-size: 50px; width: 50px;">Y&nbsp;</a>
<a (click)="addLetter('U')" style="font-size: 50px; width: 50px;">U&nbsp;</a>
<a (click)="addLetter('I')" style="font-size: 50px; width: 50px;">I&nbsp;</a>
<a (click)="addLetter('O')" style="font-size: 50px; width: 50px;">O&nbsp;</a>
<a (click)="addLetter('P')" style="font-size: 50px; width: 50px;">P&nbsp;</a>
<br>
<a (click)="addLetter('A')" style="font-size: 50px; margin-left: 20px;">A&nbsp;</a>
<a (click)="addLetter('S')" style="font-size: 50px;">S&nbsp;</a>
<a (click)="addLetter('D')" style="font-size: 50px;">D&nbsp;</a>
<a (click)="addLetter('F')" style="font-size: 50px;">F&nbsp;</a>
<a (click)="addLetter('G')" style="font-size: 50px;">G&nbsp;</a>
<a (click)="addLetter('H')" style="font-size: 50px;">H&nbsp;</a>
<a (click)="addLetter('J')" style="font-size: 50px;">J&nbsp;</a>
<a (click)="addLetter('K')" style="font-size: 50px;">K&nbsp;</a>
<a (click)="addLetter('L')" style="font-size: 50px;">L&nbsp;</a>
<br>
<a (click)="addLetter('Z')" style="font-size: 50px; margin-left: 40px;">Z&nbsp;</a>
<a (click)="addLetter('X')" style="font-size: 50px;">X&nbsp;</a>
<a (click)="addLetter('C')" style="font-size: 50px;">C&nbsp;</a>
<a (click)="addLetter('V')" style="font-size: 50px;">V&nbsp;</a>
<a (click)="addLetter('B')" style="font-size: 50px;">B&nbsp;</a>
<a (click)="addLetter('N')" style="font-size: 50px;">N&nbsp;</a>
<a (click)="addLetter('M')" style="font-size: 50px;">M&nbsp;</a>
<br>
</div> -->
<div class="border" style="width: 350px;">
<span style="height: 30px; font-size: 18px;">可选字母(点击下方字母选择):</span>
<br>
<a (click)="addLetter('A')" style="font-size: 50px;">A&nbsp;</a>
<a (click)="addLetter('B')" style="font-size: 50px;">B&nbsp;</a>
<a (click)="addLetter('C')" style="font-size: 50px;">C&nbsp;</a>
<a (click)="addLetter('D')" style="font-size: 50px;">D&nbsp;</a>
<a (click)="addLetter('E')" style="font-size: 50px;">E&nbsp;</a>
<a (click)="addLetter('F')" style="font-size: 50px;">F&nbsp;</a>
<a (click)="addLetter('G')" style="font-size: 50px;">G&nbsp;</a>
<br>
<a (click)="addLetter('H')" style="font-size: 50px;">H&nbsp;</a>
<a (click)="addLetter('I')" style="font-size: 50px;">I&nbsp;</a>
<a (click)="addLetter('J')" style="font-size: 50px;">J&nbsp;</a>
<a (click)="addLetter('K')" style="font-size: 50px;">K&nbsp;</a>
<a (click)="addLetter('L')" style="font-size: 50px;">L&nbsp;</a>
<a (click)="addLetter('M')" style="font-size: 50px;">M&nbsp;</a>
<a (click)="addLetter('N')" style="font-size: 50px;">N&nbsp;</a>
<br>
<a (click)="addLetter('O')" style="font-size: 50px;">O&nbsp;</a>
<a (click)="addLetter('P')" style="font-size: 50px;">P&nbsp;</a>
<a (click)="addLetter('Q')" style="font-size: 50px;">Q&nbsp;</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a (click)="addLetter('R')" style="font-size: 50px;">R&nbsp;</a>
<a (click)="addLetter('S')" style="font-size: 50px;">S&nbsp;</a>
<a (click)="addLetter('T')" style="font-size: 50px;">T&nbsp;</a>
<br>
<a (click)="addLetter('U')" style="font-size: 50px;">U&nbsp;</a>
<a (click)="addLetter('V')" style="font-size: 50px;">V&nbsp;</a>
<a (click)="addLetter('W')" style="font-size: 50px;">W&nbsp;</a>
&nbsp;&nbsp;
<a (click)="addLetter('X')" style="font-size: 50px;">X&nbsp;</a>
<a (click)="addLetter('Y')" style="font-size: 50px;">Y&nbsp;</a>
<a (click)="addLetter('Z')" style="font-size: 50px;">Z&nbsp;</a>
<br>
</div>
<!-- <div class="border" style=" width: 520px; height: 120px;">
<span style="height: 30px; font-size: 18px;">单词音频:</span>
<br>
<app-audio-recorder [audioUrl]=" item.audio" (audioUploaded)="onAudioUploadSuccess($event)">
</app-audio-recorder>
</div>
<div class="border" style="width: 520px;">
<span style="height: 30px; font-size: 18px;">正确字母:</span>
<div>
<div *ngFor="let rightWord of item.rightWordList; let i = index">
<div style="padding: 2px;">
<input style="width: 150px;float: left;" type="text" nz-input [(ngModel)]="rightWord.word" (blur)="save()">
<app-audio-recorder style="float: left;" [audioUrl]="rightWord.audio"
(audioUploaded)="onRightAudioUploadSuccess($event, i)">
</app-audio-recorder>
<button style="float: right; margin-left: 10px; height: 32px; color: red;" nz-button nzType="dashed"
class="add-btn" (click)="removeRightWord(i)">
<i nz-icon nzType="minus-circle" nzTheme="outline"></i>
删除字母
</button>
</div>
<br> <br>
</div>
</div>
<div *ngIf="(item.rightWordList.length +item.wrongWordList.length < 5)">
<button style="margin-left: 2px; margin-top: 2px; height: 32px;" nz-button nzType="dashed" class="add-btn"
(click)="addRightWord()">
<i nz-icon nzType="plus-circle" nzTheme="outline"></i>
添加<span style="color: #44bb44;">正确</span>的字母
</button>
</div> </div>
</div> </div>
-->
</div> </div>
\ No newline at end of file
...@@ -18,24 +18,13 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -18,24 +18,13 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
} }
createShell() {
this.item.wordList.push({
word: '',
audio: '',
backWord: '',
backWordAudio: '',
});
this.save();
}
removeShell(idx) {
this.item.wordList.splice(idx, 1);
this.save();
}
ngOnInit() { ngOnInit() {
this.item = {}; this.item = {
letterList: [],
titleAudio: '',
titleTxt: ''
};
// 获取存储的数据 // 获取存储的数据
(<any>window).courseware.getData((data) => { (<any>window).courseware.getData((data) => {
...@@ -52,6 +41,16 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -52,6 +41,16 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
}, this.saveKey); }, this.saveKey);
} }
addLetter(letter) {
this.item.letterList.push(letter);
this.save();
}
removeLetter(idx) {
this.item.letterList.splice(idx, 1);
this.save();
}
ngOnChanges() { ngOnChanges() {
} }
...@@ -77,18 +76,8 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -77,18 +76,8 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
* 储存音频数据 * 储存音频数据
* @param e * @param e
*/ */
onAudioUploadSuccess(e, key) { onAudioUploadSuccess(e) {
this.item[key] = e.url; this.item.titleAudio = e.url;
this.save();
}
onWordAudioUploadSuccess(e, idx) {
this.item.wordList[idx].audio = e.url;
this.save();
}
onBackWordAudioUploadSuccess(e, idx) {
this.item.wordList[idx].backWordAudio = e.url;
this.save(); this.save();
} }
...@@ -97,7 +86,6 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -97,7 +86,6 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
*/ */
save() { save() {
(<any>window).courseware.setData(this.item, null, this.saveKey); (<any>window).courseware.setData(this.item, null, this.saveKey);
this.refresh(); this.refresh();
console.log('this.item = ' + JSON.stringify(this.item)); console.log('this.item = ' + JSON.stringify(this.item));
} }
......
{ {"ver":"1.1.2","uuid":"c35bb2f6-f24a-4850-ae44-643f2fdc7541","isBundle":false,"bundleName":"","priority":1,"compressionType":{},"optimizeHotUpdate":{},"inlineSpriteFrames":{},"isRemoteBundle":{"ios":false,"android":false},"subMetas":{}}
"ver": "1.1.2", \ No newline at end of file
"uuid": "c35bb2f6-f24a-4850-ae44-643f2fdc7541",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
{ {
"ver": "2.0.1", "ver": "2.0.1",
"uuid": "f0680ae0-c079-45ef-abd7-9e63d90b982b", "uuid": "9d027405-7058-4f74-be5b-0326be5edad4",
"downloadMode": 0, "downloadMode": 0,
"duration": 0.130612, "duration": 0.130612,
"subMetas": {} "subMetas": {}
......
{
"ver": "2.0.1",
"uuid": "e736fa7c-759d-453d-874f-f63005132da5",
"downloadMode": 0,
"duration": 0.229333,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "fe4bf0f9-3e28-47c6-87c6-633340cee6bf",
"downloadMode": 0,
"duration": 1.854694,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "5eaa6a2a-5291-4b07-ac9e-7156f3252b00",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "1fefcb3d-2443-443a-b58f-1301f013965c",
"downloadMode": 0,
"duration": 0.375833,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "1219a144-5601-4623-b5dd-2f1d9a56a32f",
"downloadMode": 0,
"duration": 0.532333,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "888ad5a3-8ec9-486f-aa05-234bb7124592",
"downloadMode": 0,
"duration": 0.428,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "946b0364-a100-471c-a736-35be588ccded",
"downloadMode": 0,
"duration": 0.323667,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "96cb4901-0e14-4261-af21-846e7532ce1f",
"downloadMode": 0,
"duration": 0.428,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "0d853882-7ed4-44c5-bddc-a86a90096c43",
"downloadMode": 0,
"duration": 0.688833,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "20c0ca53-a3c8-4ee8-959f-1438d8e36462",
"downloadMode": 0,
"duration": 0.297583,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "a28cc1de-da30-4b06-9a88-8fd4c29702f9",
"downloadMode": 0,
"duration": 0.34975,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "6d2cbd66-05ea-4528-82b6-e107e76af2f0",
"downloadMode": 0,
"duration": 0.323667,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "13886100-6436-4498-8717-a1b138f9ffb4",
"downloadMode": 0,
"duration": 0.454083,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "5ea0e7ae-3b15-45ee-a255-775d21139fee",
"downloadMode": 0,
"duration": 0.428,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "6300e084-770d-442e-a60b-b09177c80cca",
"downloadMode": 0,
"duration": 0.50625,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "4f067478-7249-4d76-a64a-59b4a27418a6",
"downloadMode": 0,
"duration": 0.428,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "6e384f34-295c-446b-ba97-534669602876",
"downloadMode": 0,
"duration": 0.5845,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "c5070f0a-85ab-4492-a66d-a5dcff0df614",
"downloadMode": 0,
"duration": 0.2715,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "87b1ac22-58d4-423a-89db-8489648bbcaf",
"downloadMode": 0,
"duration": 0.2715,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "c1fbf3c9-c6a6-4e2a-b4f0-f35614918567",
"downloadMode": 0,
"duration": 0.34975,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "cd0b536a-5b28-44e4-b613-2b432138b71d",
"downloadMode": 0,
"duration": 0.5845,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "378ec7d4-84b1-4e15-a851-2f503be930ad",
"downloadMode": 0,
"duration": 0.688833,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "d4db60ba-9b41-4b2f-9c2f-363942d61d2e",
"downloadMode": 0,
"duration": 0.167167,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "183abc68-1341-4bdd-8da9-0ec133a3d745",
"downloadMode": 0,
"duration": 0.375833,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "c640d65e-aecd-40bd-8bee-9bd8ff40dfcb",
"downloadMode": 0,
"duration": 0.428,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "82e72153-2af4-4b33-b10a-b3c905319463",
"downloadMode": 0,
"duration": 0.428,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "7b784761-5425-4a44-8c6e-c2441bb41ed4",
"downloadMode": 0,
"duration": 0.401917,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "54ce478c-ec74-4387-8834-2dcdd4a1070d",
"downloadMode": 0,
"duration": 0.34975,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "e6417643-4f95-4dae-8abe-f2afa627e7a4",
"downloadMode": 0,
"duration": 0.428,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "ce04f50a-48f4-4c9f-ba08-703831fe7bfe",
"downloadMode": 0,
"duration": 0.30325,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "8a1d88aa-fbe1-497d-99ee-5b6712faab50",
"downloadMode": 0,
"duration": 0.9664,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "ca9942f1-5d5d-4662-94cf-d4f0c66c89a2",
"downloadMode": 0,
"duration": 2.2465,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "d318534e-0a5a-4309-9400-21d1eda8f639",
"downloadMode": 0,
"duration": 0.365714,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "82b9cd3f-eb72-486d-afd1-989b6a4ff131",
"downloadMode": 0,
"duration": 2.35102,
"subMetas": {}
}
\ No newline at end of file
{"frameRate":24,"isGlobal":0,"armature":[{"ik":[],"defaultActions":[{"gotoAndPlay":"newAnimation"}],"type":"Armature","bone":[{"name":"root","transform":{}},{"length":41,"transform":{"scX":0.1,"scY":0.1,"skX":-89.6569,"skY":-89.6569},"parent":"root","name":"圆"},{"transform":{"scX":2,"y":-31.5107,"scY":2,"x":0.1442},"name":"星6","parent":"root"},{"transform":{"scX":2,"y":-39.776,"scY":2,"skX":135,"skY":135,"x":41.1298},"name":"星8","parent":"root"},{"transform":{"scX":2,"y":-4.3335,"scY":2,"x":24.7785},"name":"星3","parent":"root"},{"transform":{"scX":2,"y":-25.5917,"scY":2,"x":24.8087},"name":"星2","parent":"root"},{"transform":{"scX":2,"y":8.8215,"scY":2,"x":7.0488},"name":"星4","parent":"root"},{"transform":{"scX":2,"y":5.3537,"scY":2,"skX":-135,"skY":-135,"x":-20.4814},"name":"星7","parent":"root"},{"transform":{"scX":2,"y":-13.9017,"scY":2,"skX":-45,"skY":-45,"x":-33.2434},"name":"星9","parent":"root"},{"transform":{"scX":2,"y":-17.612,"scY":2,"skX":180,"skY":180,"x":-18.8442},"name":"星1","parent":"root"},{"transform":{"scX":1.7,"y":-38.5822,"scY":1.7,"skX":32.5617,"skY":32.5617,"x":23.0639},"name":"星61","parent":"root"},{"transform":{"scX":1.8,"y":-5.783,"scY":1.8,"skX":17.0044,"skY":17.0044,"x":3.6733},"name":"星31","parent":"root"},{"transform":{"scX":2,"y":-9.1509,"scY":2,"skX":-14.3406,"skY":-14.3406,"x":0.7025},"name":"星11","parent":"root"},{"transform":{"scX":1.6,"y":16.0506,"scY":1.6,"skX":136.3452,"skY":136.3452,"x":-2.2132},"name":"星71","parent":"root"},{"transform":{"scX":2,"y":-7.9725,"scY":2,"skX":73.3148,"skY":73.3148,"x":-18.9634},"name":"星72","parent":"root"},{"transform":{"scX":1.8,"y":26.0182,"scY":1.8,"skX":-87.3096,"skY":-87.3096,"x":-8.6825},"name":"星711","parent":"root"}],"aabb":{"width":112.01022147279946,"y":-71.23421466668495,"height":125.05613740614211,"x":-53},"slot":[{"color":{},"name":"圆","parent":"圆"},{"z":1,"color":{},"name":"星1","parent":"星1"},{"z":2,"color":{},"name":"星2","parent":"星2"},{"z":3,"color":{},"name":"星3","parent":"星3"},{"z":4,"color":{},"name":"星4","parent":"星4"},{"z":5,"color":{},"name":"星6","parent":"星6"},{"z":6,"color":{},"name":"星7","parent":"星7","displayIndex":1},{"z":7,"color":{},"name":"星8","parent":"星8"},{"z":8,"color":{},"name":"星9","parent":"星9"},{"z":9,"color":{},"name":"星61","parent":"星61"},{"z":10,"color":{},"name":"星31","parent":"星31"},{"z":11,"color":{},"name":"星11","parent":"星11"},{"z":12,"color":{},"name":"星71","parent":"星71","displayIndex":1},{"z":13,"color":{},"name":"星72","parent":"星72","displayIndex":1},{"z":14,"color":{},"name":"星711","parent":"星711","displayIndex":1}],"animation":[{"ik":[],"duration":26,"frame":[],"bone":[{"rotateFrame":[],"name":"root","translateFrame":[],"scaleFrame":[]},{"rotateFrame":[],"name":"圆","translateFrame":[],"scaleFrame":[{"duration":4,"tweenEasing":0},{"duration":22,"y":10,"x":10}]},{"rotateFrame":[{"duration":4,"curve":[0,0,0.5,1]},{"duration":22,"rotate":42.9161}],"name":"星6","translateFrame":[{"duration":4,"curve":[0,0,0.5,1]},{"duration":3,"y":-60.5579,"tweenEasing":0,"x":38.3058},{"duration":19,"y":-89.2535,"x":38.3058}],"scaleFrame":[{"duration":4},{"duration":14,"tweenEasing":0},{"duration":8,"y":0.6,"x":0.6}]},{"rotateFrame":[{"duration":4,"tweenEasing":0},{"duration":22,"rotate":-280.7822}],"name":"星8","translateFrame":[{"duration":4,"tweenEasing":0},{"duration":22,"y":-16.9062,"x":65.1904}],"scaleFrame":[]},{"rotateFrame":[{"duration":4,"tweenEasing":0},{"duration":22,"rotate":74.0647}],"name":"星3","translateFrame":[{"duration":4,"tweenEasing":0},{"duration":22,"y":38.7037,"x":77.9671}],"scaleFrame":[{"duration":4},{"duration":14,"tweenEasing":0},{"duration":8,"y":0.7,"x":0.7}]},{"rotateFrame":[{"duration":4,"curve":[0,0,0.5,1]},{"duration":22,"rotate":104.5284}],"name":"星2","translateFrame":[{"duration":4,"curve":[0,0,0.5,1]},{"duration":22,"y":22.5,"x":73.3471}],"scaleFrame":[{"duration":4},{"duration":20,"tweenEasing":0},{"duration":2,"y":0.9,"x":0.9}]},{"rotateFrame":[{"duration":4,"curve":[0,0,0.5,1]},{"duration":22,"rotate":-117.9757}],"name":"星4","translateFrame":[{"duration":4,"curve":[0,0,0.5,1]},{"duration":22,"y":98.3431,"x":61.4575}],"scaleFrame":[]},{"rotateFrame":[{"duration":4,"tweenEasing":0},{"duration":22,"rotate":88.876}],"name":"星7","translateFrame":[{"duration":4,"tweenEasing":0},{"duration":22,"y":81.3916,"x":-57.0486}],"scaleFrame":[{"duration":4},{"duration":20,"tweenEasing":0},{"duration":2,"y":0.6,"x":0.6}]},{"rotateFrame":[{"duration":4,"curve":[0,0,0.5,1],"rotate":45},{"duration":22}],"name":"星9","translateFrame":[{"duration":4,"curve":[0,0,0.5,1]},{"duration":22,"y":-21.9835,"x":-71.6637}],"scaleFrame":[{"duration":4},{"duration":16,"tweenEasing":0},{"duration":6,"y":0.9,"x":0.9}]},{"rotateFrame":[{"duration":4,"curve":[0,0,0.5,1]},{"duration":22,"rotate":-285.7677}],"name":"星1","translateFrame":[{"duration":4,"curve":[0,0,0.5,1]},{"duration":22,"y":-72.3329,"x":-49.7215}],"scaleFrame":[{"duration":4},{"duration":18,"tweenEasing":0},{"duration":4,"y":0.6,"x":0.6}]},{"rotateFrame":[{"duration":7,"curve":[0,0,0.5,1]},{"duration":19,"rotate":42.9161}],"name":"星61","translateFrame":[{"duration":7,"curve":[0,0,0.5,1]},{"duration":19,"y":-84.797,"x":83.4688}],"scaleFrame":[{"duration":7},{"duration":11,"tweenEasing":0},{"duration":8,"y":0.6,"x":0.6}]},{"rotateFrame":[{"duration":7,"tweenEasing":0},{"duration":19,"rotate":74.0647}],"name":"星31","translateFrame":[{"duration":7,"tweenEasing":0},{"duration":19,"y":-25.1106,"x":81.2468}],"scaleFrame":[{"duration":7},{"duration":11,"tweenEasing":0},{"duration":8,"y":0.7,"x":0.7}]},{"rotateFrame":[{"duration":7,"curve":[0,0,0.5,1]},{"duration":19,"rotate":73.2489}],"name":"星11","translateFrame":[{"duration":7,"curve":[0,0,0.5,1]},{"duration":19,"y":-85.5193,"x":-17.132}],"scaleFrame":[{"duration":7},{"duration":15,"tweenEasing":0},{"duration":4,"y":0.6,"x":0.6}]},{"rotateFrame":[{"duration":7,"tweenEasing":0},{"duration":19,"rotate":88.876}],"name":"星71","translateFrame":[{"duration":7,"tweenEasing":0},{"duration":19,"y":93.2033,"x":-35.332}],"scaleFrame":[{"duration":7},{"duration":17,"tweenEasing":0},{"duration":2,"y":0.6,"x":0.6}]},{"rotateFrame":[{"duration":7,"tweenEasing":0},{"duration":19,"rotate":88.876}],"name":"星72","translateFrame":[{"duration":7,"tweenEasing":0},{"duration":19,"y":22.0384,"x":-87.0726}],"scaleFrame":[{"duration":7},{"duration":17,"tweenEasing":0},{"duration":2,"y":0.6,"x":0.6}]},{"rotateFrame":[{"duration":7,"tweenEasing":0},{"duration":19,"rotate":88.876}],"name":"星711","translateFrame":[{"duration":7,"tweenEasing":0},{"duration":19,"y":59.8038,"x":32.2728}],"scaleFrame":[{"duration":7},{"duration":17,"tweenEasing":0},{"duration":2,"y":0.6,"x":0.6}]}],"slot":[{"colorFrame":[{"duration":4},{"duration":8,"tweenEasing":0},{"duration":14,"color":{"aM":0}}],"displayFrame":[],"name":"圆"},{"colorFrame":[{"duration":4},{"duration":18,"tweenEasing":0},{"duration":4,"color":{"aM":0}}],"displayFrame":[],"name":"星1"},{"colorFrame":[{"duration":4},{"duration":20,"tweenEasing":0},{"duration":2,"color":{"aM":0}}],"displayFrame":[],"name":"星2"},{"colorFrame":[{"duration":4},{"duration":14,"tweenEasing":0},{"duration":8,"color":{"aM":0}}],"displayFrame":[],"name":"星3"},{"colorFrame":[{"duration":4},{"duration":22,"tweenEasing":0},{"duration":0,"color":{"aM":0}}],"displayFrame":[],"name":"星4"},{"colorFrame":[{"duration":4},{"duration":14,"tweenEasing":0},{"duration":8,"color":{"aM":0}}],"displayFrame":[],"name":"星6"},{"colorFrame":[{"duration":4},{"duration":20,"tweenEasing":0},{"duration":2,"color":{"aM":0}}],"displayFrame":[],"name":"星7"},{"colorFrame":[{"duration":4},{"duration":18,"tweenEasing":0},{"duration":4,"color":{"aM":0}}],"displayFrame":[],"name":"星8"},{"colorFrame":[{"duration":4},{"duration":16,"tweenEasing":0},{"duration":6,"color":{"aM":0}}],"displayFrame":[],"name":"星9"},{"colorFrame":[{"duration":7},{"duration":11,"tweenEasing":0},{"duration":8,"color":{"aM":0}}],"displayFrame":[],"name":"星61"},{"colorFrame":[{"duration":7},{"duration":11,"tweenEasing":0},{"duration":8,"color":{"aM":0}}],"displayFrame":[],"name":"星31"},{"colorFrame":[{"duration":7},{"duration":15,"tweenEasing":0},{"duration":4,"color":{"aM":0}}],"displayFrame":[],"name":"星11"},{"colorFrame":[{"duration":7},{"duration":17,"tweenEasing":0},{"duration":2,"color":{"aM":0}}],"displayFrame":[],"name":"星71"},{"colorFrame":[{"duration":7},{"duration":17,"tweenEasing":0},{"duration":2,"color":{"aM":0}}],"displayFrame":[],"name":"星72"},{"colorFrame":[{"duration":7},{"duration":17,"tweenEasing":0},{"duration":2,"color":{"aM":0}}],"displayFrame":[],"name":"星711"}],"ffd":[],"playTimes":0,"name":"newAnimation"}],"name":"Armature","frameRate":24,"skin":[{"name":"","slot":[{"display":[{"path":"1/星7","type":"image","name":"1/星7","transform":{"y":13.4704,"skX":135,"skY":135,"x":-51.937}},{"path":"1/星5","type":"image","name":"1/星5","transform":{"y":0.0354,"skX":135,"skY":135,"x":0.3889}}],"name":"星711"},{"display":[{"path":"1/星8","type":"image","name":"1/星8","transform":{"y":-0.495,"skX":-135,"skY":-135,"x":0.0707}}],"name":"星8"},{"display":[{"path":"1/星6","type":"image","name":"1/星6","transform":{"y":0.3,"x":1.55}}],"name":"星61"},{"display":[{"path":"1/星2","type":"image","name":"1/星2","transform":{"y":1.1,"x":0.65}}],"name":"星2"},{"display":[{"path":"1/星1","type":"image","name":"1/星1","transform":{"y":-0.55,"skX":180,"skY":180,"x":-0.65}}],"name":"星11"},{"display":[{"path":"1/星1","type":"image","name":"1/星1","transform":{"y":-0.55,"skX":180,"skY":180,"x":-0.65}}],"name":"星1"},{"display":[{"path":"星","type":"image","name":"1/圆","transform":{"skX":89.6569,"skY":89.6569}}],"name":"圆"},{"display":[{"path":"1/星7","type":"image","name":"1/星7","transform":{"y":13.4704,"skX":135,"skY":135,"x":-51.937}},{"path":"1/星5","type":"image","name":"1/星5","transform":{"y":0.0354,"skX":135,"skY":135,"x":0.3889}}],"name":"星72"},{"display":[{"path":"1/星7","type":"image","name":"1/星7","transform":{"y":13.4704,"skX":135,"skY":135,"x":-51.937}},{"path":"1/星5","type":"image","name":"1/星5","transform":{"y":0.0354,"skX":135,"skY":135,"x":0.3889}}],"name":"星7"},{"display":[{"path":"1/星9","type":"image","name":"1/星9","transform":{"y":0.3889,"skX":45,"skY":45,"x":0.2475}}],"name":"星9"},{"display":[{"path":"1/星3","type":"image","name":"1/星3","transform":{"y":-0.15,"x":0.8}}],"name":"星31"},{"display":[{"path":"1/星3","type":"image","name":"1/星3","transform":{"y":-0.15,"x":0.8}}],"name":"星3"},{"display":[{"path":"1/星7","type":"image","name":"1/星7","transform":{"y":13.4704,"skX":135,"skY":135,"x":-51.937}},{"path":"1/星5","type":"image","name":"1/星5","transform":{"y":0.0354,"skX":135,"skY":135,"x":0.3889}}],"name":"星71"},{"display":[{"path":"1/星4","type":"image","name":"1/星4","transform":{"y":0.1,"x":1.1}}],"name":"星4"},{"display":[{"path":"1/星6","type":"image","name":"1/星6","transform":{"y":0.3,"skX":0.1937,"skY":0.1937,"x":1.55}}],"name":"星6"}]}]}],"name":"正确效果","version":"5.5"}
\ No newline at end of file
{
"ver": "1.0.1",
"uuid": "f51b45e4-1a1d-43eb-b63d-9614c17de731",
"subMetas": {}
}
\ No newline at end of file
{"width":256,"SubTexture":[{"width":106,"y":1,"height":104,"name":"星","x":1},{"width":57,"y":67,"height":59,"name":"1/星1","x":179},{"width":43,"y":107,"height":45,"name":"1/星2","x":1},{"width":63,"y":1,"height":64,"name":"1/星3","x":179},{"width":45,"y":128,"height":45,"name":"1/星4","x":167},{"width":68,"y":1,"height":69,"name":"1/星6","x":109},{"width":37,"y":128,"height":40,"name":"1/星7","x":214},{"width":56,"y":72,"height":57,"name":"1/星5","x":109},{"width":32,"y":107,"height":33,"name":"1/星8","x":46},{"width":36,"y":170,"height":37,"name":"1/星9","x":214}],"height":256,"name":"正确效果","imagePath":"正确效果_tex.png"}
\ No newline at end of file
{
"ver": "1.0.1",
"uuid": "ac3ab2af-1ea5-4ff3-8e24-d401777f807a",
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "9ea21947-2ffb-456c-9f64-93d66c295dec",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 256,
"height": 256,
"platformSettings": {},
"subMetas": {
"正确效果_tex": {
"ver": "1.0.4",
"uuid": "6cec3366-f109-498a-a0eb-0c577385d667",
"rawTextureUuid": "9ea21947-2ffb-456c-9f64-93d66c295dec",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -2,
"offsetY": 24,
"trimX": 1,
"trimY": 1,
"width": 250,
"height": 206,
"rawWidth": 256,
"rawHeight": 256,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{ {
"ver": "1.1.0", "ver": "1.1.0",
"uuid": "c551970e-b095-45f3-9f1d-25cde8b8deb1", "uuid": "f6f4bb21-6533-4562-8e7e-0b5ed54f2290",
"subMetas": {} "subMetas": {}
} }
\ No newline at end of file
{
"ver": "1.1.0",
"uuid": "407c61c3-c5e1-4946-8cfd-43aa5d1fc923",
"subMetas": {}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{ {
"ver": "1.2.9", "ver": "1.2.9",
"uuid": "57ea7c61-9b8b-498a-b024-c98ee9124beb", "uuid": "693eb20e-8b2b-40ca-aca5-9f087d6936ac",
"asyncLoadAssets": false, "asyncLoadAssets": false,
"autoReleaseAssets": true, "autoReleaseAssets": true,
"subMetas": {} "subMetas": {}
......
import { onHomeworkFinish } from "../script/util";
import { defaultData } from "../script/defaultData"; import { defaultData } from "../script/defaultData";
import { letterData, letterWidthData } from "../script/letterPointData";
import {
asyncDelay,
asyncPlayDragonBoneAnimation,
asyncPlayEffectByUrl,
asyncTweenTo,
jelly,
RandomInt,
showFireworks
} from "../script/utils";
cc.Class({ cc.Class({
extends: cc.Component, extends: cc.Component,
properties: { properties: {
audio_btn: cc.AudioClip,
audio_cloud: cc.AudioClip,
audio_income: cc.AudioClip,
audio_press: cc.AudioClip,
audio_star: cc.AudioClip,
audio_write: cc.AudioClip,
audio_zoom: cc.AudioClip,
audio_title: cc.AudioClip,
audio_a: cc.AudioClip,
audio_b: cc.AudioClip,
audio_c: cc.AudioClip,
audio_d: cc.AudioClip,
audio_e: cc.AudioClip,
audio_f: cc.AudioClip,
audio_g: cc.AudioClip,
audio_h: cc.AudioClip,
audio_i: cc.AudioClip,
audio_j: cc.AudioClip,
audio_k: cc.AudioClip,
audio_l: cc.AudioClip,
audio_m: cc.AudioClip,
audio_n: cc.AudioClip,
audio_o: cc.AudioClip,
audio_p: cc.AudioClip,
audio_q: cc.AudioClip,
audio_r: cc.AudioClip,
audio_s: cc.AudioClip,
audio_t: cc.AudioClip,
audio_u: cc.AudioClip,
audio_v: cc.AudioClip,
audio_w: cc.AudioClip,
audio_x: cc.AudioClip,
audio_y: cc.AudioClip,
audio_z: cc.AudioClip,
}, },
// 生命周期 onLoad // 生命周期 onLoad
...@@ -29,6 +71,7 @@ cc.Class({ ...@@ -29,6 +71,7 @@ cc.Class({
_mapScaleMax: null, // 场景中常用缩放(取小值) _mapScaleMax: null, // 场景中常用缩放(取小值)
_cocosScale: null, // cocos 自缩放 (较少用到) _cocosScale: null, // cocos 自缩放 (较少用到)
initSize() { initSize() {
// 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小 // 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小
let screen_size = cc.view.getFrameSize().width / cc.view.getFrameSize().height let screen_size = cc.view.getFrameSize().width / cc.view.getFrameSize().height
let design_size = cc.Canvas.instance.designResolution.width / cc.Canvas.instance.designResolution.height let design_size = cc.Canvas.instance.designResolution.width / cc.Canvas.instance.designResolution.height
...@@ -51,7 +94,6 @@ cc.Class({ ...@@ -51,7 +94,6 @@ cc.Class({
this._mapScaleMax = Math.max(sx, sy) * this._cocosScale; this._mapScaleMax = Math.max(sx, sy) * this._cocosScale;
}, },
// 生命周期 start // 生命周期 start
start() { start() {
let getData = this.getData.bind(this); let getData = this.getData.bind(this);
...@@ -67,20 +109,8 @@ cc.Class({ ...@@ -67,20 +109,8 @@ cc.Class({
}) })
}, },
getData(func) { getData(cb) {
if (window && window.courseware) { cb(this.getDefaultData());
window.courseware.getData(func, 'scene');
return;
}
const middleLayer = cc.find('middleLayer');
if (middleLayer) {
const middleLayerComponent = middleLayer.getComponent('middleLayer');
middleLayerComponent.getData(func);
return;
}
func(this.getDefaultData());
}, },
getDefaultData() { getDefaultData() {
...@@ -94,16 +124,12 @@ cc.Class({ ...@@ -94,16 +124,12 @@ cc.Class({
this.preload(); this.preload();
}, },
addPreloadImage() { addPreloadImage() {
// this._imageResList.push({ url: this.data.pic_url });
this._imageResList.push({ url: this.data.pic_url });
this._imageResList.push({ url: this.data.pic_url_2 });
}, },
addPreloadAudio() { addPreloadAudio() {
this._audioResList.push({ url: this.data.titleAudio });
this._audioResList.push({ url: this.data.audio_url });
}, },
addPreloadAnima() { addPreloadAnima() {
...@@ -116,251 +142,765 @@ cc.Class({ ...@@ -116,251 +142,765 @@ cc.Class({
cc.assetManager.loadAny(preloadArr, null, null, (err, data) => { cc.assetManager.loadAny(preloadArr, null, null, (err, data) => {
this.loadEnd(); this.loadEnd();
if (window && window["air"]) {
window["air"].hideAirClassLoading();
}
cc.debug.setDisplayStats(false); cc.debug.setDisplayStats(false);
}); });
}, },
loadEnd() { loadEnd() {
this.initData(); this.initData();
this.initAudio(); this.initAudio();
this.initView(); this.initView();
// this.initListener(); this.initListener();
if (window && window["air"]) {
window["air"].hideAirClassLoading();
}
}, },
_cantouch: null,
initData() { initData() {
// 所有全局变量 默认都是null this._status = {
this._cantouch = true; currentLetterIdx: 0,
currentLetter: this.data.letterList[0]
}
}, },
audioBtn: null,
initAudio() { initAudio() {
const audioNode = cc.find('Canvas/res/audio');
const getAudioByResName = (resName) => { },
return audioNode.getChildByName(resName).getComponent(cc.AudioSource);
} initView() {
this.createLetterPage(this._status.currentLetter);
this.initTitle();
cc.find('Canvas').on('size-changed', this.onSizeChanged.bind(this));
this.refreshBtnStatus();
this.audioBtn = getAudioByResName('btn'); cc.audioEngine.play(this.audio_income, false, 1);
if (this.data.debugMode) {
this.initDebugMode();
}
}, },
initTitle() {
const titleRichText = cc.find('Canvas/UIBase/Title/RichText');
titleRichText.getComponent(cc.RichText).string = `<outline color=#d55b75 width=2>${this.data.titleTxt}</outline>`;
if (titleRichText.width > 340) {
titleRichText.scale = 340 / titleRichText.width;
}
},
initView() { onSizeChanged() {
cc.director.loadScene(cc.director.getScene().name);
// this.node.getComponent(cc.Widget).updateAlignment();
// const frameSize = cc.view.getFrameSize();
// const designSize = cc.view.getDesignResolutionSize();
// const scale = (designSize.width / designSize.height) / (frameSize.width / frameSize.height);
// const letterBg = cc.find('Canvas/bg/LetterLayer');
// letterBg.scale = Math.min(scale, 1);
},
async initDebugMode() {
const debugBase = cc.find('Canvas/UIBase/DebugBase');
debugBase.active = true;
const drawBaseComponent = debugBase.getComponent('DebugDrawBase');
drawBaseComponent.letter = this._status.currentLetter;
await asyncDelay(0.01);
drawBaseComponent.setDrawNode(cc.find('Canvas/bg/LetterLayer/DrawBase/DrawNode'));
},
this.initBg(); initListener() {
this.initPic(); const title = cc.find('Canvas/UIBase/Title');
this.initBtn(); title.on('click', async () => {
this.initIcon(); if (title.cannottClick) {
}, return;
}
initBg() { title.cannottClick = true;
const bgNode = cc.find('Canvas/bg'); // jelly(title, 0.05);
bgNode.scale = this._mapScaleMax; await asyncPlayEffectByUrl(this.data.titleAudio);
}, title.cannottClick = false;
pic1: null,
pic2: null,
initPic() {
const canvas = cc.find('Canvas');
const maxW = canvas.width * 0.7;
this.getSprNodeByUrl(this.data.pic_url, (sprNode) => {
const picNode1 = sprNode;
picNode1.scale = maxW / picNode1.width;
picNode1.baseX = picNode1.x;
canvas.addChild(picNode1);
this.pic1 = picNode1;
const labelNode = new cc.Node();
labelNode.color = cc.Color.YELLOW;
const label = labelNode.addComponent(cc.Label);
label.string = this.data.text;
label.fontSize = 60;
label.lineHeight = 60;
label.font = cc.find('Canvas/res/font/BRLNSDB').getComponent('cc.Label').font;
picNode1.addChild(labelNode);
}); });
this.getSprNodeByUrl(this.data.pic_url_2, (sprNode) => { const BtnSpeaker = cc.find('Canvas/UIBase/BtnSpeaker');
const picNode2 = sprNode; BtnSpeaker.on('click', async () => {
picNode2.scale = maxW / picNode2.width; if (BtnSpeaker.cannottClick) {
canvas.addChild(picNode2); return;
picNode2.x = canvas.width; }
picNode2.baseX = picNode2.x; BtnSpeaker.cannottClick = true;
this.pic2 = picNode2; jelly(BtnSpeaker);
this.speakerBlink();
const labelNode = new cc.Node(); const letterAudio = this[`audio_${this._status.currentLetter.toLowerCase()}`];
const label = labelNode.addComponent(cc.RichText); const audioId = cc.audioEngine.play(letterAudio, false, 1);
const size = 60 cc.audioEngine.setFinishCallback(audioId, () => {
label.font = cc.find('Canvas/res/font/BRLNSDB').getComponent(cc.Label).font; this.speakerStopBlink();
label.string = `<outline color=#751e00 width=4><size=${size}><color=#ffffff>${this.data.text}</color></size></outline>` BtnSpeaker.cannottClick = false;
label.lineHeight = size; });
picNode2.addChild(labelNode);
}); });
const BtnSwitchUpper = cc.find('Canvas/UIBase/BtnSwitchUpper');
const BtnSwitchLower = cc.find('Canvas/UIBase/BtnSwitchLower');
BtnSwitchUpper.on('click', () => {
const letter = this._status.currentLetter.toUpperCase();
this._status.currentLetter = letter;
this.createLetterPage(letter);
this.refreshBtnStatus();
});
BtnSwitchLower.on('click', () => {
const letter = this._status.currentLetter.toLowerCase();
this._status.currentLetter = letter;
this.createLetterPage(letter);
this.refreshBtnStatus();
});
const BtnBefore = cc.find('Canvas/UIBase/BtnBefore');
const BtnNext = cc.find('Canvas/UIBase/BtnNext');
BtnBefore.on('click', async () => {
if (BtnBefore.cannottClick) {
return;
}
BtnBefore.cannottClick = true;
this._status.currentLetterIdx--;
const letter = this.data.letterList[this._status.currentLetterIdx];
this._status.currentLetter = letter;
this.createLetterPage(letter);
await jelly(BtnBefore);
this.refreshBtnStatus();
BtnBefore.cannottClick = false;
});
BtnNext.on('click', async () => {
if (BtnNext.cannottClick) {
return;
}
BtnNext.cannottClick = true;
this._status.currentLetterIdx++;
const letter = this.data.letterList[this._status.currentLetterIdx];
this._status.currentLetter = letter;
this.createLetterPage(letter);
await jelly(BtnNext);
this.refreshBtnStatus();
BtnNext.cannottClick = false;
});
const BtnRefresh = cc.find('Canvas/UIBase/BtnRefresh');
BtnRefresh.on('click', () => {
jelly(BtnRefresh);
this.createLetterPage(this._status.currentLetter);
});
},
refreshBtnStatus() {
const BtnBefore = cc.find('Canvas/UIBase/BtnBefore');
const BtnNext = cc.find('Canvas/UIBase/BtnNext');
BtnBefore.active = true;
BtnNext.active = true;
if (this._status.currentLetterIdx == this.data.letterList.length - 1) {
BtnNext.active = false;
}
if (this._status.currentLetterIdx == 0) {
BtnBefore.active = false;
}
const BtnSwitchUpper = cc.find('Canvas/UIBase/BtnSwitchUpper');
const BtnSwitchLower = cc.find('Canvas/UIBase/BtnSwitchLower');
if (this._status.currentLetter == this._status.currentLetter.toUpperCase()) {
BtnSwitchUpper.active = false;
BtnSwitchLower.active = true;
} else {
BtnSwitchUpper.active = true;
BtnSwitchLower.active = false;
}
}, },
initIcon() { createLetterPage(letter) {
const iconNode = this.getSprNode('icon'); const oldLetterLayer = cc.find('Canvas/bg/LetterLayer');
iconNode.zIndex = 5; if (oldLetterLayer) {
iconNode.anchorX = 1; this.oldLetterPageFlyout(oldLetterLayer);
iconNode.anchorY = 1; }
iconNode.parent = cc.find('Canvas'); const newLetterLayer = cc.instantiate(cc.find(`LetterLayer`));
iconNode.x = iconNode.parent.width / 2 - 10; newLetterLayer.x = 0;
iconNode.y = iconNode.parent.height / 2 - 10; newLetterLayer.y = 0;
newLetterLayer.parent = cc.find('Canvas/bg');
iconNode.on(cc.Node.EventType.TOUCH_START, () => { const bgSpriteFrameList = cc.find('Bgs').children.map(node => {
this.playAudioByUrl(this.data.audio_url); return node.getComponent(cc.Sprite).spriteFrame
}) });
const bg = newLetterLayer.getChildByName('bg');
bg.getComponent(cc.Sprite).spriteFrame = bgSpriteFrameList[RandomInt(bgSpriteFrameList.length)];
bg.width = bg.parent.width;
const drawBase = newLetterLayer.getChildByName('DrawBase');
drawBase.getComponent(cc.Mask).spriteFrame = this.getLetterSpriteFrame(letter);
cc.find('Canvas/UIBase/BtnSwitchLower/LabelBigShader').getComponent(cc.Label).string = letter.toUpperCase();
cc.find('Canvas/UIBase/BtnSwitchLower/LabelBigShader/Label').getComponent(cc.Label).string = letter.toUpperCase();
cc.find('Canvas/UIBase/BtnSwitchLower/LabelSmallShader').getComponent(cc.Label).string = letter.toLowerCase();
cc.find('Canvas/UIBase/BtnSwitchLower/LabelSmallShader/Label').getComponent(cc.Label).string = letter.toLowerCase();
cc.find('Canvas/UIBase/BtnSwitchUpper/LabelBigShader').getComponent(cc.Label).string = letter.toUpperCase();
cc.find('Canvas/UIBase/BtnSwitchUpper/LabelBigShader/Label').getComponent(cc.Label).string = letter.toUpperCase();
cc.find('Canvas/UIBase/BtnSwitchUpper/LabelSmallShader').getComponent(cc.Label).string = letter.toLowerCase();
cc.find('Canvas/UIBase/BtnSwitchUpper/LabelSmallShader/Label').getComponent(cc.Label).string = letter.toLowerCase();
const monkey = cc.find('bg/bg_change', newLetterLayer);
monkey.scale = monkey.parent.width / monkey.width;
monkey.x = 0;
monkey.y = 15 * monkey.scale - monkey.parent.height / 2;
if (this.data.debugMode) {
console.log('initDebugMode');
this.initDebugMode();
} else {
this.createShark();
this.createArrows();
this.createStar();
}
}, },
curPage: null, getLetterSpriteFrame(letter) {
initBtn() { if (letter == letter.toUpperCase()) {
return cc.find(`Letters/${letter}_big`).getComponent(cc.Sprite).spriteFrame;
}
return cc.find(`Letters/${letter.toUpperCase()}_small`).getComponent(cc.Sprite).spriteFrame;
},
async oldLetterPageFlyout(oldLetterLayer) {
oldLetterLayer.zIndex = 1;
oldLetterLayer.name = 'oldLetterLayer';
this.curPage = 0; oldLetterLayer.getComponent(cc.Widget).enabled = false;
const bottomPart = cc.find('Canvas/bottomPart');
bottomPart.zIndex = 5; // 提高层级
bottomPart.x = bottomPart.parent.width / 2; await asyncTweenTo(oldLetterLayer, 6, { y: 4000 });
bottomPart.y = -bottomPart.parent.height / 2; },
const leftBtnNode = bottomPart.getChildByName('btn_left'); createShark() {
//节点中添加了button组件 则可以添加click事件监听 const letter = this._status.currentLetter;
leftBtnNode.on('click', () => { if (!letterData[letter][0]) {
if (!this._cantouch) {
return; return;
} }
if (this.curPage == 0) { let shark = cc.instantiate(cc.find('Icons/shark'));
return; if (letter == letter.toLowerCase()) {
shark = cc.instantiate(cc.find('Icons/monkey'));
} }
this.curPage = 0 this._status._currentPenIdx = 0;
this.leftMove(); this._status._currentPointIdx = 0;
const sharkData = this.getCurrentSharkData();
shark.x = sharkData.x;
shark.y = sharkData.y;
shark.zIndex = 1;
shark.angle = sharkData.angle;
shark.scaleY = sharkData.scaleY;
shark.parent = cc.find('Canvas/bg/LetterLayer');
shark.off('touchstart', this.onSharkTouchStart.bind(this));
shark.off('touchmove', this.onSharkTouchMove.bind(this));
shark.off('touchend', this.onSharkTouchEnd.bind(this));
shark.off('touchcancel', this.onSharkTouchEnd.bind(this));
shark.on('touchstart', this.onSharkTouchStart.bind(this));
shark.on('touchmove', this.onSharkTouchMove.bind(this));
shark.on('touchend', this.onSharkTouchEnd.bind(this));
shark.on('touchcancel', this.onSharkTouchEnd.bind(this));
},
// 游戏结束时需要调用这个方法通知系统作业完成 onSharkTouchStart(event) {
onHomeworkFinish(); const location = event.getLocation();
const shark = event.target;
const pos = shark.parent.convertToNodeSpaceAR(location);
shark.startPos = cc.v2(pos.x - shark.x, pos.y - shark.y);
shark.lastPos = cc.v2(shark.x, shark.y);
jelly(shark);
cc.audioEngine.play(this.audioBtn.clip, false, 0.8) cc.audioEngine.play(this.audio_press, false, 1);
}) },
const rightBtnNode = bottomPart.getChildByName('btn_right'); onSharkTouchMove(event) {
//节点中添加了button组件 则可以添加click事件监听 const location = event.getLocation();
rightBtnNode.on('click', () => { const shark = event.target;
if (!this._cantouch) { if (!shark.lastPos) {
return; return;
} }
if (this.curPage == 1) {
const pos = shark.parent.convertToNodeSpaceAR(location);
shark.x = pos.x - shark.startPos.x;
shark.y = pos.y - shark.startPos.y;
if (this.checkSharkOutRange(shark)) {
this.onSharkTouchEnd(event);
return; return;
} }
const drawNode = cc.find('Canvas/bg/LetterLayer/DrawBase/DrawNode');
this.drawALine(drawNode, shark.lastPos, cc.v2(shark.x, shark.y), cc.color(253, 227, 148));
this.curPage = 1 shark.lastPos = cc.v2(shark.x, shark.y);
this.rightMove();
cc.audioEngine.play(this.audioBtn.clip, false, 0.5) this.updateCurrentPointIdx(shark);
})
},
leftMove() { this.updateArrows(shark);
this._cantouch = false;
const len = this.pic1.parent.width;
cc.tween(this.pic1)
.to(1, { x: this.pic1.baseX }, { easing: 'cubicInOut' })
.start();
cc.tween(this.pic2) const sharkData = this.getCurrentSharkData();
.to(1, { x: this.pic2.baseX }, { easing: 'cubicInOut' }) if (!sharkData) {
.call(() => { return;
this._cantouch = true; }
})
.start();
},
rightMove() { shark.scaleY = sharkData.scaleY;
this._cantouch = false; if (!shark.angleAction) {
const len = this.pic1.parent.width;
cc.tween(this.pic1)
.to(1, { x: this.pic1.baseX - len }, { easing: 'cubicInOut' })
.start();
cc.tween(this.pic2) let angle = sharkData.angle;
.to(1, { x: this.pic2.baseX - len }, { easing: 'cubicInOut' }) if (sharkData.angle - shark.angle > 180) {
angle -= 360;
}
if (sharkData.angle - shark.angle < - 180) {
angle += 360;
}
shark.angleAction = cc.tween(shark)
.to(0.1, { angle: angle })
.call(() => { .call(() => {
this._cantouch = true; shark.angleAction = null;
}) })
.start(); .start();
}
}, },
// update (dt) {},
onSharkTouchEnd(event) {
const shark = event.target;
shark.lastPos = null;
shark.startPos = null;
this._status._currentPointIdx = 0;
this.updateCurrentGraph(true);
this.moveSharkBack(event.target);
this.showArrows();
},
getCurrentSharkData() {
let angle = 0;
const letter = this._status.currentLetter;
const penIdx = this._status._currentPenIdx;
const pointIdx = this._status._currentPointIdx;
if (!letterData[letter][penIdx]) {
return;
}
const point = letterData[letter][penIdx][pointIdx];
const nextPoint = letterData[letter][penIdx][pointIdx + 1];
if (letter == letter.toUpperCase()) {
if (nextPoint) {
let line = cc.v2(nextPoint.x - point.x, nextPoint.y - point.y);
angle = cc.v2(-1, 0).signAngle(line) * (180 / Math.PI);
}
}
let scaleY = 1;
if (angle > 90 || angle < -90) {
scaleY = -1;
}
return { x: point.x, y: point.y, angle: angle, scaleY: scaleY };
},
updateCurrentPointIdx(shark) {
const pos = cc.v2(shark.x, shark.y);
const letter = this._status.currentLetter;
const penIdx = this._status._currentPenIdx;
const pointIdx = this._status._currentPointIdx;
if (!letterData[letter][penIdx]) {
return;
}
const nextPoint = letterData[letter][penIdx][pointIdx + 1];
if (this.getDistance(shark, nextPoint) < 80) {
this._status._currentPointIdx++;
if (this._status._currentPointIdx >= letterData[letter][penIdx].length - 1) {
this._status._currentPointIdx = 0;
this._status._currentPenIdx++;
shark.lastPos = null;
shark.startPos = null;
this.showFlower(shark);
if (this._status._currentPenIdx < letterData[letter].length) {
this.removeStar();
this.createArrows();
this.createStar();
} else {
this.showOver(shark);
this.createClouds();
this.zoomStar();
this.playLetterAudio();
// this.showFireworks();
}
this.updateCurrentGraph(true);
this.moveSharkBack(shark);
}
}
},
getDistance(pos1, pos2) {
return cc.v2(pos1.x, pos1.y).sub(cc.v2(pos2.x, pos2.y)).mag();
},
checkSharkOutRange(shark) {
const letter = this._status.currentLetter;
const penIdx = this._status._currentPenIdx;
if (!letterData[letter][penIdx]) {
return false;
}
if (!shark.pointList) {
shark.pointList = [];
}
if (!shark.pointList[penIdx]) {
const penPointList = letterData[letter][penIdx].map(pos => cc.v2(pos.x, pos.y));
const debugBase = cc.find('Canvas/UIBase/DebugBase');
const drawBaseComponent = debugBase.getComponent('DebugDrawBase');
const pointList = drawBaseComponent.interpolatePos(penPointList, 10);
shark.pointList[penIdx] = pointList;
}
const pointList = shark.pointList[penIdx];
let result = true;
pointList.forEach(point => {
if (result == false) {
return;
}
const distance = this.getDistance(point, shark);
if (distance < 120) {
result = false;
}
});
return result;
},
showFlower(shark) {
const flower = cc.instantiate(cc.find('Icons/flower'));
flower.x = shark.x;
flower.y = shark.y;
flower.parent = shark.parent;
cc.audioEngine.play(this.audio_star, false, 1);
asyncPlayDragonBoneAnimation(flower, 'newAnimation', 1);
},
showOver(shark) {
this.removeArrows();
shark.removeFromParent();
},
moveSharkBack(shark) {
const letter = this._status.currentLetter;
const penIdx = this._status._currentPenIdx;
if (!letterData[letter][penIdx]) {
return;
}
const sharkData = this.getCurrentSharkData();
cc.tween(shark)
.to(0.1, { x: sharkData.x, y: sharkData.y, angle: sharkData.angle, scaleY: sharkData.scaleY })
.start();
},
updateCurrentGraph(clear = false) {
const letter = this._status.currentLetter;
const penIdx = this._status._currentPenIdx;
const lineList = [];
for (let i = 0; i < penIdx; i++) {
const posList = letterData[letter][i];
for (let idx = 0; idx < posList.length - 1; idx++) {
lineList.push({ startPos: posList[idx], endPos: posList[idx + 1] });
}
}
const drawNode = cc.find('Canvas/bg/LetterLayer/DrawBase/DrawNode');
if (clear) {
const graph = drawNode.getComponent(cc.Graphics);
graph.clear();
}
lineList.forEach(line => {
this.drawALine(drawNode, line.startPos, line.endPos, cc.color(253, 227, 148));
});
},
drawALine(drawNode, fromPos, toPos, color) {
const letter = this._status.currentLetter;
const graph = drawNode.getComponent(cc.Graphics);
if (color) {
graph.strokeColor = color;
}
if (letterWidthData[letter]) {
graph.lineWidth = letterWidthData[letter];
} else {
graph.lineWidth = letterWidthData.defaultWidth;
}
graph.moveTo(fromPos.x, fromPos.y);
graph.lineTo(toPos.x, toPos.y);
graph.stroke();
},
_cloudList: null,
createClouds() {
const letter = this._status.currentLetter;
if (this._cloudList) {
this._cloudList.forEach(cloud => {
cloud.removeFromParent();
});
}
this._cloudList = [];
// ------------------------------------------------ letterData[letter].forEach(pen => {
getSprNode(resName) { const penPointList = pen.map(pos => cc.v2(pos.x, pos.y));
const sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame; const debugBase = cc.find('Canvas/UIBase/DebugBase');
const node = new cc.Node(); const drawBaseComponent = debugBase.getComponent('DebugDrawBase');
node.addComponent(cc.Sprite).spriteFrame = sf; const pointList = drawBaseComponent.interpolatePos(penPointList, 10);
return node;
},
for (let i = 0; i < pointList.length; i++) {
const point = pointList[i];
getSpriteFrimeByUrl(url, cb) { const lastcloud = this._cloudList[this._cloudList.length - 1];
cc.loader.load({ url }, (err, img) => { if (lastcloud && this.getDistance(lastcloud, point) < 60) {
const spriteFrame = new cc.SpriteFrame(img) continue;
if (cb) {
cb(spriteFrame);
} }
})
},
getSprNodeByUrl(url, cb) { const cloud = this.createCloud(point);
const node = new cc.Node(); this._cloudList.push(cloud);
const spr = node.addComponent(cc.Sprite);
this.getSpriteFrimeByUrl(url, (sf) => {
spr.spriteFrame = sf;
if (cb) {
cb(node);
} }
});
const cloudLength = this._cloudList.length;
this._cloudList.forEach((cloud, idx) => {
cloud.opacity = 0;
cc.tween(cloud)
.delay(idx * (3 / cloudLength))
.call(() => {
cc.audioEngine.play(this.audio_cloud, false, 1);
}) })
.to(0.5, { opacity: 255, scale: 1.3 })
.to(0.1, { scale: 1 })
.start();
});
}, },
playAudioByUrl(audio_url, cb = null) { createCloud(pos) {
if (audio_url) { const LetterLayer = cc.find('Canvas/bg/LetterLayer');
cc.assetManager.loadRemote(audio_url, (err, audioClip) => { const arrow = cc.instantiate(cc.find('Icons/cloud'));
const audioId = cc.audioEngine.play(audioClip, false, 0.8); arrow.x = pos.x;
if (cb) { arrow.y = pos.y;
cc.audioEngine.setFinishCallback(audioId, () => { arrow.parent = LetterLayer;
cb(); return arrow;
},
_arrowList: null,
createArrows() {
const letter = this._status.currentLetter;
const penIdx = this._status._currentPenIdx;
if (!letterData[letter][penIdx]) {
return;
}
const penPointList = letterData[letter][penIdx].map(pos => cc.v2(pos.x, pos.y));
const debugBase = cc.find('Canvas/UIBase/DebugBase');
const drawBaseComponent = debugBase.getComponent('DebugDrawBase');
const pointList = drawBaseComponent.interpolatePos(penPointList, 10);
this.removeArrows();
for (let i = 16; i < pointList.length - 12; i++) {
const point = pointList[i];
const nextPoint = pointList[i + 1];
const nextPoint2 = pointList[i + 2];
const lastArrow = this._arrowList[this._arrowList.length - 1];
if (lastArrow && this.getDistance(lastArrow, nextPoint) < 80) {
continue;
}
const arrow = this.createArrow(point, nextPoint, nextPoint2);
this._arrowList.push(arrow);
}
const arrowLength = this._arrowList.length;
this._arrowList.forEach((arrow, idx) => {
cc.tween(arrow)
.delay(idx * 0.4)
.to(0.5, { opacity: 0 })
.to(0.5, { opacity: 255 })
.delay(arrowLength * 0.4 - idx * 0.4)
.union()
.repeatForever()
.start();
}); });
},
showArrows() {
for (const arrow of this._arrowList) {
arrow.active = true;
} }
},
updateArrows(shark) {
for (const arrow of this._arrowList) {
if (arrow.active == false) {
continue;
}
if (this.getDistance(shark, arrow) < 80) {
arrow.active = false;
cc.audioEngine.play(this.audio_write, false, 1);
break;
}
}
},
removeArrows() {
if (this._arrowList) {
this._arrowList.forEach(arrow => {
arrow.removeFromParent();
}); });
} }
this._arrowList = [];
}, },
// ------------------------------------------ createArrow(pos1, centerPos, pos2) {
let line = cc.v2(pos2.x - pos1.x, pos2.y - pos1.y);
let angle = cc.v2(1, 0).signAngle(line) * (180 / Math.PI);
const LetterLayer = cc.find('Canvas/bg/LetterLayer');
const arrow = cc.instantiate(cc.find('Icons/arrow'));
arrow.x = centerPos.x;
arrow.y = centerPos.y;
arrow.parent = LetterLayer;
arrow.angle = angle;
return arrow;
},
createStar() {
const letter = this._status.currentLetter;
const penIdx = this._status._currentPenIdx;
if (!letterData[letter][penIdx]) {
return;
}
const pen = letterData[letter][penIdx];
const lastPoint = pen[pen.length - 1];
const LetterLayer = cc.find('Canvas/bg/LetterLayer');
const star = cc.instantiate(cc.find('Icons/star'));
star.x = lastPoint.x;
star.y = lastPoint.y;
star.parent = LetterLayer;
this.star = star;
},
removeStar() {
const star = this.star;
cc.tween(star)
.to(0.2, { angle: 360, opacity: 0 })
.call(() => {
star.removeFromParent();
})
.start();
},
zoomStar() {
const star = this.star;
const LetterLayer = cc.find('Canvas/bg/LetterLayer');
const starbig = cc.instantiate(cc.find('Icons/starbig'));
starbig.scale = star.width / starbig.width;
starbig.x = star.x;
starbig.y = star.y;
starbig.parent = LetterLayer;
star.removeFromParent();
cc.audioEngine.play(this.audio_zoom, false, 1);
cc.tween(starbig)
.to(1, { x: 0, y: 0, scale: 1, angle: 360 * 2 })
.to(1, { scale: 1.5, angle: 360 * 2, opacity: 0 })
.call(() => {
starbig.removeFromParent();
})
.start();
},
showFireworks() {
cc.find('Canvas/Main Camera').zIndex = 10;
showFireworks(
cc.find('Canvas/Main Camera'),
cc.find('Icons').children,
cc.v2(0, -400), cc.v2(0, 1000), 200, 200
);
showFireworks(
cc.find('Canvas/Main Camera'),
cc.find('Icons').children,
cc.v2(-600, -400), cc.v2(200, 1000), 200, 200
);
showFireworks(
cc.find('Canvas/Main Camera'),
cc.find('Icons').children,
cc.v2(600, -400), cc.v2(-200, 1000), 200, 200
);
},
async playLetterAudio() {
await asyncDelay(4);
const letterAudio = this[`audio_${this._status.currentLetter.toLowerCase()}`];
const audioId = cc.audioEngine.play(letterAudio, false, 1);
cc.audioEngine.setFinishCallback(audioId, () => { });
},
speakerBlink() {
const speaker0 = cc.find('Canvas/UIBase/BtnSpeaker/Speaking_0');
const speaker1 = cc.find('Canvas/UIBase/BtnSpeaker/Speaking_1');
const speaker2 = cc.find('Canvas/UIBase/BtnSpeaker/Speaking_2');
cc.tween(speaker0)
.call(() => {
speaker0.active = true;
})
.delay(0.2)
.union()
.repeatForever()
.start();
cc.tween(speaker1)
.delay(0.1)
.call(() => {
speaker1.active = true;
})
.delay(0.1)
.union()
.repeatForever()
.start();
cc.tween(speaker2)
.delay(0.2)
.call(() => {
speaker2.active = true;
})
.union()
.repeatForever()
.start();
},
speakerStopBlink() {
const speaker0 = cc.find('Canvas/UIBase/BtnSpeaker/Speaking_0');
const speaker1 = cc.find('Canvas/UIBase/BtnSpeaker/Speaking_1');
const speaker2 = cc.find('Canvas/UIBase/BtnSpeaker/Speaking_2');
speaker0.stopAllActions();
speaker1.stopAllActions();
speaker2.stopAllActions();
speaker0.active = false;
speaker1.active = false;
speaker2.active = false;
},
}); });
{ {
"ver": "1.0.8", "ver": "1.0.8",
"uuid": "f4ede462-f8d7-4069-ba80-915611c058ca", "uuid": "4d1e2036-4c4e-4ddd-8f9a-7654da4dec3d",
"isPlugin": false, "isPlugin": false,
"loadPluginInWeb": true, "loadPluginInWeb": true,
"loadPluginInNative": true, "loadPluginInNative": true,
......
import { letterData, letterWidthData, letterPosOffset } from "./letterPointData";
import { asyncDelay } from "./utils";
cc.Class({
extends: cc.Component,
properties: {
drawNode: cc.Node,
letter: 'A'
},
ctor() {
},
start() {
this.initData();
this.initListener();
},
initData() {
console.log('initData');
this._writingIdx = 0;
this.letterPosList = {};
for (const key in letterData) {
if (Object.hasOwnProperty.call(letterData, key)) {
this.letterPosList[key] = letterData[key].map(pen => {
return pen.map(pos => cc.v2(pos.x, pos.y));
});
}
}
},
initListener() {
const BtnNext = cc.find('BtnNext', this.node);
BtnNext.on('click', () => {
const posList = this.letterPosList[this.letter];
posList.push([]);
this.updateEditMode();
});
const BtnBack = cc.find('BtnBack', this.node);
BtnBack.on('click', () => {
const posList = this.letterPosList[this.letter];
const lastPen = posList[posList.length - 1];
if (lastPen && lastPen.length > 0) {
lastPen.pop();
} else {
if (posList.length > 0) {
posList.pop();
}
}
this.updateEditMode();
});
const BtnShow = cc.find('BtnShow', this.node);
BtnShow.on('click', () => {
this.showLetterAnimation();
});
const BtnSave = cc.find('BtnSave', this.node);
BtnSave.on('click', () => {
const posList = this.letterPosList[this.letter];
console.log(JSON.stringify(posList.map(list => list.map(pos => {
return { x: pos.x, y: pos.y };
}))));
});
this.drawNode.off('touchstart', this.onEditModeDrawNodeTouchStart.bind(this));
this.drawNode.off('touchmove', this.onEditModeDrawNodeTouchMove.bind(this));
this.drawNode.on('touchstart', this.onEditModeDrawNodeTouchStart.bind(this));
this.drawNode.on('touchmove', this.onEditModeDrawNodeTouchMove.bind(this));
this.updateEditMode();
},
setDrawNode(drawNode) {
this.drawNode = drawNode;
this.drawNode.off('touchstart', this.onEditModeDrawNodeTouchStart.bind(this));
this.drawNode.off('touchmove', this.onEditModeDrawNodeTouchMove.bind(this));
this.drawNode.on('touchstart', this.onEditModeDrawNodeTouchStart.bind(this));
this.drawNode.on('touchmove', this.onEditModeDrawNodeTouchMove.bind(this));
this.updateEditMode();
},
_targetPos: null,
onEditModeDrawNodeTouchStart(event) {
const touchLocation = event.getLocation();
const pos = this.drawNode.convertToNodeSpaceAR(touchLocation);
const posList = this.letterPosList[this.letter];
const targetPos = posList.flat().find(penPos => this.getDistance(penPos, pos) < 5);
if (targetPos) {
targetPos.x = pos.x;
targetPos.y = pos.y;
this._targetPos = targetPos;
} else {
if (posList.length == 0) {
posList.push([]);
}
posList[posList.length - 1].push(pos);
this._targetPos = pos;
}
this.updateEditMode();
},
onEditModeDrawNodeTouchMove(event) {
const touchLocation = event.getLocation();
const pos = this.drawNode.convertToNodeSpaceAR(touchLocation);
this._targetPos.x = pos.x;
this._targetPos.y = pos.y;
this.updateEditMode();
},
_writingIdx: 0,
async showLetterAnimation() {
this._writingIdx++;
const writingIdx = this._writingIdx;
const graphsmall = this.drawNode.getComponent(cc.Graphics);
graphsmall.clear();
const posList = this.letterPosList[this.letter];
const lineList = this.getLineList(posList);
for (const pen of lineList) {
for (const line of pen) {
if (writingIdx == this._writingIdx) {
this.drawALine(this.drawNode, line.startPos, line.endPos, cc.color(181, 39, 48));
}
await asyncDelay(0.02);
}
await asyncDelay(0.1);
}
},
updateEditMode() {
const graph = this.drawNode.getComponent(cc.Graphics)
graph.clear();
const posList = this.letterPosList[this.letter];
const lineList = this.getLineList(posList);
for (const pen of lineList) {
for (const line of pen) {
this.drawALine(this.drawNode, line.startPos, line.endPos, cc.color(0, 0, 255));
}
}
posList.forEach((pen, i) => {
const newPen = this.interpolatePos(pen, 10);
for (const pos of newPen) {
let color = cc.color(50, 50, 50);
if (i == posList.length - 1) {
color = cc.color(255, 0, 0);
}
const idx = pen.findIndex(penPos => penPos.x == pos.x && penPos.y == pos.y);
if (idx == -1) {
this.drawSmallDot(this.drawNode, pos, color);
} else {
this.drawBigCircle(this.drawNode, pos, color);
}
}
});
},
getLineList(posList) {
const lineList = [];
for (const pen of posList) {
const newPen = this.interpolatePos(pen, 10);
const newLine = [];
newPen.forEach((pos, idx) => {
if (idx < newPen.length - 1) {
newLine.push({
startPos: pos,
endPos: newPen[idx + 1]
});
}
});
if (pen.length == 1) {
newLine.push({
startPos: pen[0],
endPos: cc.v2(pen[0].x, pen[0].y + 0.001)
});
}
lineList.push(newLine);
}
return lineList;
},
interpolatePos(posList, maxLength) {
let newposList = [];
if (posList.length <= 1) {
return posList;
}
for (let i = 0; i < posList.length - 1; i++) {
const pos = posList[i];
const nextPos = posList[i + 1];
const distance = this.getDistance(pos, nextPos);
newposList.push(pos);
if (distance > maxLength) {
const middlePoint = this.getMiddlePoint(pos, nextPos);
newposList.push(middlePoint);
}
}
newposList.push(posList[posList.length - 1]);
if (newposList.length > posList.length) {
newposList = this.interpolatePos(newposList, maxLength);
}
return newposList;
},
getMiddlePoint(pos1, pos2) {
return cc.v2((pos1.x + pos2.x) / 2, (pos1.y + pos2.y) / 2);
},
getDistance(pos1, pos2) {
return pos1.sub(pos2).mag();
},
drawALine(drawNode, fromPos, toPos, color) {
const graph = drawNode.getComponent(cc.Graphics);
if (color) {
graph.strokeColor = color;
}
if (letterWidthData[this.letter]) {
graph.lineWidth = letterWidthData[this.letter];
} else {
graph.lineWidth = letterWidthData.defaultWidth;
}
graph.moveTo(fromPos.x, fromPos.y);
graph.lineTo(toPos.x, toPos.y);
graph.stroke();
},
drawBigCircle(drawNode, centerPos, color) {
const graph = drawNode.getComponent(cc.Graphics);
graph.lineWidth = 5;
graph.strokeColor = color;
graph.arc(centerPos.x, centerPos.y, 6, 0, Math.PI * 2, true);
graph.stroke();
graph.fillColor = cc.color(255, 255, 255);
graph.arc(centerPos.x, centerPos.y, 4, 0, Math.PI * 2, true);
graph.fill();
},
drawSmallDot(drawNode, centerPos, color) {
const graph = drawNode.getComponent(cc.Graphics);
graph.fillColor = color;
graph.arc(centerPos.x, centerPos.y, 3, 0, Math.PI * 2, true);
graph.fill();
},
});
{
"ver": "1.0.8",
"uuid": "8333dc53-87fd-4578-9648-2ed4a41f58de",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
export const defaultData = { export const defaultData = {
"pic_url": "http://staging-teach.cdn.ireadabc.com/ed94332a503c31e0908bd4c6923a2665.png", letterList: [
"pic_url_2": "http://staging-teach.cdn.ireadabc.com/5fb60317ade0195d35ad8034d5370a7f.png", 'A', 'B', 'C', 'D', 'E', 'F', 'G',
"text": "This is a test label.", 'H', 'I', 'J', 'K', 'L', 'M', 'N',
"audio_url": "http://staging-teach.cdn.ireadabc.com/f47f1d7b5c160fe1c59500d180346240.mp3" 'O', 'P', 'Q', 'R', 'S', 'T',
} 'U', 'V', 'W', 'X', 'Y', 'Z'
\ No newline at end of file ],
titleAudio:'',
debugMode: false
};
{ {
"ver": "1.0.8", "ver": "1.0.8",
"uuid": "c41b0e51-55d7-443c-af3a-b22c3dd9b9e5", "uuid": "e09b1b1d-8b06-484e-99f1-db9170ecca37",
"isPlugin": false, "isPlugin": false,
"loadPluginInWeb": true, "loadPluginInWeb": true,
"loadPluginInNative": true, "loadPluginInNative": true,
......
export const letterData = {
A: [[{ "x": -8, "y": 239 }, { "x": -184, "y": -235 }], [{ "x": 8, "y": 233 }, { "x": 185, "y": -233 }], [{ "x": -125, "y": -54 }, { "x": 115, "y": -54 }]],
B: [[{ "x": -134, "y": 216 }, { "x": -137, "y": -232 }], [{ "x": -141, "y": 215 }, { "x": 41, "y": 213 }, { "x": 80, "y": 191 }, { "x": 97, "y": 180 }, { "x": 110, "y": 156 }, { "x": 115, "y": 133 }, { "x": 118, "y": 106 }, { "x": 102, "y": 70 }, { "x": 83, "y": 55 }, { "x": 22, "y": 25 }, { "x": -132, "y": 16 }], [{ "x": -135, "y": 8 }, { "x": 68, "y": -2 }, { "x": 116, "y": -43 }, { "x": 138, "y": -86 }, { "x": 128, "y": -141 }, { "x": 98, "y": -191 }, { "x": 19, "y": -209 }, { "x": -132, "y": -210 }]],
C: [[{ "x": 153, "y": 127 }, { "x": 119, "y": 188 }, { "x": 56, "y": 217 }, { "x": -12, "y": 217 }, { "x": -66, "y": 197 }, { "x": -120, "y": 145 }, { "x": -151, "y": 67 }, { "x": -158, "y": 5 }, { "x": -153, "y": -59 }, { "x": -127, "y": -129 }, { "x": -85, "y": -182 }, { "x": -15, "y": -217 }, { "x": 83, "y": -208 }, { "x": 137, "y": -163 }, { "x": 163, "y": -97 }]],
D: [[{ "x": -160, "y": 208 }, { "x": -161, "y": -216 }], [{ "x": -150, "y": 209 }, { "x": -12, "y": 208 }, { "x": 74, "y": 176 }, { "x": 140, "y": 107 }, { "x": 160, "y": 1 }, { "x": 143, "y": -88 }, { "x": 76, "y": -170 }, { "x": -16, "y": -204 }, { "x": -159, "y": -205 }]],
E: [[{ "x": -124, "y": 216 }, { "x": -127, "y": -205 }], [{ "x": -126, "y": -204 }, { "x": 142, "y": -204 }], [{ "x": -124, "y": 210 }, { "x": 124, "y": 210 }], [{ "x": -126, "y": 6 }, { "x": 113, "y": 7 }]],
F: [[{ "x": -120, "y": 220 }, { "x": -122, "y": -227 }], [{ "x": -122, "y": 217 }, { "x": 131, "y": 216 }], [{ "x": -125, "y": 5 }, { "x": 109, "y": 6 }]],
G: [[{ "x": 155, "y": 129 }, { "x": 117, "y": 187 }, { "x": 49, "y": 223 }, { "x": -21, "y": 219 }, { "x": -85, "y": 197 }, { "x": -143, "y": 120 }, { "x": -162, "y": 32 }, { "x": -160, "y": -56 }, { "x": -128, "y": -138 }, { "x": -78, "y": -187 }, { "x": -16, "y": -219 }, { "x": 54, "y": -213 }, { "x": 97, "y": -184 }, { "x": 139, "y": -135 }, { "x": 162, "y": -87 }, { "x": 163, "y": -27 }], [{ "x": 58, "y": -28 }, { "x": 164, "y": -26 }, { "x": 165, "y": -223 }]],
H: [[{ "x": -145, "y": 226 }, { "x": -145, "y": -237 }], [{ "x": 143, "y": 230 }, { "x": 143, "y": -235 }], [{ "x": -144, "y": 1 }, { "x": 144, "y": 0 }]],
I: [[{ "x": -1, "y": 227 }, { "x": -1, "y": -226 }]],
J: [[{ "x": 104, "y": 225 }, { "x": 104, "y": -129 }, { "x": 91, "y": -162 }, { "x": 75, "y": -187 }, { "x": 52, "y": -208 }, { "x": 26, "y": -215 }, { "x": -5, "y": -216 }, { "x": -41, "y": -211 }, { "x": -76, "y": -189 }, { "x": -97, "y": -164 }, { "x": -109, "y": -130 }]],
K: [[{ "x": -137, "y": 247 }, { "x": -139, "y": -240 }], [{ "x": 134, "y": 233 }, { "x": -142, "y": -11 }], [{ "x": -124, "y": 17 }, { "x": 154, "y": -231 }]],
L: [[{ "x": -116, "y": 232 }, { "x": -118, "y": -226 }], [{ "x": -124, "y": -216 }, { "x": 130, "y": -219 }]],
M: [[{ "x": -230, "y": 241 }, { "x": -228, "y": -236 }], [{ "x": 231, "y": 243 }, { "x": 226, "y": -227 }], [{ "x": -176, "y": 227 }, { "x": -1, "y": -223 }], [{ "x": 174, "y": 239 }, { "x": 0, "y": -225 }]],
N: [[{ "x": -172, "y": 234 }, { "x": -172, "y": -237 }], [{ "x": 171, "y": 240 }, { "x": 174, "y": -231 }], [{ "x": -144, "y": 225 }, { "x": 144, "y": -225 }]],
O: [[{ "x": -1, "y": 223 }, { "x": -59, "y": 209 }, { "x": -99, "y": 189 }, { "x": -137, "y": 154 }, { "x": -160, "y": 106 }, { "x": -171, "y": 46 }, { "x": -173, "y": -25 }, { "x": -162, "y": -98 }, { "x": -133, "y": -152 }, { "x": -108, "y": -179 }, { "x": -65, "y": -207 }, { "x": -13, "y": -219 }, { "x": 56, "y": -213 }, { "x": 112, "y": -176 }, { "x": 153, "y": -124 }, { "x": 170, "y": -62 }, { "x": 171, "y": 12 }, { "x": 168, "y": 83 }, { "x": 144, "y": 140 }, { "x": 114, "y": 180 }, { "x": 77, "y": 201 }, { "x": 30, "y": 218 }]],
P: [[{ "x": -133, "y": 226 }, { "x": -136, "y": -230 }], [{ "x": -122, "y": 218 }, { "x": 50, "y": 222 }, { "x": 101, "y": 191 }, { "x": 129, "y": 140 }, { "x": 128, "y": 66 }, { "x": 92, "y": 12 }, { "x": 36, "y": -12 }, { "x": -131, "y": -12 }]],
Q: [[{ "x": 64, "y": 233 }, { "x": -1, "y": 248 }, { "x": -74, "y": 231 }, { "x": -122, "y": 196 }, { "x": -155, "y": 158 }, { "x": -171, "y": 90 }, { "x": -177, "y": 14 }, { "x": -166, "y": -70 }, { "x": -133, "y": -137 }, { "x": -74, "y": -180 }, { "x": -2, "y": -197 }, { "x": 58, "y": -189 }, { "x": 134, "y": -127 }, { "x": 160, "y": -68 }, { "x": 172, "y": 7 }, { "x": 162, "y": 106 }, { "x": 141, "y": 168 }, { "x": 114, "y": 202 }, { "x": 60, "y": 236 }], [{ "x": 9, "y": -57 }, { "x": 186, "y": -253 }]],
R: [[{ "x": -137, "y": 237 }, { "x": -138, "y": -231 }], [{ "x": -132, "y": 220 }, { "x": 68, "y": 218 }, { "x": 109, "y": 179 }, { "x": 128, "y": 140 }, { "x": 128, "y": 94 }, { "x": 105, "y": 55 }, { "x": 90, "y": 32 }, { "x": 45, "y": 15 }, { "x": -24, "y": 9 }, { "x": -138, "y": 6 }], [{ "x": -138, "y": -8 }, { "x": 58, "y": -11 }, { "x": 100, "y": -65 }, { "x": 120, "y": -134 }, { "x": 137, "y": -230 }]],
S: [[{ "x": 125, "y": 145 }, { "x": 87, "y": 194 }, { "x": 26, "y": 224 }, { "x": -46, "y": 216 }, { "x": -95, "y": 185 }, { "x": -122, "y": 155 }, { "x": -128, "y": 120 }, { "x": -121, "y": 86 }, { "x": -107, "y": 67 }, { "x": -84, "y": 47 }, { "x": -31, "y": 26 }, { "x": 34, "y": 2 }, { "x": 84, "y": -22 }, { "x": 122, "y": -61 }, { "x": 131, "y": -116 }, { "x": 115, "y": -166 }, { "x": 72, "y": -202 }, { "x": 17, "y": -219 }, { "x": -48, "y": -213 }, { "x": -104, "y": -178 }, { "x": -138, "y": -125 }]],
T: [[{ "x": -171, "y": 226 }, { "x": 173, "y": 221 }], [{ "x": -9, "y": 225 }, { "x": -4, "y": -234 }]],
U: [[{ "x": -146, "y": 237 }, { "x": -142, "y": -98 }, { "x": -134, "y": -148 }, { "x": -104, "y": -176 }, { "x": -54, "y": -211 }, { "x": 20, "y": -220 }, { "x": 79, "y": -199 }, { "x": 126, "y": -151 }, { "x": 145, "y": -73 }, { "x": 145, "y": 22 }, { "x": 146, "y": 137 }, { "x": 143, "y": 231 }]],
V: [[{ "x": -164, "y": 235 }, { "x": -14, "y": -233 }], [{ "x": 168, "y": 233 }, { "x": 14, "y": -232 }]],
W: [[{ "x": -267, "y": 227 }, { "x": -144, "y": -239 }], [{ "x": -9, "y": 245 }, { "x": -131, "y": -230 }], [{ "x": 8, "y": 243 }, { "x": 135, "y": -247 }], [{ "x": 272, "y": 243 }, { "x": 141, "y": -230 }]],
X: [[{ "x": -169, "y": 235 }, { "x": 162, "y": -233 }], [{ "x": 172, "y": 239 }, { "x": -169, "y": -232 }]],
Y: [[{ "x": -150, "y": 240 }, { "x": 1, "y": -38 }], [{ "x": 152, "y": 236 }, { "x": 4, "y": -35 }], [{ "x": 0, "y": -28 }, { "x": 1, "y": -239 }]],
Z: [[{ "x": -152, "y": 216 }, { "x": 132, "y": 218 }], [{ "x": 117, "y": 216 }, { "x": -143, "y": -218 }], [{ "x": -137, "y": -211 }, { "x": 169, "y": -210 }]],
a: [[{ "x": 125.5, "y": -1 }, { "x": 112.5, "y": 47 }, { "x": 96.5, "y": 89 }, { "x": 78.5, "y": 113 }, { "x": 47.5, "y": 130 }, { "x": 7.5, "y": 141 }, { "x": -30.5, "y": 136 }, { "x": -65.5, "y": 123 }, { "x": -101.5, "y": 95 }, { "x": -123.5, "y": 58 }, { "x": -137.5, "y": 4 }, { "x": -126.5, "y": -48 }, { "x": -107.5, "y": -89 }, { "x": -72.5, "y": -121 }, { "x": -41.5, "y": -137 }, { "x": -14.5, "y": -141 }, { "x": 17.5, "y": -140 }, { "x": 47.5, "y": -134 }, { "x": 65.5, "y": -123 }, { "x": 87.5, "y": -93 }, { "x": 110.5, "y": -57 }, { "x": 123.5, "y": -22 }, { "x": 124.5, "y": 5 }], [{ "x": 137.5, "y": 193 }, { "x": 136, "y": -202 }]],
b: [[{ "x": -138, "y": 247 }, { "x": -139, "y": -240 }], [{ "x": -139, "y": -91 }, { "x": -66, "y": 49 }, { "x": -4, "y": 65 }, { "x": 57, "y": 53 }, { "x": 104, "y": 12 }, { "x": 137, "y": -59 }, { "x": 123, "y": -142 }, { "x": 58, "y": -205 }, { "x": -1, "y": -217 }, { "x": -60, "y": -207 }, { "x": -101, "y": -173 }, { "x": -136, "y": -101 }]],
c: [[{ "x": 120, "y": 81 }, { "x": 75, "y": 136 }, { "x": 22, "y": 150 }, { "x": -30, "y": 138 }, { "x": -79, "y": 118 }, { "x": -110, "y": 66 }, { "x": -133, "y": -2 }, { "x": -113, "y": -59 }, { "x": -91, "y": -106 }, { "x": -52, "y": -129 }, { "x": -7, "y": -147 }, { "x": 43, "y": -142 }, { "x": 82, "y": -125 }, { "x": 116, "y": -96 }, { "x": 138, "y": -68 }]],
d: [[{ "x": 135, "y": -79 }, { "x": 121, "y": -34 }, { "x": 97, "y": 8 }, { "x": 73, "y": 37 }, { "x": 23, "y": 64 }, { "x": -37, "y": 59 }, { "x": -92, "y": 28 }, { "x": -128, "y": -23 }, { "x": -134, "y": -97 }, { "x": -103, "y": -175 }, { "x": -46, "y": -210 }, { "x": 14, "y": -218 }, { "x": 65, "y": -197 }, { "x": 107, "y": -163 }, { "x": 120, "y": -146 }, { "x": 129, "y": -119 }, { "x": 141, "y": -90 }], [{ "x": 136, "y": 235 }, { "x": 136, "y": -238 }]],
e: [[{ "x": 135, "y": 15 }, { "x": 131, "y": 58 }, { "x": 109, "y": 101 }, { "x": 62, "y": 129 }, { "x": 7, "y": 150 }, { "x": -48, "y": 135 }, { "x": -106, "y": 100 }, { "x": -130, "y": 50 }, { "x": -132, "y": -26 }, { "x": -111, "y": -90 }, { "x": -53, "y": -127 }, { "x": -2, "y": -152 }, { "x": 78, "y": -131 }, { "x": 119, "y": -88 }], [{ "x": -131, "y": 13 }, { "x": 133, "y": 11 }]],
f: [[{ "x": 110, "y": 219 }, { "x": 27, "y": 218 }, { "x": -6, "y": 207 }, { "x": -15, "y": 159 }, { "x": -15, "y": 107 }, { "x": -14, "y": -232 }], [{ "x": -94, "y": 80 }, { "x": 77, "y": 80 }]],
g: [[{ "x": 108, "y": 79 }, { "x": 87, "y": 149 }, { "x": 60, "y": 175 }, { "x": 26, "y": 193 }, { "x": -36, "y": 194 }, { "x": -85, "y": 162 }, { "x": -118, "y": 115 }, { "x": -126, "y": 49 }, { "x": -95, "y": -17 }, { "x": -33, "y": -51 }, { "x": -4, "y": -56 }, { "x": 33, "y": -48 }, { "x": 59, "y": -36 }, { "x": 94, "y": 6 }, { "x": 109, "y": 49 }, { "x": 110, "y": 67 }], [{ "x": 127, "y": 217 }, { "x": 123, "y": -91 }, { "x": 104, "y": -153 }, { "x": 53, "y": -194 }, { "x": -33, "y": -198 }, { "x": -95, "y": -161 }, { "x": -116, "y": -130 }]],
h: [[{ "x": -114, "y": 242 }, { "x": -113, "y": -233 }], [{ "x": -114, "y": -232 }, { "x": -114, "y": -31 }, { "x": -25, "y": 55 }, { "x": 11, "y": 68 }, { "x": 50, "y": 65 }, { "x": 77, "y": 46 }, { "x": 102, "y": 12 }, { "x": 114, "y": -30 }, { "x": 115, "y": -113 }, { "x": 110, "y": -178 }, { "x": 110, "y": -238 }]],
i: [[{ "x": -2, "y": 77 }, { "x": -2, "y": -228 }], [{ "x": 1, "y": 219 }, { "x": 1, "y": 214 }]],
j: [[{ "x": 57, "y": 139 }, { "x": 52, "y": -221 }, { "x": 29, "y": -257 }, { "x": -9, "y": -271 }, { "x": -43, "y": -268 }, { "x": -68, "y": -255 }], [{ "x": 56, "y": 279 }, { "x": 60, "y": 255 }]],
k: [[{ "x": -101, "y": 242 }, { "x": -104, "y": -235 }], [{ "x": 97, "y": 91 }, { "x": -42, "y": -47 }], [{ "x": -36, "y": -39 }, { "x": 104, "y": -225 }]],
l: [[{ "x": 0, "y": 232 }, { "x": -1, "y": -230 }]],
m: [[{ "x": -216, "y": 165 }, { "x": -216, "y": -154 }], [{ "x": -218, "y": -154 }, { "x": -214, "y": 61 }, { "x": -147, "y": 129 }, { "x": -112, "y": 151 }, { "x": -61, "y": 138 }, { "x": -27, "y": 113 }, { "x": 5, "y": 46 }, { "x": 3, "y": -157 }], [{ "x": 4, "y": -160 }, { "x": 6, "y": 60 }, { "x": 71, "y": 131 }, { "x": 115, "y": 149 }, { "x": 167, "y": 135 }, { "x": 201, "y": 98 }, { "x": 216, "y": 43 }, { "x": 214, "y": -162 }]],
n: [[{ "x": -112, "y": 158 }, { "x": -109, "y": -152 }], [{ "x": -112, "y": -152 }, { "x": -104, "y": 73 }, { "x": -20, "y": 139 }, { "x": 30, "y": 144 }, { "x": 77, "y": 120 }, { "x": 109, "y": 82 }, { "x": 114, "y": -3 }, { "x": 114, "y": -156 }]],
o: [[{ "x": 89, "y": 113 }, { "x": 33, "y": 142 }, { "x": -40, "y": 138 }, { "x": -103, "y": 103 }, { "x": -132, "y": 46 }, { "x": -140, "y": -22 }, { "x": -109, "y": -101 }, { "x": -40, "y": -142 }, { "x": 48, "y": -137 }, { "x": 109, "y": -95 }, { "x": 145, "y": -14 }, { "x": 135, "y": 52 }, { "x": 79, "y": 123 }]],
p: [[{ "x": -131, "y": 221 }, { "x": -128, "y": -211 }], [{ "x": -127, "y": 40 }, { "x": -58, "y": 179 }, { "x": -5, "y": 196 }, { "x": 56, "y": 184 }, { "x": 107, "y": 140 }, { "x": 133, "y": 63 }, { "x": 110, "y": -19 }, { "x": 57, "y": -63 }, { "x": -15, "y": -72 }, { "x": -58, "y": -56 }, { "x": -109, "y": 0 }, { "x": -131, "y": 50 }]],
q: [[{ "x": 105, "y": 63 }, { "x": 93, "y": 114 }, { "x": 69, "y": 169 }, { "x": 32, "y": 189 }, { "x": -25, "y": 193 }, { "x": -86, "y": 161 }, { "x": -127, "y": 103 }, { "x": -125, "y": 24 }, { "x": -99, "y": -26 }, { "x": -40, "y": -71 }, { "x": 28, "y": -69 }, { "x": 69, "y": -48 }, { "x": 92, "y": -18 }, { "x": 105, "y": 13 }, { "x": 106, "y": 51 }], [{ "x": 130, "y": 215 }, { "x": 128, "y": -202 }]],
r: [[{ "x": -67, "y": 155 }, { "x": -67, "y": -153 }], [{ "x": -65, "y": -154 }, { "x": -67, "y": 54 }, { "x": -21, "y": 109 }, { "x": 37, "y": 139 }, { "x": 70, "y": 148 }]],
s: [[{ "x": 92, "y": 114 }, { "x": 27, "y": 152 }, { "x": -37, "y": 146 }, { "x": -86, "y": 119 }, { "x": -95, "y": 79 }, { "x": -86, "y": 47 }, { "x": 64, "y": -23 }, { "x": 102, "y": -45 }, { "x": 108, "y": -99 }, { "x": 61, "y": -143 }, { "x": -7, "y": -152 }, { "x": -73, "y": -123 }, { "x": -112, "y": -71 }]],
t: [[{ "x": -6, "y": 235 }, { "x": -2, "y": -186 }, { "x": 11, "y": -218 }, { "x": 91, "y": -223 }], [{ "x": -117, "y": 101 }, { "x": 107, "y": 99 }]],
u: [[{ "x": -116, "y": 169 }, { "x": -109, "y": -73 }, { "x": -74, "y": -122 }, { "x": -23, "y": -143 }, { "x": 26, "y": -135 }, { "x": 56, "y": -102 }, { "x": 97, "y": -59 }, { "x": 110, "y": 158 }], [{ "x": 113, "y": 156 }, { "x": 114, "y": -155 }]],
v: [[{ "x": -130, "y": 156 }, { "x": -1, "y": -159 }], [{ "x": 128, "y": 158 }, { "x": -2, "y": -152 }]],
w: [[{ "x": -235, "y": 159 }, { "x": -125, "y": -178 }], [{ "x": -13, "y": 182 }, { "x": -116, "y": -172 }], [{ "x": -3, "y": 168 }, { "x": 125, "y": -170 }], [{ "x": 244, "y": 169 }, { "x": 127, "y": -166 }]],
x: [[{ "x": -127, "y": 167 }, { "x": 136, "y": -169 }], [{ "x": 130, "y": 170 }, { "x": -130, "y": -161 }]],
y: [[{ "x": -138, "y": 217 }, { "x": 6, "y": -79 }], [{ "x": 132, "y": 219 }, { "x": -48, "y": -210 }]],
z: [[{ "x": -126, "y": 142 }, { "x": 110, "y": 145 }], [{ "x": 93, "y": 147 }, { "x": -110, "y": -138 }], [{ "x": -108, "y": -137 }, { "x": 134, "y": -136 }]],
}
export const letterWidthData = {
defaultWidth: 85,
S: 90,
U: 90,
h: 90,
x: 70,
}
export const letterPosOffset = {
}
\ No newline at end of file
{
"ver": "1.0.8",
"uuid": "54bac391-3025-405d-8de4-6213b47b3733",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
*/ */
cc.sys.capabilities["touches"] = true;
!(function (global) { !(function (global) {
"use strict"; "use strict";
......
{ {
"ver": "1.0.8", "ver": "1.0.8",
"uuid": "b54300af-b8e5-4b4e-aa2f-9ac1cef7b598", "uuid": "504bc64b-a6dd-4d9f-8964-cfbe0ceed5c9",
"isPlugin": true, "isPlugin": true,
"loadPluginInWeb": true, "loadPluginInWeb": true,
"loadPluginInNative": true, "loadPluginInNative": true,
......
...@@ -132,223 +132,3 @@ export function btnClickAnima(btn, time=0.15, rate=1.05) { ...@@ -132,223 +132,3 @@ export function btnClickAnima(btn, time=0.15, rate=1.05) {
.start() .start()
}) })
} }
export function getSpriteFrimeByUrl(url, cb) {
cc.loader.load({ url }, (err, img) => {
const spriteFrame = new cc.SpriteFrame(img)
if (cb) {
cb(spriteFrame);
}
})
}
export function getSprNode(resName) {
const sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame;
const node = new cc.Node();
node.addComponent(cc.Sprite).spriteFrame = sf;
return node;
}
export function getSprNodeByUrl(url, cb) {
const node = new cc.Node();
const spr = node.addComponent(cc.Sprite);
getSpriteFrimeByUrl(url, (sf) => {
spr.spriteFrame = sf;
if (cb) {
cb(spr);
}
})
}
export function playAudio(audioClip, cb = null) {
if (audioClip) {
const audioId = cc.audioEngine.playEffect(audioClip, false, 0.8);
if (cb) {
cc.audioEngine.setFinishCallback(audioId, () => {
cb();
});
}
}
}
export async function asyncDelay(time) {
return new Promise((resolve, reject) => {
try {
setTimeout(() => {
resolve();
}, time * 1000);
} catch (e) {
reject(e);
}
})
}
export class FireworkSettings {
baseNode; // 父节点
nodeList; // 火花节点的array
pos; // 发射点
side; // 发射方向
range; // 扩散范围
number; // 发射数量
scalseRange; // 缩放范围
constructor(baseNode, nodeList,
pos = cc.v2(0, 0),
side = cc.v2(0, 100),
range = 50,
number = 100,
scalseRange = 0
) {
this.baseNode = baseNode;
this.nodeList = nodeList;
this.pos = pos;
this.side = side;
this.range = range;
this.number = number;
this.scalseRange = scalseRange;
}
static copy(firework) {
return new FireworkSettings(
firework.baseNode,
firework.nodeList,
firework.pos,
firework.side,
firework.range,
firework.number,
);
}
}
export async function showFireworks(fireworkSettings) {
const { baseNode, nodeList, pos, side, range, number, scalseRange } = fireworkSettings;
new Array(number).fill(' ').forEach(async (_, i) => {
let rabbonNode = new cc.Node();
rabbonNode.parent = baseNode;
rabbonNode.x = pos.x;
rabbonNode.y = pos.y;
rabbonNode.angle = 60 * Math.random() - 30;
let node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);
node.parent = rabbonNode;
node.active = true;
node.x = 0;
node.y = 0;
node.angle = 0;
node.scale = (Math.random() - 0.5) * scalseRange + 1;
const rate = Math.random();
const angle = Math.PI * (Math.random() * 2 - 1);
await asyncTweenBy(rabbonNode, 0.3, {
x: side.x * rate + Math.cos(angle) * range * rate,
y: side.y * rate + Math.sin(angle) * range * rate
}, {
easing: 'quadIn'
});
cc.tween(rabbonNode)
.by(8, { y: -2000 })
.start();
cc.tween(rabbonNode)
.to(5, { scale: (Math.random() - 0.5) * scalseRange + 1 })
.start();
rabbonFall(rabbonNode);
await asyncDelay(Math.random());
cc.tween(node)
.by(0.15, { x: -10, angle: -10 })
.by(0.3, { x: 20, angle: 20 })
.by(0.15, { x: -10, angle: -10 })
.union()
.repeatForever()
.start();
cc.tween(rabbonNode)
.delay(5)
.to(0.3, { opacity: 0 })
.call(() => {
node.stopAllActions();
node.active = false;
node.parent = null;
node = null;
})
.start();
});
}
async function rabbonFall(node) {
const time = 1 + Math.random();
const offsetX = RandomInt(-200, 200) * time;
await asyncTweenBy(node, time, { x: offsetX, angle: offsetX * 60 / 200 });
rabbonFall(node);
}
export async function asyncTweenTo(node, duration, obj, ease = undefined) {
return new Promise((resolve, reject) => {
try {
cc.tween(node)
.to(duration, obj, ease)
.call(() => {
resolve();
})
.start();
} catch (e) {
reject(e);
}
});
}
export async function asyncTweenBy(node, duration, obj, ease = undefined) {
return new Promise((resolve, reject) => {
try {
cc.tween(node)
.by(duration, obj, ease)
.call(() => {
resolve();
})
.start();
} catch (e) {
reject(e);
}
});
}
export function showTrebleFirework(baseNode, rabbonList) {
const middle = new FireworkSettings(baseNode, rabbonList);
middle.pos = cc.v2(0, -400);
middle.side = cc.v2(0, 1000);
middle.range = 200;
middle.number = 100;
middle.scalseRange = 0.4;
const left = FireworkSettings.copy(middle);
left.pos = cc.v2(-600, -400);
left.side = cc.v2(200, 1000);
const right = FireworkSettings.copy(middle);
right.pos = cc.v2(600, -400);
right.side = cc.v2(-200, 1000);
showFireworks(middle);
showFireworks(left);
showFireworks(right);
}
export function onHomeworkFinish() {
const middleLayer = cc.find('middleLayer');
if (middleLayer) {
const middleLayerComponent = middleLayer.getComponent('middleLayer');
if (middleLayerComponent.role == 'student') {
middleLayerComponent.onHomeworkFinish(() => { });
}
} else {
console.log('onHomeworkFinish');
}
}
\ No newline at end of file
export function getPosByAngle(angle, len) {
const radian = angle * Math.PI / 180;
const x = Math.sin(radian) * len;
const y = Math.cos(radian) * len;
return { x, y };
}
export function getAngleByPos(px, py, mx, my) {
const x = Math.abs(px - mx);
const y = Math.abs(py - my);
const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
const cos = y / z;
const radina = Math.acos(cos); // 用反三角函数求弧度
let angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度
if (mx > px && my > py) {// 鼠标在第四象限
angle = 180 - angle;
}
if (mx === px && my > py) {// 鼠标在y轴负方向上
angle = 180;
}
if (mx > px && my === py) {// 鼠标在x轴正方向上
angle = 90;
}
if (mx < px && my > py) {// 鼠标在第三象限
angle = 180 + angle;
}
if (mx < px && my === py) {// 鼠标在x轴负方向
angle = 270;
}
if (mx < px && my < py) {// 鼠标在第二象限
angle = 360 - angle;
}
// console.log('angle: ', angle);
return angle;
}
export function exchangeNodePos(baseNode, targetNode) {
return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));
}
export function RandomInt(a, b = 0) {
let max = Math.max(a, b);
let min = Math.min(a, b);
return Math.floor(Math.random() * (max - min) + min);
}
export function Between(a, b, c) {
return [a, b, c].sort((a, b) => a - b)[1];
}
export function randomSortByArr(arr) {
const newArr = [];
const tmpArr = arr.concat();
while (tmpArr.length > 0) {
const randomIndex = Math.floor(tmpArr.length * Math.random());
newArr.push(tmpArr[randomIndex]);
tmpArr.splice(randomIndex, 1);
}
return newArr;
}
export async function asyncTweenTo(node, duration, obj, ease = undefined) {
return new Promise((resolve, reject) => {
cc.tween(node)
.to(duration, obj, ease)
.call(() => {
resolve();
})
.start();
});
}
export async function asyncTweenBy(node, duration, obj, ease = undefined) {
return new Promise((resolve, reject) => {
cc.tween(node)
.by(duration, obj, ease)
.call(() => {
resolve();
})
.start();
});
}
export async function asyncPlayDragonBoneAnimation(node, animationName, time = 1, onFrameEvent) {
return new Promise((resolve, reject) => {
node.getComponent(dragonBones.ArmatureDisplay)
.once(dragonBones.EventObject.COMPLETE, () => {
resolve();
});
node.getComponent(dragonBones.ArmatureDisplay)
.on(dragonBones.EventObject.FRAME_EVENT, ({ name }) => {
if (onFrameEvent && typeof (onFrameEvent) == 'function') {
onFrameEvent(name);
}
});
node.getComponent(dragonBones.ArmatureDisplay)
.playAnimation(animationName, time);
});
}
export async function asyncPlayEffectByUrl(url, loop = false) {
return new Promise((resolve, reject) => {
cc.assetManager.loadRemote(url, (err, clip) => {
console.log(clip);
cc.audioEngine.playEffect(clip, loop);
resolve();
});
});
}
export async function jelly(node, offset = 0.1) {
let sideX = 1;
if (node.scaleX < 0) {
sideX = -1;
}
let sideY = 1;
if (node.scaleY < 0) {
sideY = -1;
}
return new Promise((resolve, reject) => {
try {
cc.tween(node)
.to(0.1, { scaleX: (1 - offset) * sideX, scaleY: (1 + offset) * sideY })
.to(0.1, { scaleX: (1 + offset) * sideX, scaleY: (1 - offset) * sideY })
.to(0.1, { scaleX: 1 * sideX, scaleY: 1 * sideY })
.call(resolve)
.start();
} catch (e) {
reject(e);
}
});
}
export async function asyncDelay(time) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, time * 1000);
})
}
export async function showFireworks(baseNode, nodeList, pos = cc.v2(0, 0), side = cc.v2(0, 100), range = 50, number = 100) {
new Array(number).fill(' ').forEach(async (_, i) => {
let rabbonNode = new cc.Node();
rabbonNode.parent = baseNode;
rabbonNode.x = pos.x;
rabbonNode.y = pos.y;
rabbonNode.angle = 60 * Math.random() - 30;
let node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);
node.parent = rabbonNode;
node.active = true;
node.x = 0;
node.y = 0;
node.angle = 0;
const rate = Math.random();
const angle = Math.PI * (Math.random() * 2 - 1);
await asyncTweenBy(rabbonNode, 0.3, {
x: side.x * rate + Math.cos(angle) * range * rate,
y: side.y * rate + Math.sin(angle) * range * rate
}, {
easing: 'quadIn'
});
cc.tween(rabbonNode)
.by(8, { y: -2000 })
.start();
rabbonFall(rabbonNode);
await asyncDelay(Math.random());
cc.tween(node)
.by(0.15, { x: -10, angle: -10 })
.by(0.3, { x: 20, angle: 20 })
.by(0.15, { x: -10, angle: -10 })
.union()
.repeatForever()
.start();
cc.tween(rabbonNode)
.delay(5)
.to(0.3, { opacity: 0 })
.call(() => {
node.stopAllActions();
node.active = false;
node.parent = null;
node = null;
})
.start();
});
}
async function rabbonFall(node) {
const time = 1 + Math.random();
const offsetX = RandomInt(-200, 200) * time;
await asyncTweenBy(node, time, { x: offsetX, angle: offsetX * 60 / 200 });
rabbonFall(node);
}
\ No newline at end of file
{
"ver": "1.0.8",
"uuid": "d545f402-231b-417e-99e6-3269412a5a2c",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
{ {
"ver": "2.3.5", "ver": "2.3.5",
"uuid": "e1b4d971-9876-4832-803a-5a321964a78b", "uuid": "a3be7db7-ee20-4257-96f9-4440680bde62",
"type": "sprite", "type": "sprite",
"wrapMode": "clamp", "wrapMode": "clamp",
"filterMode": "bilinear", "filterMode": "bilinear",
...@@ -11,10 +11,10 @@ ...@@ -11,10 +11,10 @@
"height": 720, "height": 720,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"bg": { "bg_1": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "8288e3d4-4c75-4b27-8f01-f7014417f4dd", "uuid": "03f1013d-fe0f-4c2d-b210-db3efe9de22f",
"rawTextureUuid": "e1b4d971-9876-4832-803a-5a321964a78b", "rawTextureUuid": "a3be7db7-ee20-4257-96f9-4440680bde62",
"trimType": "auto", "trimType": "auto",
"trimThreshold": 1, "trimThreshold": 1,
"rotated": false, "rotated": false,
......
{ {
"ver": "2.3.5", "ver": "2.3.5",
"uuid": "efa5fa09-a4dd-4bfc-ab7e-17c19f85408f", "uuid": "68607d9b-2856-4ab2-ad0c-4593b4156e64",
"type": "sprite", "type": "sprite",
"wrapMode": "clamp", "wrapMode": "clamp",
"filterMode": "bilinear", "filterMode": "bilinear",
"premultiplyAlpha": false, "premultiplyAlpha": false,
"genMipmaps": false, "genMipmaps": false,
"packable": true, "packable": true,
"width": 366, "width": 1280,
"height": 336, "height": 720,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"1orange": { "bg_2": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "43d1e79d-6de8-4dcb-b8ce-d767df7913aa", "uuid": "a3b5fab5-aab0-483f-b5fa-ac7a51d48f83",
"rawTextureUuid": "efa5fa09-a4dd-4bfc-ab7e-17c19f85408f", "rawTextureUuid": "68607d9b-2856-4ab2-ad0c-4593b4156e64",
"trimType": "auto", "trimType": "auto",
"trimThreshold": 1, "trimThreshold": 1,
"rotated": false, "rotated": false,
"offsetX": 0, "offsetX": 0,
"offsetY": -0.5, "offsetY": 0,
"trimX": 0, "trimX": 0,
"trimY": 1, "trimY": 0,
"width": 366, "width": 1280,
"height": 335, "height": 720,
"rawWidth": 366, "rawWidth": 1280,
"rawHeight": 336, "rawHeight": 720,
"borderTop": 0, "borderTop": 0,
"borderBottom": 0, "borderBottom": 0,
"borderLeft": 0, "borderLeft": 0,
......
{
"ver": "2.3.5",
"uuid": "6d1d72db-1cd4-4536-83a5-c60d78c937af",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1280,
"height": 720,
"platformSettings": {},
"subMetas": {
"bg_3": {
"ver": "1.0.4",
"uuid": "344a9498-98ab-49a6-b00a-c6e904a5985e",
"rawTextureUuid": "6d1d72db-1cd4-4536-83a5-c60d78c937af",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1280,
"height": 720,
"rawWidth": 1280,
"rawHeight": 720,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "8590adbf-637d-4417-aece-b9aee46b8cb5",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1280,
"height": 720,
"platformSettings": {},
"subMetas": {
"bg_4": {
"ver": "1.0.4",
"uuid": "6dc1dd05-3a4e-4bef-81eb-14348d6930b7",
"rawTextureUuid": "8590adbf-637d-4417-aece-b9aee46b8cb5",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1280,
"height": 720,
"rawWidth": 1280,
"rawHeight": 720,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "92f229ae-a9cc-41c8-a5cb-2b96f99f2dc3",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1280,
"height": 720,
"platformSettings": {},
"subMetas": {
"bg_5": {
"ver": "1.0.4",
"uuid": "599a9bc8-c05a-4ad2-846f-ec07bc15f09f",
"rawTextureUuid": "92f229ae-a9cc-41c8-a5cb-2b96f99f2dc3",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1280,
"height": 720,
"rawWidth": 1280,
"rawHeight": 720,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "2637e2a1-07f9-4442-a27c-2df2c71cbbb9",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1280,
"height": 282,
"platformSettings": {},
"subMetas": {
"bg_change": {
"ver": "1.0.4",
"uuid": "60feaf1e-3cf4-460d-93c9-9f92b14e291b",
"rawTextureUuid": "2637e2a1-07f9-4442-a27c-2df2c71cbbb9",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1280,
"height": 282,
"rawWidth": 1280,
"rawHeight": 282,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 449,
"borderRight": 713,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "964e5606-9c2f-4773-b46a-889742a8bd0a",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 102,
"height": 73,
"platformSettings": {},
"subMetas": {
"bg_cloud": {
"ver": "1.0.4",
"uuid": "f3b56d77-199d-47e9-8f0e-19ae82536c57",
"rawTextureUuid": "964e5606-9c2f-4773-b46a-889742a8bd0a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 102,
"height": 73,
"rawWidth": 102,
"rawHeight": 73,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "7bdb5835-39ac-41d9-8166-6c6494f2e73f",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 56,
"height": 37,
"platformSettings": {},
"subMetas": {
"bg_jiantou": {
"ver": "1.0.4",
"uuid": "e1e345b5-319a-45b6-b53b-5badbc0c511b",
"rawTextureUuid": "7bdb5835-39ac-41d9-8166-6c6494f2e73f",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 56,
"height": 37,
"rawWidth": 56,
"rawHeight": 37,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "bddb89e8-58f1-404d-9216-fe0477882a08",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 169,
"height": 149,
"platformSettings": {},
"subMetas": {
"bg_monkey": {
"ver": "1.0.4",
"uuid": "4d82a495-238f-416e-a6c7-45979897e87c",
"rawTextureUuid": "bddb89e8-58f1-404d-9216-fe0477882a08",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 5,
"trimY": 0,
"width": 159,
"height": 149,
"rawWidth": 169,
"rawHeight": 149,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "1f151d3d-c8ae-412e-a3e1-e602f9bcab01",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 169,
"height": 149,
"platformSettings": {},
"subMetas": {
"bg_shark": {
"ver": "1.0.4",
"uuid": "b682bf09-7bda-4a21-b342-9c3ed29858f3",
"rawTextureUuid": "1f151d3d-c8ae-412e-a3e1-e602f9bcab01",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 5.5,
"trimX": 0,
"trimY": 14,
"width": 169,
"height": 110,
"rawWidth": 169,
"rawHeight": 149,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "2c1c5696-58b0-4fbb-b263-13ed9210da99",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 502,
"height": 107,
"platformSettings": {},
"subMetas": {
"bg_title": {
"ver": "1.0.4",
"uuid": "40393bd2-9da4-430f-8db7-c6d3dc4fb467",
"rawTextureUuid": "2c1c5696-58b0-4fbb-b263-13ed9210da99",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 502,
"height": 107,
"rawWidth": 502,
"rawHeight": 107,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "ee81e990-6ac5-47ff-ba53-5dc8ed81f8c9",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 106,
"height": 206,
"platformSettings": {},
"subMetas": {
"btn_capital": {
"ver": "1.0.4",
"uuid": "1231ba9a-139c-4761-b08d-d87f5b3d17ab",
"rawTextureUuid": "ee81e990-6ac5-47ff-ba53-5dc8ed81f8c9",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 106,
"height": 206,
"rawWidth": 106,
"rawHeight": 206,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{ {
"ver": "2.3.5", "ver": "2.3.5",
"uuid": "9a79969a-0506-48d4-bc98-3c05d109b027", "uuid": "9d01da79-6f02-4bad-b368-587dfc3c0a59",
"type": "sprite", "type": "sprite",
"wrapMode": "clamp", "wrapMode": "clamp",
"filterMode": "bilinear", "filterMode": "bilinear",
"premultiplyAlpha": false, "premultiplyAlpha": false,
"genMipmaps": false, "genMipmaps": false,
"packable": true, "packable": true,
"width": 61, "width": 70,
"height": 67, "height": 78,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"btn_left": { "btn_laba": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "ce19457d-e8f3-4c38-ae3e-d4b99208ddb5", "uuid": "54401acc-47e3-414c-baed-d782979a1d4d",
"rawTextureUuid": "9a79969a-0506-48d4-bc98-3c05d109b027", "rawTextureUuid": "9d01da79-6f02-4bad-b368-587dfc3c0a59",
"trimType": "auto", "trimType": "auto",
"trimThreshold": 1, "trimThreshold": 1,
"rotated": false, "rotated": false,
...@@ -22,10 +22,10 @@ ...@@ -22,10 +22,10 @@
"offsetY": 0, "offsetY": 0,
"trimX": 0, "trimX": 0,
"trimY": 0, "trimY": 0,
"width": 61, "width": 70,
"height": 67, "height": 78,
"rawWidth": 61, "rawWidth": 70,
"rawHeight": 67, "rawHeight": 78,
"borderTop": 0, "borderTop": 0,
"borderBottom": 0, "borderBottom": 0,
"borderLeft": 0, "borderLeft": 0,
......
{
"ver": "2.3.5",
"uuid": "b3565b09-9934-40a4-86f8-778e80ad86c0",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 70,
"height": 78,
"platformSettings": {},
"subMetas": {
"btn_laba2": {
"ver": "1.0.4",
"uuid": "022e6582-278e-434c-95da-3b4fc4b80413",
"rawTextureUuid": "b3565b09-9934-40a4-86f8-778e80ad86c0",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 70,
"height": 78,
"rawWidth": 70,
"rawHeight": 78,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "94a9368e-d95e-42f7-be02-727c7ec2497a",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 70,
"height": 78,
"platformSettings": {},
"subMetas": {
"btn_laba3": {
"ver": "1.0.4",
"uuid": "4f561ab2-1dac-4dca-a6eb-e634f32c012e",
"rawTextureUuid": "94a9368e-d95e-42f7-be02-727c7ec2497a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 70,
"height": 78,
"rawWidth": 70,
"rawHeight": 78,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "f42b507e-8a26-4f76-b1f0-ed55063b3a07",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 70,
"height": 78,
"platformSettings": {},
"subMetas": {
"btn_laba4": {
"ver": "1.0.4",
"uuid": "c7636b1a-64c5-4a66-bcd0-dcbefdcf96bf",
"rawTextureUuid": "f42b507e-8a26-4f76-b1f0-ed55063b3a07",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 70,
"height": 78,
"rawWidth": 70,
"rawHeight": 78,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "6fb99563-b15e-44f5-845c-3c2bf0c8dd9e",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 70,
"height": 78,
"platformSettings": {},
"subMetas": {
"btn_last": {
"ver": "1.0.4",
"uuid": "65d1c031-c7cf-4a23-b7fd-03863848e408",
"rawTextureUuid": "6fb99563-b15e-44f5-845c-3c2bf0c8dd9e",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 70,
"height": 78,
"rawWidth": 70,
"rawHeight": 78,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "ea754d7f-cde1-4b0b-b5b3-198919add76f",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 70,
"height": 78,
"platformSettings": {},
"subMetas": {
"btn_next": {
"ver": "1.0.4",
"uuid": "6cde85f8-df6e-4fbd-ae76-0648ff539d4c",
"rawTextureUuid": "ea754d7f-cde1-4b0b-b5b3-198919add76f",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 70,
"height": 78,
"rawWidth": 70,
"rawHeight": 78,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "a16dc8a7-9fb2-4740-8afa-0d3a1e61fb7a",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 70,
"height": 78,
"platformSettings": {},
"subMetas": {
"btn_restart": {
"ver": "1.0.4",
"uuid": "625d543a-9ac2-4525-8cc8-7f977791560b",
"rawTextureUuid": "a16dc8a7-9fb2-4740-8afa-0d3a1e61fb7a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 70,
"height": 78,
"rawWidth": 70,
"rawHeight": 78,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "a34420d7-4fa6-4df9-b50e-6a3d58ccee80",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 106,
"height": 206,
"platformSettings": {},
"subMetas": {
"btn_small": {
"ver": "1.0.4",
"uuid": "6665d93b-889e-45ee-aeac-7e6c6ae69fe8",
"rawTextureUuid": "a34420d7-4fa6-4df9-b50e-6a3d58ccee80",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 106,
"height": 206,
"rawWidth": 106,
"rawHeight": 206,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "3c5f332f-0755-4ee8-b698-61eb8c53ffbe",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 74,
"height": 77,
"platformSettings": {},
"subMetas": {
"icon_star": {
"ver": "1.0.4",
"uuid": "6a897100-08ce-4e28-ac6b-61dc5c4f4aa7",
"rawTextureUuid": "3c5f332f-0755-4ee8-b698-61eb8c53ffbe",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 74,
"height": 77,
"rawWidth": 74,
"rawHeight": 77,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "85a9dff5-eae9-4b23-b557-63076e764420",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 386,
"height": 401,
"platformSettings": {},
"subMetas": {
"icon_starbig": {
"ver": "1.0.4",
"uuid": "fa73a044-82cd-4fc1-b808-c3b515c0c3ac",
"rawTextureUuid": "85a9dff5-eae9-4b23-b557-63076e764420",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 386,
"height": 401,
"rawWidth": 386,
"rawHeight": 401,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "91cf0bf5-b464-438a-a953-8704792185b2",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "e3e407c2-147a-421d-90e8-dcff0558a070",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"A_big": {
"ver": "1.0.4",
"uuid": "5d5eb9cd-57ca-445d-a573-6dcc24290812",
"rawTextureUuid": "e3e407c2-147a-421d-90e8-dcff0558a070",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 1.5,
"trimX": 89,
"trimY": 47,
"width": 432,
"height": 522,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "51038baa-d9c4-47f2-9bf1-6bb7eca03752",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"A_small": {
"ver": "1.0.4",
"uuid": "9a640160-9ba6-4220-8406-943cacc635bc",
"rawTextureUuid": "51038baa-d9c4-47f2-9bf1-6bb7eca03752",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 132,
"trimY": 124,
"width": 346,
"height": 370,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "686abc06-aa79-4c93-8fa9-858ca2e673f6",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"B_big": {
"ver": "1.0.4",
"uuid": "b2eff13b-162b-41ca-be0a-c666f7dc0e12",
"rawTextureUuid": "686abc06-aa79-4c93-8fa9-858ca2e673f6",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 1.5,
"trimX": 132,
"trimY": 59,
"width": 346,
"height": 498,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "598abc7f-c725-4d30-a670-6c7cdfbb253f",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"B_small": {
"ver": "1.0.4",
"uuid": "eb96bec7-1a7b-4030-b1df-0e5d25870eb9",
"rawTextureUuid": "598abc7f-c725-4d30-a670-6c7cdfbb253f",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 133,
"trimY": 48,
"width": 345,
"height": 523,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "3e604015-b75a-4d4d-bf90-f4000c81c843",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"C_big": {
"ver": "1.0.4",
"uuid": "59455114-a144-4f97-b458-e26fa5075c67",
"rawTextureUuid": "3e604015-b75a-4d4d-bf90-f4000c81c843",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -1,
"offsetY": 2,
"trimX": 108,
"trimY": 51,
"width": 392,
"height": 513,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "6a92e012-9a8a-4a5f-9f97-fe7544a1c7d5",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"C_small": {
"ver": "1.0.4",
"uuid": "ec540dc1-b756-4a9f-8cda-eac3048849f7",
"rawTextureUuid": "6a92e012-9a8a-4a5f-9f97-fe7544a1c7d5",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 143,
"trimY": 123,
"width": 325,
"height": 372,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "57a96e5d-b290-40d9-82d9-6baa84ee57e9",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"D_big": {
"ver": "1.0.4",
"uuid": "0fba2102-f030-4815-bb66-270b3db5a05c",
"rawTextureUuid": "57a96e5d-b290-40d9-82d9-6baa84ee57e9",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -1,
"offsetY": 1,
"trimX": 107,
"trimY": 65,
"width": 394,
"height": 487,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "752e318d-5514-4863-9062-3c7dd3ecc36d",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"D_small": {
"ver": "1.0.4",
"uuid": "0797c091-a211-4a2d-bb11-6949b6ec80f6",
"rawTextureUuid": "752e318d-5514-4863-9062-3c7dd3ecc36d",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 133,
"trimY": 47,
"width": 345,
"height": 524,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "a2f5c6c9-ce89-4886-832a-4a903d3c1fc2",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"E_big": {
"ver": "1.0.4",
"uuid": "91df1d3d-962a-423f-9ee3-214e254ac346",
"rawTextureUuid": "a2f5c6c9-ce89-4886-832a-4a903d3c1fc2",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -0.5,
"offsetY": 0,
"trimX": 140,
"trimY": 66,
"width": 329,
"height": 487,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "7883ca0d-7381-45b0-9018-1b37aaee23f4",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"E_small": {
"ver": "1.0.4",
"uuid": "4bd868e4-176c-4192-be89-d597f5235d5c",
"rawTextureUuid": "7883ca0d-7381-45b0-9018-1b37aaee23f4",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 139,
"trimY": 126,
"width": 333,
"height": 366,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "d3a5855c-3550-47ee-b434-e47cc448e188",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"F_big": {
"ver": "1.0.4",
"uuid": "a4fe4168-75e2-43e1-b90e-3fc7afdeb5a6",
"rawTextureUuid": "d3a5855c-3550-47ee-b434-e47cc448e188",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 145,
"trimY": 59,
"width": 320,
"height": 500,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "ad14e070-1b49-478e-bbd9-6e7297d5060e",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"F_small": {
"ver": "1.0.4",
"uuid": "957faeff-3aad-4100-818f-5ef2b8cea78b",
"rawTextureUuid": "ad14e070-1b49-478e-bbd9-6e7297d5060e",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 1.5,
"trimX": 189,
"trimY": 50,
"width": 232,
"height": 516,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "fcd7e115-e2c2-494c-9ace-93f7f199cf3f",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"G_big": {
"ver": "1.0.4",
"uuid": "1534e3ec-84f9-431d-a226-1c9a0125678c",
"rawTextureUuid": "fcd7e115-e2c2-494c-9ace-93f7f199cf3f",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 103,
"trimY": 50,
"width": 405,
"height": 519,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "04e2cad0-c0fc-41b8-a42d-7abeffaeb737",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"G_small": {
"ver": "1.0.4",
"uuid": "dd5b1ca1-f5e7-435f-8fc7-7ef479c6bd4d",
"rawTextureUuid": "04e2cad0-c0fc-41b8-a42d-7abeffaeb737",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 143,
"trimY": 73,
"width": 325,
"height": 472,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "9c7a2978-c52e-4975-aea7-610e805661e0",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"H_big": {
"ver": "1.0.4",
"uuid": "148465c0-97c8-44c4-8f45-c9de4e11677b",
"rawTextureUuid": "9c7a2978-c52e-4975-aea7-610e805661e0",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 123,
"trimY": 49,
"width": 364,
"height": 520,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "76bdea6f-3b35-470c-af16-16de83799b7e",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"H_small": {
"ver": "1.0.4",
"uuid": "95688f47-ba4a-4152-89b1-9930acd193f5",
"rawTextureUuid": "76bdea6f-3b35-470c-af16-16de83799b7e",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 155,
"trimY": 49,
"width": 300,
"height": 521,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "8b430d16-309f-4ac5-8c78-639e4d93709c",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"I_big": {
"ver": "1.0.4",
"uuid": "1d61e0de-aa80-4c46-ada7-0c543b8246b0",
"rawTextureUuid": "8b430d16-309f-4ac5-8c78-639e4d93709c",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 266,
"trimY": 51,
"width": 79,
"height": 517,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "cd385543-0e57-4679-9091-25d25808fe95",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"I_small": {
"ver": "1.0.4",
"uuid": "1c2ae4dc-dece-4b4d-88bc-17169722a253",
"rawTextureUuid": "cd385543-0e57-4679-9091-25d25808fe95",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 266,
"trimY": 51,
"width": 79,
"height": 516,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "bf34f9ed-e843-4af2-9caa-9a9d2fe7eaf6",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"J_big": {
"ver": "1.0.4",
"uuid": "0f775521-3dc4-4341-ba1f-ba9c8f5bd6b0",
"rawTextureUuid": "bf34f9ed-e843-4af2-9caa-9a9d2fe7eaf6",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 161,
"trimY": 51,
"width": 288,
"height": 516,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "b7679e10-b201-4a5c-bbde-7af8a3c68479",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"J_small": {
"ver": "1.0.4",
"uuid": "99654df0-e162-4297-b26b-84936bbfa4d7",
"rawTextureUuid": "b7679e10-b201-4a5c-bbde-7af8a3c68479",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 208,
"trimY": 0,
"width": 195,
"height": 619,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "0631bdbc-4727-4431-b852-acfce87bccbe",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"K_big": {
"ver": "1.0.4",
"uuid": "3aa3b130-dc48-43a0-96ef-c9f973bae567",
"rawTextureUuid": "0631bdbc-4727-4431-b852-acfce87bccbe",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 129,
"trimY": 48,
"width": 352,
"height": 522,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "45e02c27-d52a-4645-9000-f3455dd0a7ca",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"K_small": {
"ver": "1.0.4",
"uuid": "c9c86b49-98cc-49a2-8f90-89409cfb4910",
"rawTextureUuid": "45e02c27-d52a-4645-9000-f3455dd0a7ca",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 167,
"trimY": 48,
"width": 276,
"height": 522,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "59335206-8fbe-42bf-bcc9-ccb64a0683f4",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"L_big": {
"ver": "1.0.4",
"uuid": "4240f250-2ba2-4740-817c-8b3653192e05",
"rawTextureUuid": "59335206-8fbe-42bf-bcc9-ccb64a0683f4",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 150,
"trimY": 54,
"width": 311,
"height": 511,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "9f445a09-a5e6-45ff-96a1-c6082b87ac24",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"L_small": {
"ver": "1.0.4",
"uuid": "642963eb-d6c0-4e8c-98bc-232e567c4a9f",
"rawTextureUuid": "9f445a09-a5e6-45ff-96a1-c6082b87ac24",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 269,
"trimY": 50,
"width": 73,
"height": 519,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{ {
"ver": "2.3.5", "ver": "2.3.5",
"uuid": "18d07592-51a9-421e-8972-0f67b68d29e1", "uuid": "d92a7670-26a3-47e1-9b13-e877862a5050",
"type": "sprite", "type": "sprite",
"wrapMode": "clamp", "wrapMode": "clamp",
"filterMode": "bilinear", "filterMode": "bilinear",
"premultiplyAlpha": false, "premultiplyAlpha": false,
"genMipmaps": false, "genMipmaps": false,
"packable": true, "packable": true,
"width": 144, "width": 610,
"height": 144, "height": 619,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"icon": { "M_big": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "6fbc30a8-3c49-44ae-8ba4-7f56f385b78a", "uuid": "129c2733-f127-4a37-9348-e35854db4308",
"rawTextureUuid": "18d07592-51a9-421e-8972-0f67b68d29e1", "rawTextureUuid": "d92a7670-26a3-47e1-9b13-e877862a5050",
"trimType": "auto", "trimType": "auto",
"trimThreshold": 1, "trimThreshold": 1,
"rotated": false, "rotated": false,
"offsetX": 0, "offsetX": 0,
"offsetY": -0.5, "offsetY": 0,
"trimX": 3, "trimX": 39,
"trimY": 2, "trimY": 48,
"width": 138, "width": 532,
"height": 141, "height": 523,
"rawWidth": 144, "rawWidth": 610,
"rawHeight": 144, "rawHeight": 619,
"borderTop": 0, "borderTop": 0,
"borderBottom": 0, "borderBottom": 0,
"borderLeft": 0, "borderLeft": 0,
......
{
"ver": "2.3.5",
"uuid": "0d58e829-1e4d-446f-b3f5-3f3093938a8a",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"M_small": {
"ver": "1.0.4",
"uuid": "037f4cb8-434e-41cb-aed9-22e1c68721d5",
"rawTextureUuid": "0d58e829-1e4d-446f-b3f5-3f3093938a8a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 54,
"trimY": 125,
"width": 502,
"height": 369,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "a9271a2b-f24c-47e4-826e-e062afc991aa",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"N_big": {
"ver": "1.0.4",
"uuid": "d68c005e-2ee5-482e-b062-33db9bece282",
"rawTextureUuid": "a9271a2b-f24c-47e4-826e-e062afc991aa",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 97,
"trimY": 49,
"width": 416,
"height": 521,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "4bbf25a7-30c7-4def-876e-73df1352c8bf",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"N_small": {
"ver": "1.0.4",
"uuid": "bcc2349f-46b8-439d-a7d5-5be4976eeb14",
"rawTextureUuid": "4bbf25a7-30c7-4def-876e-73df1352c8bf",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 156,
"trimY": 125,
"width": 298,
"height": 368,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "645c536e-8537-4494-90b4-93d85712dca3",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"O_big": {
"ver": "1.0.4",
"uuid": "0e99d79b-f6ad-45db-b703-6ddac8ee293b",
"rawTextureUuid": "645c536e-8537-4494-90b4-93d85712dca3",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 94,
"trimY": 51,
"width": 422,
"height": 517,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "3b7d96c1-b318-42d7-b7bd-f676cac3eb2d",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"O_small": {
"ver": "1.0.4",
"uuid": "00460215-35e7-42f8-abaa-3c891d70d26a",
"rawTextureUuid": "3b7d96c1-b318-42d7-b7bd-f676cac3eb2d",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 127,
"trimY": 128,
"width": 356,
"height": 363,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "90613f2e-fd81-4a31-8fca-bde847eda235",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"P_big": {
"ver": "1.0.4",
"uuid": "40a184e8-343b-4578-bc49-d3f499e30e3d",
"rawTextureUuid": "90613f2e-fd81-4a31-8fca-bde847eda235",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 135,
"trimY": 56,
"width": 341,
"height": 507,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "eac15f79-6ab1-4dc5-bc10-9a8d1f0763d6",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"P_small": {
"ver": "1.0.4",
"uuid": "3c96ced0-057c-41c5-917b-db312e56a9b1",
"rawTextureUuid": "eac15f79-6ab1-4dc5-bc10-9a8d1f0763d6",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 139,
"trimY": 73,
"width": 332,
"height": 472,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "7d3dba21-080f-4600-923b-95f262693123",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"Q_big": {
"ver": "1.0.4",
"uuid": "540208be-5c84-4011-9fb8-9268f74dc776",
"rawTextureUuid": "7d3dba21-080f-4600-923b-95f262693123",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 91,
"trimY": 25,
"width": 428,
"height": 568,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "d0e41149-dea8-4b2e-815e-d35784295775",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"Q_small": {
"ver": "1.0.4",
"uuid": "7e3dfd30-113e-4781-a6b6-0a2648c966b4",
"rawTextureUuid": "d0e41149-dea8-4b2e-815e-d35784295775",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 139,
"trimY": 73,
"width": 332,
"height": 472,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "75637c84-d6b3-44e3-bba9-6814de3a003e",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"R_big": {
"ver": "1.0.4",
"uuid": "5ba52754-83cc-42ce-9d5d-caaa12583531",
"rawTextureUuid": "75637c84-d6b3-44e3-bba9-6814de3a003e",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 130,
"trimY": 52,
"width": 350,
"height": 514,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "ca80b74c-8efc-4f33-886c-c0bd3e1f7cdd",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"R_small": {
"ver": "1.0.4",
"uuid": "1145c844-f7bd-4e2a-a482-08771e0bd719",
"rawTextureUuid": "ca80b74c-8efc-4f33-886c-c0bd3e1f7cdd",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 206,
"trimY": 125,
"width": 199,
"height": 368,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "2ef11657-1503-4732-be4f-00ff561ded80",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"S_big": {
"ver": "1.0.4",
"uuid": "bdf13496-fabd-4093-93f8-11ed8364bcb9",
"rawTextureUuid": "2ef11657-1503-4732-be4f-00ff561ded80",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 134,
"trimY": 51,
"width": 343,
"height": 517,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "404338a3-d1dd-4520-af66-c032e944ce57",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"S_small": {
"ver": "1.0.4",
"uuid": "0f7e9c0d-f0e6-4ab9-9b5c-19984cec65d7",
"rawTextureUuid": "404338a3-d1dd-4520-af66-c032e944ce57",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 163,
"trimY": 122,
"width": 284,
"height": 374,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "57ccf33b-1c80-4425-a7a5-e9dc749318d3",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"T_big": {
"ver": "1.0.4",
"uuid": "d6b65e4a-f464-4140-ae9d-76b3b718e5ec",
"rawTextureUuid": "57ccf33b-1c80-4425-a7a5-e9dc749318d3",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 117,
"trimY": 53,
"width": 377,
"height": 513,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "2ba0ec23-e50b-400c-ac72-7bd4881411cd",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"T_small": {
"ver": "1.0.4",
"uuid": "4ae0d7f4-57ea-4d19-98e1-6ac7d1584c5b",
"rawTextureUuid": "2ba0ec23-e50b-400c-ac72-7bd4881411cd",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 180,
"trimY": 47,
"width": 251,
"height": 524,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "afcf57b2-f5b0-4939-b1b2-0552f6eab0f1",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"U_big": {
"ver": "1.0.4",
"uuid": "f93d3ec0-6ec4-4f9d-b3bc-a4fa10f02b12",
"rawTextureUuid": "afcf57b2-f5b0-4939-b1b2-0552f6eab0f1",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 122,
"trimY": 49,
"width": 367,
"height": 520,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "a6294297-a9d6-4aaf-9787-1493b6bb7477",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"U_small": {
"ver": "1.0.4",
"uuid": "a9163adc-7d0a-435a-ae6b-0d16926dac28",
"rawTextureUuid": "a6294297-a9d6-4aaf-9787-1493b6bb7477",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 156,
"trimY": 125,
"width": 298,
"height": 368,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "4e8ddae5-50dc-4688-bc00-5c9a1de5424c",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"V_big": {
"ver": "1.0.4",
"uuid": "91eaff37-cd48-44d6-9766-6df890b1a329",
"rawTextureUuid": "4e8ddae5-50dc-4688-bc00-5c9a1de5424c",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 107,
"trimY": 48,
"width": 397,
"height": 522,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{ {
"ver": "2.3.5", "ver": "2.3.5",
"uuid": "d582359e-924e-4ee9-9964-1fc4bb417e71", "uuid": "40962b18-5d9f-4f88-95a8-e1b9b5a8fa98",
"type": "sprite", "type": "sprite",
"wrapMode": "clamp", "wrapMode": "clamp",
"filterMode": "bilinear", "filterMode": "bilinear",
"premultiplyAlpha": false, "premultiplyAlpha": false,
"genMipmaps": false, "genMipmaps": false,
"packable": true, "packable": true,
"width": 61, "width": 610,
"height": 67, "height": 619,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"btn_right": { "V_small": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "e5a2dbaa-a677-4a32-90d7-a1b057d7fb59", "uuid": "7e8771be-8d66-457a-a149-a458b2ce8970",
"rawTextureUuid": "d582359e-924e-4ee9-9964-1fc4bb417e71", "rawTextureUuid": "40962b18-5d9f-4f88-95a8-e1b9b5a8fa98",
"trimType": "auto", "trimType": "auto",
"trimThreshold": 1, "trimThreshold": 1,
"rotated": false, "rotated": false,
"offsetX": -0.5, "offsetX": -0.5,
"offsetY": 0.5, "offsetY": 0.5,
"trimX": 0, "trimX": 146,
"trimY": 0, "trimY": 125,
"width": 60, "width": 317,
"height": 66, "height": 368,
"rawWidth": 61, "rawWidth": 610,
"rawHeight": 67, "rawHeight": 619,
"borderTop": 0, "borderTop": 0,
"borderBottom": 0, "borderBottom": 0,
"borderLeft": 0, "borderLeft": 0,
......
{
"ver": "2.3.5",
"uuid": "060bdc6e-6c7e-4ede-a8f9-b4963cc29bf5",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"W_big": {
"ver": "1.0.4",
"uuid": "f8ce3a23-630a-4d8a-a6a5-e08af597a07b",
"rawTextureUuid": "060bdc6e-6c7e-4ede-a8f9-b4963cc29bf5",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 0,
"trimY": 47,
"width": 610,
"height": 524,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "eee9ae67-9c92-4b0c-8a8e-001a9b031188",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"W_small": {
"ver": "1.0.4",
"uuid": "dc18bed8-5b56-4b19-b1e5-70eef0179881",
"rawTextureUuid": "eee9ae67-9c92-4b0c-8a8e-001a9b031188",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 37,
"trimY": 124,
"width": 536,
"height": 371,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "c25f8a40-bf07-4d16-908a-bac3afe172a9",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"X_big": {
"ver": "1.0.4",
"uuid": "b11346f1-d521-4571-b2d2-fc87f8a0ddab",
"rawTextureUuid": "c25f8a40-bf07-4d16-908a-bac3afe172a9",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 103,
"trimY": 46,
"width": 404,
"height": 527,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "e6577d27-8a6e-4da4-a6b4-d9b9c49324ef",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"X_small": {
"ver": "1.0.4",
"uuid": "f754762e-895b-4ca2-a8db-fefd99591892",
"rawTextureUuid": "e6577d27-8a6e-4da4-a6b4-d9b9c49324ef",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 143,
"trimY": 121,
"width": 325,
"height": 377,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "44c9ef96-5a82-4416-82b2-54814378b858",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"Y_big": {
"ver": "1.0.4",
"uuid": "cd2d553a-332e-4ffe-8a2d-0db35f679ae0",
"rawTextureUuid": "44c9ef96-5a82-4416-82b2-54814378b858",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 120,
"trimY": 49,
"width": 371,
"height": 521,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "f115cdbb-81f5-434a-94e5-b4dc55073fb8",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"Y_small": {
"ver": "1.0.4",
"uuid": "6d7b34a0-a247-4e0b-ac6a-05c24abc471d",
"rawTextureUuid": "f115cdbb-81f5-434a-94e5-b4dc55073fb8",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 139,
"trimY": 71,
"width": 332,
"height": 477,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "074abac0-75f2-43ec-b00c-cce7d1263cd4",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"Z_big": {
"ver": "1.0.4",
"uuid": "73e6637f-53ef-4707-9a53-534df20b8844",
"rawTextureUuid": "074abac0-75f2-43ec-b00c-cce7d1263cd4",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0.5,
"trimX": 128,
"trimY": 59,
"width": 355,
"height": 500,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "92c126a5-6fab-4ad5-a232-ae569516a732",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 610,
"height": 619,
"platformSettings": {},
"subMetas": {
"Z_small": {
"ver": "1.0.4",
"uuid": "5a952961-857b-4900-80c0-20da95961422",
"rawTextureUuid": "92c126a5-6fab-4ad5-a232-ae569516a732",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 159,
"trimY": 135,
"width": 292,
"height": 349,
"rawWidth": 610,
"rawHeight": 619,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
...@@ -3,6 +3,6 @@ ...@@ -3,6 +3,6 @@
"packages": "packages", "packages": "packages",
"name": "play", "name": "play",
"id": "9af72fd2-44a6-4131-8ea3-3e1b3fa22231", "id": "9af72fd2-44a6-4131-8ea3-3e1b3fa22231",
"version": "2.4.5", "version": "2.4.4",
"isNew": false "isNew": false
} }
\ No newline at end of file
{ {
"title": "play", "title": "play",
"packageName": "org.cocos2d.demo", "packageName": "org.cocos2d.demo",
"startScene": "57ea7c61-9b8b-498a-b024-c98ee9124beb", "startScene": "693eb20e-8b2b-40ca-aca5-9f087d6936ac",
"excludeScenes": [], "excludeScenes": [],
"includeSDKBox": false, "includeSDKBox": false,
"orientation": { "orientation": {
......
import express from "express";
import os from "os";
import readline from "readline";
import { build } from "./buildCocos.js";
const networkInfo = os.networkInterfaces();
let host = '';
for (const infos of Object.values(networkInfo)) {
for (const info of infos) {
if (info.family == 'IPv4') {
if (info.address.split('.')[0] != "127") {
host = info.address;
}
}
}
}
var app = express();
app.use('/publish', express.static('publish'));
app.get('/', function (req, res) {
res.send('Hello World');
})
let port = '';
var server = app.listen(8081, function () {
port = server.address().port
console.log("测试服务已启动:%s:%s", host, port)
})
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
rl.on('line', async (str) => {
if (str.trim() == 'build') {
await build();
console.log("测试服务已启动:%s:%s", host, port)
console.log('输入 build 构建。')
} else {
console.log("测试服务已启动:%s:%s", host, port)
console.log('输入 build 构建。')
}
})
cd ../form & npm install & npm run publish & cd ../play & CocosCreator.exe --path "./" --build "platform=web-desktop;debug=true" --force & cd ../publish & node build.js
pause
let fs = require('fs'); import { build } from "./buildCocos.js";
const compressing = require('compressing'); await build();
\ No newline at end of file
function fix2(num) {
if (num >= 10) {
return '' + num;
} else {
return '0' + num;
}
}
async function copyDir(src, dst) {
const exists = await fs.existsSync(dst);
if (!exists) {
await fs.mkdirSync(dst);
}
//读取目录
const paths = await fs.readdirSync(src);
for (let i = 0; i < paths.length; i++) {
let path = paths[i];
const newSrc = `${src}/${path}`;
const newDst = `${dst}/${path}`;
const st = await fs.statSync(newSrc);
if (st.isFile()) {
console.log('copy: ' + newDst);
const data = await fs.readFileSync(newSrc);
await fs.writeFileSync(newDst, data);
} else if (st.isDirectory()) {
copyDir(newSrc, newDst);
}
}
}
async function removeDir(src) {
const exists = await fs.existsSync(src);
if (!exists) {
return;
}
//读取目录
const st = await fs.statSync(src);
console.log(st);
const paths = await fs.readdirSync(src);
for (let i = 0; i < paths.length; i++) {
let path = paths[i];
const newSrc = `${src}/${path}`;
const st = await fs.statSync(newSrc);
if (st.isFile()) {
console.log('remove: ' + newSrc);
await fs.unlinkSync(newSrc);
} else if (st.isDirectory()) {
await removeDir(newSrc);
}
}
await fs.rmdirSync(src);
}
async function main() {
let date = new Date();
let fileName = `Release_${date.getFullYear()}${fix2(date.getMonth() + 1)}${fix2(date.getDate())} `;
fileName += `${fix2(date.getHours())}-${fix2(date.getMinutes())}-${fix2(date.getSeconds())}`;
await removeDir('./publish/play');
await removeDir('./publish/form');
await copyDir('../play/build/web-desktop', './publish/play');
const data = await fs.readFileSync('./index.html');
await fs.writeFileSync('./publish/play/index.html', data);
compressing.zip.uncompress('../form/publish/form.zip', './publish/form')
.then(() => {
const tarStream = new compressing.zip.Stream();
tarStream.addEntry('./publish/play');
tarStream.addEntry('./publish/form');
const destStream = fs.createWriteStream(`publish/${fileName}.zip`);
tarStream.pipe(destStream);
console.log('打包完成!');
});
}
main();
\ No newline at end of file
#!/bin/sh
cd publish
set -e
node build_check.js
set +e
cd ../form
npm install
npm run publish
cd ../publish
node build_step_0.js
cd ../play
/Applications/CocosCreator/Creator/2.4.0/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=web-desktop;debug=true" --force
echo "生成 web desktop 完成~!"
cd ../publish
node build_step_1.js
echo "build_step_1 完成~!"
cd ../play
/Applications/CocosCreator/Creator/2.4.4/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=ios;debug=false;md5Cache=true;buildPath=build_ios;encryptJs=true;xxteaKey=6bbfce23-28b4-4a;zipCompressJs=true" --force
echo "生成 ios 完成~!"
cd ../publish
node build_step_2.js
echo "build_step_2 完成~!"
cd ../play
/Applications/CocosCreator/Creator/2.4.4/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=ios;debug=false;md5Cache=true;buildPath=build_android;appABIs=['armeabi-v7a','x86','x86_64','arm64-v8a'];encryptJs=true;xxteaKey=6bbfce23-28b4-4a;zipCompressJs=true" --force
echo "生成 android 完成~!"
cd ../publish
node build_step_3.js
echo "build_step_3 完成~!"
cd ../play
/Applications/CocosCreator/Creator/2.4.4/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=web-desktop;debug=false;buildPath=build_web_desktop" --force
echo "生成 web-desktop 完成~!"
cd ../publish
node build_step_4.js
echo "build_step_4 完成~!"
\ No newline at end of file
import { spawn } from "child_process";
import fs from "fs";
import compressing from 'compressing';
import { v4, parse } from 'uuid';
import { Base64 } from 'js-base64';
import { copyDir, removeDir, fix2 } from "./utils.js";
export async function build() {
const startTime = new Date().getTime();
// 构建前检查
const projectName = build_check();
// 清理旧文件
await removeDir('./publish/play');
await removeDir('./publish/ios');
await removeDir('./publish/android');
await removeDir('./publish/web_desktop');
// await removeDir('./publish/form');
// // 构建form
// await buildForm();
// 替换uuid
replaceUuids();
// 构建play
// 改设置为非bundle
changeSettingToWebDesktop();
// 构建web_desktop
await buildWebDesktop();
await copyDir('../play/build/web-desktop', 'publish/play');
replaceIndexHtml();
console.log('构建 web desktop 成功!');
// 改设置为bundle
changeSettingsToBundle();
await buildAndroidBundle();
await copyDir('../play/build_android/jsb-link/remote', 'publish/android');
console.log('构建 android bundle 成功!');
await buildIosBundle();
await copyDir('../play/build_ios/jsb-link/remote', 'publish/ios');
console.log('构建 ios bundle 成功!');
await buildWebBundle();
await copyDir(`../play/build_web_desktop/web-desktop/assets/${projectName}`, 'publish/web_desktop');
console.log('构建 web bundle 成功!');
// 改设置为非bundle
changeSettingToWebDesktop();
createConfigFile(projectName);
compressAll(projectName);
const endTime = new Date().getTime();
const duration = new Date(endTime - startTime);
console.log(`打包完成!`);
console.log(`用时${duration.getMinutes()}${duration.getSeconds()}秒。`);
}
async function buildForm() {
const paths = fs.readdirSync('../form');
if (!paths.includes('tsconfig.json')) {
await copyDir('../form/src', 'publish/form');
return;
}
if (process.platform == 'win32') {
await execCmd('npm.cmd', ['install'], '../form');
} else {
await execCmd('npm', ['install'], '../form');
}
if (process.platform == 'win32') {
await execCmd('npm.cmd', ['run', 'publish'], '../form');
} else {
await execCmd('npm', ['run', 'publish'], '../form');
}
await compressing.zip.uncompress('../form/publish/form.zip', './publish/form');
}
function execCmd(cmd, params, path) {
return new Promise((resolve, reject) => {
const buffer = spawn(
cmd,
params,
{ cwd: path }
);
buffer.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
buffer.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
buffer.on('close', (code) => {
console.log(`child process exited with code ${code}`);
resolve();
});
});
}
const creatorBasePath = 'C:\\CocosDashboard_1.0.6\\resources\\.editors\\Creator';
export function buildWebDesktop() {
return new Promise((resolve, reject) => {
const buffer = spawn(
`${creatorBasePath}\\2.4.0\\CocosCreator.exe`,
['--path', './', '--build', 'platform=web-desktop;debug=true', '--force'],
{ cwd: '../play' }
);
buffer.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
buffer.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
buffer.on('close', (code) => {
console.log(`child process exited with code ${code}`);
resolve();
});
});
}
export function buildAndroidBundle() {
return new Promise((resolve, reject) => {
const buffer = spawn(
`${creatorBasePath}\\2.4.4\\CocosCreator.exe`,
['--path', './', '--build', "platform=ios;debug=false;md5Cache=true;buildPath=build_android;appABIs=['armeabi-v7a','x86','x86_64','arm64-v8a'];encryptJs=true;xxteaKey=6bbfce23-28b4-4a;zipCompressJs=true", '--force'],
{ cwd: '../play' }
);
buffer.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
buffer.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
buffer.on('close', (code) => {
console.log(`child process exited with code ${code}`);
resolve();
});
});
}
export function buildIosBundle() {
return new Promise((resolve, reject) => {
const buffer = spawn(
`${creatorBasePath}\\2.4.4\\CocosCreator.exe`,
['--path', './', '--build', "platform=ios;debug=false;md5Cache=true;buildPath=build_ios;encryptJs=true;xxteaKey=6bbfce23-28b4-4a;zipCompressJs=true", '--force'],
{ cwd: '../play' }
);
buffer.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
buffer.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
buffer.on('close', (code) => {
console.log(`child process exited with code ${code}`);
resolve();
});
});
}
export function buildWebBundle() {
return new Promise((resolve, reject) => {
const buffer = spawn(
`${creatorBasePath}\\2.4.4\\CocosCreator.exe`,
['--path', './', '--build', "platform=web-desktop;debug=false;buildPath=build_web_desktop", '--force'],
{ cwd: '../play' }
);
buffer.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
buffer.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
buffer.on('close', (code) => {
console.log(`child process exited with code ${code}`);
resolve();
});
});
}
export function createConfigFile(projectName) {
const androidPaths = fs.readdirSync(`publish/android/${projectName}`);
const androidConfigFileName = androidPaths.find(path => path.indexOf('config') == 0);
const androidVersion = androidConfigFileName.split('.')[1];
const iosPaths = fs.readdirSync(`publish/ios/${projectName}`);
const iosConfigFileName = iosPaths.find(path => path.indexOf('config') == 0);
const iosVersion = iosConfigFileName.split('.')[1];
const config = {
"ios": {
"sceneName": projectName,
"version": iosVersion
},
"android": {
"sceneName": projectName,
"version": androidVersion
}
}
fs.writeFileSync('publish/config.json', JSON.stringify(config));
}
export function compressAll(projectName) {
const tarStream = new compressing.zip.Stream();
tarStream.addEntry('./publish/play');
tarStream.addEntry('./publish/form');
tarStream.addEntry('./publish/ios');
tarStream.addEntry('./publish/android');
tarStream.addEntry('./publish/web_desktop');
tarStream.addEntry('./publish/config.json');
const destStream = fs.createWriteStream(`publish/${getReleaseFileName(projectName)}.zip`);
tarStream.pipe(destStream);
}
function getReleaseFileName(projectName) {
let date = new Date();
let fileName = `${projectName}_${date.getFullYear()}${fix2(date.getMonth() + 1)}${fix2(date.getDate())} `;
fileName += `${fix2(date.getHours())}-${fix2(date.getMinutes())}-${fix2(date.getSeconds())}`;
return fileName;
}
export function build_check() {
const dirNames = process.cwd().split(/\/|\\/);
const projectName = dirNames[dirNames.length - 2];
const path = '../play/assets'
let folderName = '';
fs.readdirSync(path).find(fileName => {
const st = fs.statSync(`${path}/${fileName}`);
if (st.isDirectory()) {
folderName = fileName;
}
});
if (projectName != folderName) {
throw (`项目名(${projectName})与bundle文件夹名(${folderName})不相同`);
}
let same = false;
const files = fs.readdirSync(`${path}/${folderName}/scene`);
files.forEach(fileName => {
fileName.split('.').forEach((str, idx, arr) => {
if (str == 'fire') {
const sceneName = arr[idx - 1];
if (folderName == sceneName) {
same = true;
}
}
})
});
if (!same) {
throw (`bundle文件夹名称(${folderName})与scene名称不相同`);
}
return projectName;
}
function getFolderName(path) {
let folderName = '';
fs.readdirSync(path).find(fileName => {
const st = fs.statSync(`${path}/${fileName}`);
if (st.isDirectory()) {
folderName = fileName;
}
});
return folderName;
}
function editFolderMeta(path, folderName, isBundle) {
const metaPath = `${path}/${folderName}.meta`;
const metaDataStr = fs.readFileSync(metaPath);
const metaData = JSON.parse(metaDataStr);
metaData.isBundle = isBundle;
metaData.isRemoteBundle = {
ios: isBundle,
android: isBundle
};
fs.writeFileSync(metaPath, JSON.stringify(metaData));
}
export function changeSettingToWebDesktop() {
const path = '../play/assets'
const folderName = getFolderName(path);
editFolderMeta(path, folderName, false);
}
export function changeSettingsToBundle() {
const path = '../play/assets'
const folderName = getFolderName(path);
editFolderMeta(path, folderName, true);
}
export function replaceUuids() {
console.log('build_step_0 开始~!');
function getFolderName(path) {
let folderName = '';
fs.readdirSync(path).find(fileName => {
const st = fs.statSync(`${path}/${fileName}`);
if (st.isDirectory()) {
folderName = fileName;
}
});
return folderName;
}
function editFolderMeta(path, folderName) {
const metaPath = `${path}/${folderName}.meta`;
const metaDataStr = fs.readFileSync(metaPath);
const metaData = JSON.parse(metaDataStr);
metaData.isBundle = false;
fs.writeFileSync(metaPath, JSON.stringify(metaData));
}
function fileReplace(path, replaceStr, newStr) {
const fileStr = fs.readFileSync(path);
const newFileStr = fileStr.toString().replace(new RegExp(replaceStr.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), 'g'), newStr);
fs.writeFileSync(path, newFileStr);
}
const path = '../play/assets'
const folderName = getFolderName(path);
editFolderMeta(path, folderName);
const oldFireUuid = '57ea7c61-9b8b-498a-b024-c98ee9124beb';
const newFireUuid = v4();
fileReplace(`../play/assets/${folderName}/scene/${folderName}.fire.meta`, oldFireUuid, newFireUuid);
fileReplace(`../play/assets/${folderName}/scene/${folderName}.fire`, oldFireUuid, newFireUuid);
fileReplace('../play/settings/builder.json', oldFireUuid, newFireUuid);
function getShortUuid(uuid) {
const bytes = parse(uuid).subarray(1);
return uuid.substring(0, 5) + Base64.fromUint8Array(bytes).substring(2);
}
const oldJsUuid = 'f4ede462-f8d7-4069-ba80-915611c058ca';
const oldJsShortUuid = 'f4edeRi+NdAabqAkVYRwFjK';
const oldJsId = 'e687yyoRBIzZAOVRL8Sseh';
const newJsUuid = v4();
const newJsShortUuid = getShortUuid(newJsUuid);
const newJsId = v4().replace(/-/g, '').substring(0, oldJsId.length);
fileReplace(`../play/assets/${folderName}/scene/${folderName}.js.meta`, oldJsUuid, newJsUuid);
fileReplace(`../play/assets/${folderName}/scene/${folderName}.fire`, oldFireUuid, newFireUuid);
fileReplace(`../play/assets/${folderName}/scene/${folderName}.fire`, oldJsShortUuid, newJsShortUuid);
fileReplace(`../play/assets/${folderName}/scene/${folderName}.fire`, oldJsId, newJsId);
console.log('build_step_0 完成~!');
}
export function replaceIndexHtml() {
const data = fs.readFileSync('./index.html');
fs.writeFileSync('./publish/play/index.html', data);
}
let fs = require('fs');
const dirNames = __dirname.split('/');
const projectName = dirNames[dirNames.length - 2];
const path = '../play/assets'
let folderName = '';
fs.readdirSync(path).find(fileName => {
const st = fs.statSync(`${path}/${fileName}`);
if (st.isDirectory()) {
folderName = fileName;
}
});
if (projectName != folderName) {
throw (`项目名(${projectName})与bundle文件夹名(${folderName})不相同`);
}
let same = false;
const files = fs.readdirSync(`${path}/${folderName}/scene`);
files.forEach(fileName => {
fileName.split('.').forEach((str, idx, arr) => {
if (str == 'fire') {
const sceneName = arr[idx - 1];
if (folderName == sceneName) {
same = true;
}
}
})
});
if (!same) {
throw (`bundle文件夹名称(${folderName})与scene名称不相同`);
}
\ No newline at end of file
let fs = require('fs');
const path = '../play/assets'
let folderName = '';
fs.readdirSync(path).find(fileName => {
const st = fs.statSync(`${path}/${fileName}`);
if (st.isDirectory()) {
folderName = fileName;
}
});
const metaPath = `${path}/${folderName}.meta`;
const metaDataStr = fs.readFileSync(metaPath);
const metaData = JSON.parse(metaDataStr);
metaData.isBundle = false;
fs.writeFileSync(metaPath, JSON.stringify(metaData));
const { removeDir, copyDir, fix2 } = require('./utils');
const compressing = require('compressing');
let fs = require('fs');
async function main() {
await removeDir('./publish/play');
await removeDir('./publish/form');
await copyDir('../play/build/web-desktop', './publish/play');
compressing.zip.uncompress('../form/publish/form.zip', './publish/form');
const data = await fs.readFileSync('./index.html');
await fs.writeFileSync('./publish/play/index.html', data);
await removeDir('../play/build/web-desktop');
const path = '../play/assets'
let folderName = '';
fs.readdirSync(path).find(fileName => {
const st = fs.statSync(`${path}/${fileName}`);
if (st.isDirectory()) {
folderName = fileName;
}
});
const metaPath = `${path}/${folderName}.meta`;
const metaDataStr = fs.readFileSync(metaPath);
const metaData = JSON.parse(metaDataStr);
metaData.isBundle = true;
metaData.isRemoteBundle = {
ios: true,
android: true
};
fs.writeFileSync(metaPath, JSON.stringify(metaData));
}
main();
\ No newline at end of file
const { removeDir, copyDir, fix2 } = require('./utils');
const compressing = require('compressing');
async function main() {
await removeDir('./publish/ios');
await copyDir('../play/build_ios/jsb-link/remote', './publish/ios');
await removeDir('../play/build_ios/jsb-link');
}
main();
\ No newline at end of file
const { removeDir, copyDir, fix2 } = require('./utils');
const compressing = require('compressing');
let fs = require('fs');
async function main() {
await removeDir('./publish/android');
await copyDir('../play/build_android/jsb-link/remote', './publish/android');
await removeDir('../play/build_android/jsb-link');
}
main();
\ No newline at end of file
const { removeDir, copyDir, fix2 } = require('./utils');
const compressing = require('compressing');
let fs = require('fs');
async function main() {
await removeDir('./publish/web_desktop');
const projectName = await getBundleName('../play/build_web_desktop/web-desktop/assets');
await copyDir(`../play/build_web_desktop/web-desktop/assets/${projectName}`, './publish/web_desktop');
await removeDir('../play/build_web_desktop');
const bundleData = {
ios: await getBundleData('./publish/ios'),
android: await getBundleData('./publish/android'),
}
fs.writeFileSync('./publish/config.json', JSON.stringify(bundleData));
const tarStream = new compressing.zip.Stream();
tarStream.addEntry('./publish/play');
tarStream.addEntry('./publish/form');
tarStream.addEntry('./publish/ios');
tarStream.addEntry('./publish/android');
tarStream.addEntry('./publish/web_desktop');
tarStream.addEntry('./publish/config.json');
const destStream = fs.createWriteStream(`publish/${getReleaseFileName()}.zip`);
tarStream.pipe(destStream);
console.log('打包完成!');
}
async function getBundleName(path) {
const paths = fs.readdirSync(path);
return paths.find(path => path != 'internal' && path !='main');
}
async function getBundleData(path) {
const bundleData = {
sceneName: '',
version: '',
}
const paths = fs.readdirSync(path);
bundleData.sceneName = paths[0];
const files = fs.readdirSync(path + '/' + bundleData.sceneName);
files.forEach(fileName => {
fileName.split('.').forEach((str, idx, arr) => {
if (str == 'config') {
bundleData.version = arr[idx + 1];
}
})
});
return bundleData;
}
function getReleaseFileName() {
let date = new Date();
let fileName = `Release_${date.getFullYear()}${fix2(date.getMonth() + 1)}${fix2(date.getDate())} `;
fileName += `${fix2(date.getHours())}-${fix2(date.getMinutes())}-${fix2(date.getSeconds())}`;
return fileName;
}
main();
\ No newline at end of file
{ {
"name": "publish", "name": "publish",
"version": "1.0.0", "version": "1.0.0",
"lockfileVersion": 1, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": {
"": {
"name": "publish",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"child_process": "^1.0.2",
"compressing": "^1.5.1",
"express": "^4.17.1",
"js-base64": "^3.7.2",
"uuid": "^8.3.2"
}
},
"node_modules/accepts": {
"version": "1.3.7",
"resolved": "https://registry.nlark.com/accepts/download/accepts-1.3.7.tgz",
"integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
"dependencies": {
"mime-types": "~2.1.24",
"negotiator": "0.6.2"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.nlark.com/array-flatten/download/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
"node_modules/bl": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
"integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
"dependencies": {
"readable-stream": "^2.3.5",
"safe-buffer": "^5.1.1"
}
},
"node_modules/body-parser": {
"version": "1.19.0",
"resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1615817950402&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbody-parser%2Fdownload%2Fbody-parser-1.19.0.tgz",
"integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=",
"dependencies": {
"bytes": "3.1.0",
"content-type": "~1.0.4",
"debug": "2.6.9",
"depd": "~1.1.2",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"on-finished": "~2.3.0",
"qs": "6.7.0",
"raw-body": "2.4.0",
"type-is": "~1.6.17"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/body-parser/node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz",
"integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/buffer-alloc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"dependencies": {
"buffer-alloc-unsafe": "^1.1.0",
"buffer-fill": "^1.0.0"
}
},
"node_modules/buffer-alloc-unsafe": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
},
"node_modules/buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"engines": {
"node": "*"
}
},
"node_modules/buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
},
"node_modules/bytes": {
"version": "3.1.0",
"resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz",
"integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/child_process": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/child_process/download/child_process-1.0.2.tgz",
"integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o="
},
"node_modules/compressing": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/compressing/-/compressing-1.5.1.tgz",
"integrity": "sha512-1AGBR4Vh0/rpPKSXHoV9cerLo0CUlAhZ/xsJqU3a9+2cbSaFjWT3fk2MIGkCnbpk//DGWrcWw03rhKFQrA9RQw==",
"dependencies": {
"flushwritable": "^1.0.0",
"get-ready": "^1.0.0",
"iconv-lite": "^0.5.0",
"mkdirp": "^0.5.1",
"pump": "^3.0.0",
"streamifier": "^0.1.1",
"tar-stream": "^1.5.2",
"yauzl": "^2.7.0",
"yazl": "^2.4.2"
},
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
"integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=",
"dependencies": {
"safe-buffer": "5.1.2"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/content-disposition/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
"integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
},
"node_modules/content-type": {
"version": "1.0.4",
"resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
"integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie": {
"version": "0.4.0",
"resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz",
"integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.nlark.com/cookie-signature/download/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/download/debug-2.6.9.tgz",
"integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
"dependencies": {
"ms": "2.0.0"
}
},
"node_modules/depd": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/destroy": {
"version": "1.0.4",
"resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dependencies": {
"once": "^1.4.0"
}
},
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.nlark.com/etag/download/etag-1.8.1.tgz?cache=0&sync_timestamp=1618847044821&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fetag%2Fdownload%2Fetag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/express": {
"version": "4.17.1",
"resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz",
"integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=",
"dependencies": {
"accepts": "~1.3.7",
"array-flatten": "1.1.1",
"body-parser": "1.19.0",
"content-disposition": "0.5.3",
"content-type": "~1.0.4",
"cookie": "0.4.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "~1.1.2",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.5",
"qs": "6.7.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.1.2",
"send": "0.17.1",
"serve-static": "1.14.1",
"setprototypeof": "1.1.1",
"statuses": "~1.5.0",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"engines": {
"node": ">= 0.10.0"
}
},
"node_modules/express/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
"integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
},
"node_modules/fd-slicer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
"dependencies": {
"pend": "~1.2.0"
}
},
"node_modules/finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz",
"integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=",
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"statuses": "~1.5.0",
"unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/flushwritable": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz",
"integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg="
},
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503499867&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz",
"integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.nlark.com/fresh/download/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
},
"node_modules/get-ready": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/get-ready/-/get-ready-1.0.0.tgz",
"integrity": "sha1-+RgX8emt7P6hOlYq38jeiDqzR4I="
},
"node_modules/http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmmirror.com/http-errors/download/http-errors-1.7.2.tgz?cache=0&sync_timestamp=1636932182141&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.2.tgz",
"integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/http-errors/node_modules/inherits": {
"version": "2.0.3",
"resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"node_modules/iconv-lite": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz",
"integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.nlark.com/ipaddr.js/download/ipaddr.js-1.9.1.tgz",
"integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"node_modules/js-base64": {
"version": "3.7.2",
"resolved": "https://registry.npmmirror.com/js-base64/download/js-base64-3.7.2.tgz",
"integrity": "sha1-gW0R2BqK/yQWA9Gc5XYeE+Qdd0U="
},
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.nlark.com/media-typer/download/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.nlark.com/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
},
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmmirror.com/mime/download/mime-1.6.0.tgz",
"integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/mime-db": {
"version": "1.51.0",
"resolved": "https://registry.npmmirror.com/mime-db/download/mime-db-1.51.0.tgz?cache=0&sync_timestamp=1636425960296&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-db%2Fdownload%2Fmime-db-1.51.0.tgz",
"integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.34",
"resolved": "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.34.tgz?cache=0&sync_timestamp=1636432302620&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.34.tgz",
"integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
"dependencies": {
"mime-db": "1.51.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"node_modules/mkdirp": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dependencies": {
"minimist": "^1.2.5"
},
"bin": {
"mkdirp": "bin/cmd.js"
}
},
"node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/download/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"node_modules/negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
"integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz?cache=0&sync_timestamp=1614930634590&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fon-finished%2Fdownload%2Fon-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"dependencies": {
"ee-first": "1.1.1"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz",
"integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"node_modules/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
},
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz",
"integrity": "sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=",
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"node_modules/qs": {
"version": "6.7.0",
"resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz",
"integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
"engines": {
"node": ">=0.6"
}
},
"node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.nlark.com/range-parser/download/range-parser-1.2.1.tgz",
"integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/raw-body": {
"version": "2.4.0",
"resolved": "https://registry.nlark.com/raw-body/download/raw-body-2.4.0.tgz",
"integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
"dependencies": {
"bytes": "3.1.0",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/raw-body/node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz",
"integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/readable-stream": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"node_modules/readable-stream/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/send": {
"version": "0.17.1",
"resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz",
"integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=",
"dependencies": {
"debug": "2.6.9",
"depd": "~1.1.2",
"destroy": "~1.0.4",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
"http-errors": "~1.7.2",
"mime": "1.6.0",
"ms": "2.1.1",
"on-finished": "~2.3.0",
"range-parser": "~1.2.1",
"statuses": "~1.5.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/send/node_modules/ms": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/ms/download/ms-2.1.1.tgz",
"integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo="
},
"node_modules/serve-static": {
"version": "1.14.1",
"resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz",
"integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=",
"dependencies": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.17.1"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/setprototypeof": {
"version": "1.1.1",
"resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz",
"integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM="
},
"node_modules/statuses": {
"version": "1.5.0",
"resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1609654066899&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/streamifier": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz",
"integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=",
"engines": {
"node": ">=0.10"
}
},
"node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/string_decoder/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/tar-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
"integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
"dependencies": {
"bl": "^1.0.0",
"buffer-alloc": "^1.2.0",
"end-of-stream": "^1.0.0",
"fs-constants": "^1.0.0",
"readable-stream": "^2.3.0",
"to-buffer": "^1.1.1",
"xtend": "^4.0.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/to-buffer": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
"integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
},
"node_modules/toidentifier": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/toidentifier/download/toidentifier-1.0.0.tgz?cache=0&sync_timestamp=1636938521998&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ftoidentifier%2Fdownload%2Ftoidentifier-1.0.0.tgz",
"integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=",
"engines": {
"node": ">=0.6"
}
},
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz",
"integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmmirror.com/uuid/download/uuid-8.3.2.tgz",
"integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"engines": {
"node": ">=0.4"
}
},
"node_modules/yauzl": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
"dependencies": {
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
}
},
"node_modules/yazl": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
"integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
"dependencies": {
"buffer-crc32": "~0.2.3"
}
}
},
"dependencies": { "dependencies": {
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.nlark.com/accepts/download/accepts-1.3.7.tgz",
"integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
"requires": {
"mime-types": "~2.1.24",
"negotiator": "0.6.2"
}
},
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.nlark.com/array-flatten/download/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
"bl": { "bl": {
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
...@@ -13,6 +807,33 @@ ...@@ -13,6 +807,33 @@
"safe-buffer": "^5.1.1" "safe-buffer": "^5.1.1"
} }
}, },
"body-parser": {
"version": "1.19.0",
"resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1615817950402&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbody-parser%2Fdownload%2Fbody-parser-1.19.0.tgz",
"integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=",
"requires": {
"bytes": "3.1.0",
"content-type": "~1.0.4",
"debug": "2.6.9",
"depd": "~1.1.2",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"on-finished": "~2.3.0",
"qs": "6.7.0",
"raw-body": "2.4.0",
"type-is": "~1.6.17"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz",
"integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
}
}
},
"buffer-alloc": { "buffer-alloc": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
...@@ -37,6 +858,16 @@ ...@@ -37,6 +858,16 @@
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
}, },
"bytes": {
"version": "3.1.0",
"resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz",
"integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY="
},
"child_process": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/child_process/download/child_process-1.0.2.tgz",
"integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o="
},
"compressing": { "compressing": {
"version": "1.5.1", "version": "1.5.1",
"resolved": "https://registry.npmjs.org/compressing/-/compressing-1.5.1.tgz", "resolved": "https://registry.npmjs.org/compressing/-/compressing-1.5.1.tgz",
...@@ -53,11 +884,69 @@ ...@@ -53,11 +884,69 @@
"yazl": "^2.4.2" "yazl": "^2.4.2"
} }
}, },
"content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
"integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=",
"requires": {
"safe-buffer": "5.1.2"
},
"dependencies": {
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
"integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
}
}
},
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
"integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js="
},
"cookie": {
"version": "0.4.0",
"resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz",
"integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo="
},
"cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.nlark.com/cookie-signature/download/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
}, },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/download/debug-2.6.9.tgz",
"integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
"requires": {
"ms": "2.0.0"
}
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
"destroy": {
"version": "1.0.4",
"resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"end-of-stream": { "end-of-stream": {
"version": "1.4.4", "version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
...@@ -66,6 +955,60 @@ ...@@ -66,6 +955,60 @@
"once": "^1.4.0" "once": "^1.4.0"
} }
}, },
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"etag": {
"version": "1.8.1",
"resolved": "https://registry.nlark.com/etag/download/etag-1.8.1.tgz?cache=0&sync_timestamp=1618847044821&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fetag%2Fdownload%2Fetag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
"express": {
"version": "4.17.1",
"resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz",
"integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=",
"requires": {
"accepts": "~1.3.7",
"array-flatten": "1.1.1",
"body-parser": "1.19.0",
"content-disposition": "0.5.3",
"content-type": "~1.0.4",
"cookie": "0.4.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "~1.1.2",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.5",
"qs": "6.7.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.1.2",
"send": "0.17.1",
"serve-static": "1.14.1",
"setprototypeof": "1.1.1",
"statuses": "~1.5.0",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"dependencies": {
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
"integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
}
}
},
"fd-slicer": { "fd-slicer": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
...@@ -74,11 +1017,35 @@ ...@@ -74,11 +1017,35 @@
"pend": "~1.2.0" "pend": "~1.2.0"
} }
}, },
"finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz",
"integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=",
"requires": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"statuses": "~1.5.0",
"unpipe": "~1.0.0"
}
},
"flushwritable": { "flushwritable": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz", "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz",
"integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg=" "integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg="
}, },
"forwarded": {
"version": "0.2.0",
"resolved": "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503499867&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz",
"integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE="
},
"fresh": {
"version": "0.5.2",
"resolved": "https://registry.nlark.com/fresh/download/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"fs-constants": { "fs-constants": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
...@@ -89,6 +1056,25 @@ ...@@ -89,6 +1056,25 @@
"resolved": "https://registry.npmjs.org/get-ready/-/get-ready-1.0.0.tgz", "resolved": "https://registry.npmjs.org/get-ready/-/get-ready-1.0.0.tgz",
"integrity": "sha1-+RgX8emt7P6hOlYq38jeiDqzR4I=" "integrity": "sha1-+RgX8emt7P6hOlYq38jeiDqzR4I="
}, },
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmmirror.com/http-errors/download/http-errors-1.7.2.tgz?cache=0&sync_timestamp=1636932182141&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.2.tgz",
"integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
},
"dependencies": {
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
}
}
},
"iconv-lite": { "iconv-lite": {
"version": "0.5.2", "version": "0.5.2",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz",
...@@ -102,11 +1088,54 @@ ...@@ -102,11 +1088,54 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
}, },
"ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.nlark.com/ipaddr.js/download/ipaddr.js-1.9.1.tgz",
"integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM="
},
"isarray": { "isarray": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
}, },
"js-base64": {
"version": "3.7.2",
"resolved": "https://registry.npmmirror.com/js-base64/download/js-base64-3.7.2.tgz",
"integrity": "sha1-gW0R2BqK/yQWA9Gc5XYeE+Qdd0U="
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.nlark.com/media-typer/download/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.nlark.com/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
},
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npmmirror.com/mime/download/mime-1.6.0.tgz",
"integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE="
},
"mime-db": {
"version": "1.51.0",
"resolved": "https://registry.npmmirror.com/mime-db/download/mime-db-1.51.0.tgz?cache=0&sync_timestamp=1636425960296&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-db%2Fdownload%2Fmime-db-1.51.0.tgz",
"integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="
},
"mime-types": {
"version": "2.1.34",
"resolved": "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.34.tgz?cache=0&sync_timestamp=1636432302620&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.34.tgz",
"integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
"requires": {
"mime-db": "1.51.0"
}
},
"minimist": { "minimist": {
"version": "1.2.5", "version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
...@@ -120,6 +1149,24 @@ ...@@ -120,6 +1149,24 @@
"minimist": "^1.2.5" "minimist": "^1.2.5"
} }
}, },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/download/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
"integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs="
},
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz?cache=0&sync_timestamp=1614930634590&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fon-finished%2Fdownload%2Fon-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"requires": {
"ee-first": "1.1.1"
}
},
"once": { "once": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
...@@ -128,6 +1175,16 @@ ...@@ -128,6 +1175,16 @@
"wrappy": "1" "wrappy": "1"
} }
}, },
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz",
"integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ="
},
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"pend": { "pend": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
...@@ -138,6 +1195,15 @@ ...@@ -138,6 +1195,15 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
}, },
"proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz",
"integrity": "sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=",
"requires": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
}
},
"pump": { "pump": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
...@@ -147,6 +1213,37 @@ ...@@ -147,6 +1213,37 @@
"once": "^1.3.1" "once": "^1.3.1"
} }
}, },
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz",
"integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw="
},
"range-parser": {
"version": "1.2.1",
"resolved": "https://registry.nlark.com/range-parser/download/range-parser-1.2.1.tgz",
"integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE="
},
"raw-body": {
"version": "2.4.0",
"resolved": "https://registry.nlark.com/raw-body/download/raw-body-2.4.0.tgz",
"integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
"requires": {
"bytes": "3.1.0",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz",
"integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
}
}
},
"readable-stream": { "readable-stream": {
"version": "2.3.7", "version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
...@@ -178,6 +1275,54 @@ ...@@ -178,6 +1275,54 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"send": {
"version": "0.17.1",
"resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz",
"integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=",
"requires": {
"debug": "2.6.9",
"depd": "~1.1.2",
"destroy": "~1.0.4",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
"http-errors": "~1.7.2",
"mime": "1.6.0",
"ms": "2.1.1",
"on-finished": "~2.3.0",
"range-parser": "~1.2.1",
"statuses": "~1.5.0"
},
"dependencies": {
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/ms/download/ms-2.1.1.tgz",
"integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo="
}
}
},
"serve-static": {
"version": "1.14.1",
"resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz",
"integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=",
"requires": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.17.1"
}
},
"setprototypeof": {
"version": "1.1.1",
"resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz",
"integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM="
},
"statuses": {
"version": "1.5.0",
"resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1609654066899&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"streamifier": { "streamifier": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz", "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz",
...@@ -217,11 +1362,45 @@ ...@@ -217,11 +1362,45 @@
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
"integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
}, },
"toidentifier": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/toidentifier/download/toidentifier-1.0.0.tgz?cache=0&sync_timestamp=1636938521998&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ftoidentifier%2Fdownload%2Ftoidentifier-1.0.0.tgz",
"integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM="
},
"type-is": {
"version": "1.6.18",
"resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz",
"integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
"requires": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
}
},
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
}, },
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
},
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmmirror.com/uuid/download/uuid-8.3.2.tgz",
"integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I="
},
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
......
...@@ -4,11 +4,18 @@ ...@@ -4,11 +4,18 @@
"description": "", "description": "",
"main": "build.js", "main": "build.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1",
"build": "node build.js",
"start": "node app.js"
}, },
"type": "module",
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"compressing": "^1.5.1" "child_process": "^1.0.2",
"compressing": "^1.5.1",
"express": "^4.17.1",
"js-base64": "^3.7.2",
"uuid": "^8.3.2"
} }
} }
let fs = require('fs'); import fs from 'fs';
module.exports = {
fix2: function (num) { export function fix2(num) {
if (num >= 10) { if (num >= 10) {
return '' + num; return '' + num;
} else { } else {
return '0' + num; return '0' + num;
} }
}, }
copyDir: async function (src, dst) { export async function copyDir(src, dst) {
const exists = await fs.existsSync(dst); const exists = await fs.existsSync(dst);
if (!exists) { if (!exists) {
await fs.mkdirSync(dst); await fs.mkdirSync(dst);
...@@ -26,12 +26,12 @@ module.exports = { ...@@ -26,12 +26,12 @@ module.exports = {
const data = await fs.readFileSync(newSrc); const data = await fs.readFileSync(newSrc);
await fs.writeFileSync(newDst, data); await fs.writeFileSync(newDst, data);
} else if (st.isDirectory()) { } else if (st.isDirectory()) {
arguments.callee(newSrc, newDst); await copyDir(newSrc, newDst);
} }
} }
}, }
removeDir: async function (src) { export async function removeDir(src) {
const exists = await fs.existsSync(src); const exists = await fs.existsSync(src);
if (!exists) { if (!exists) {
return; return;
...@@ -48,9 +48,8 @@ module.exports = { ...@@ -48,9 +48,8 @@ module.exports = {
console.log('remove: ' + newSrc); console.log('remove: ' + newSrc);
await fs.unlinkSync(newSrc); await fs.unlinkSync(newSrc);
} else if (st.isDirectory()) { } else if (st.isDirectory()) {
await arguments.callee(newSrc); await removeDir(newSrc);
} }
} }
await fs.rmdirSync(src); await fs.rmdirSync(src);
}
} }
\ No newline at end of file
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