Commit 8fb47f5a authored by Chen Jiping's avatar Chen Jiping

feat:完成模板调整

parent ce304201
...@@ -128,5 +128,8 @@ ...@@ -128,5 +128,8 @@
} }
} }
}, },
"defaultProject": "ng-template-generator" "defaultProject": "ng-template-generator",
} "cli": {
"analytics": "9f96abb0-60fd-4368-a556-a8f81f0aca15"
}
}
\ No newline at end of file
...@@ -25,6 +25,7 @@ import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontaweso ...@@ -25,6 +25,7 @@ import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontaweso
import { fas } from '@fortawesome/free-solid-svg-icons'; import { fas } from '@fortawesome/free-solid-svg-icons';
import { far } from '@fortawesome/free-regular-svg-icons'; import { far } from '@fortawesome/free-regular-svg-icons';
import { UploadDragonBoneComponent } from './common/upload-dragon-bone/upload-dragon-bone.component'; import { UploadDragonBoneComponent } from './common/upload-dragon-bone/upload-dragon-bone.component';
import { LrcEditorComponent } from './common/lrc-editor/lrc-editor.component';
registerLocaleData(zh); registerLocaleData(zh);
...@@ -42,7 +43,8 @@ registerLocaleData(zh); ...@@ -42,7 +43,8 @@ registerLocaleData(zh);
UploadVideoComponent, UploadVideoComponent,
CustomHotZoneComponent, CustomHotZoneComponent,
UploadDragonBoneComponent, UploadDragonBoneComponent,
PlayerContentWrapperComponent PlayerContentWrapperComponent,
LrcEditorComponent
], ],
imports: [ imports: [
......
import { Obj } from "./ObjBean";
export class ExercisesBean extends Obj{
//字母数组
wordArr = [];
//单词数组
word2Arr = [];
}
export function getDefaultExercises(){
let exercises = new ExercisesBean();
return exercises;
}
export function getDefaultWord(){
let word = new Obj();
return word;
}
\ No newline at end of file
export class Obj{
/**音频材料 */
audioUrl: String;
/**图片材料 */
picUrl:String;
val : String;
}
\ No newline at end of file
import { EventEmitter } from '@angular/core';
export class AudioDelegate {
audioObj = new Audio();
public audioPlayTimestamp = new EventEmitter();
public audioDataLoaded = new EventEmitter();
public audioPlayBarPosition = new EventEmitter();
public audioPlayEnd = new EventEmitter();
syncAudioCurrentTimeId: number = null;
private arrayBuffer = null;
formatter = new Intl.NumberFormat('en', {
minimumIntegerDigits: 2,
minimumFractionDigits: 3,
maximumFractionDigits: 3,
useGrouping: false,
});
constructor() {
this.audioObj.onloadeddata = this.onAudioDataLoaded.bind(this);
this.audioObj.onplay = this.onAudioPlay.bind(this);
this.audioObj.onpause = this.onAudioPause.bind(this);
this.audioObj.ontimeupdate = this.onAudioTimeUpdate.bind(this);
this.audioObj.onratechange = this.onAudioRateChange.bind(this);
this.audioObj.onended = this.onAudioEnded.bind(this);
this.audioObj.onerror = () => {
};
}
set playbackRate(val) {
this.audioObj.playbackRate = val;
}
set src(val) {
this.audioObj.src = val;
}
get src() {
return this.audioObj.src;
}
convertTagToTime(tag) {
tag = tag.replace('[', '');
tag = tag.replace(']', '');
const parts = tag.split(':');
let h = 0;
let m = 0;
let s = 0;
if (parts.length === 3) {
h = parseInt(parts[0], 10);
m = parseInt(parts[1], 10);
s = parseInt(parts[2], 10);
} else if (parts.length === 2) {
m = parseInt(parts[0], 10);
s = parseFloat(parts[1] );
}
return h * 60 * 60 + m * 60 + s;
}
convertTimeToTag(time, withBracket = true): string {
if (time === undefined) {
return '';
}
const hh = Math.floor(time / 60 / 60)
.toString()
.padStart(2, '0');
const mm = Math.floor(time / 60)
.toString()
.padStart(2, '0');
const ss = this.formatter.format(time % 60);
return withBracket ? `[${hh}:${mm}:${ss}]` : `${hh}:${mm}:${ss}`;
}
setSource(ab) {
this.arrayBuffer = ab;
const blob = new Blob([ab], { type: 'audio/wav' });
this.audioObj.src = URL.createObjectURL(blob);
}
getDataBuffer() {
return this.arrayBuffer;
}
getBufferClip(start, end) {
return this.arrayBuffer.slice(start * this.arrayBuffer.length, end * this.arrayBuffer.length);
}
load() {
this.audioObj.load();
}
syncAudioCurrentTime() {
this.audioPlayTimestamp.emit({
timeFormat: this.convertTimeToTag(this.audioObj.currentTime, false),
time: this.audioObj.currentTime
});
this.syncAudioCurrentTimeId = requestAnimationFrame(() => {
this.syncAudioCurrentTime();
});
}
onAudioDataLoaded(evt) {
console.log('onAudioDataLoaded', evt);
this.audioDataLoaded.emit(this.arrayBuffer);
}
onAudioPlay() {
this.syncAudioCurrentTimeId = requestAnimationFrame(() => {
this.syncAudioCurrentTime();
});
console.log('onAudioPlay');
}
onAudioPause() {
console.log('onAudioPause');
cancelAnimationFrame(this.syncAudioCurrentTimeId);
}
onAudioEnded() {
console.log('onAudioEnded');
this.audioPlayEnd.emit()
cancelAnimationFrame(this.syncAudioCurrentTimeId);
}
onAudioTimeUpdate() {
// console.log('onAudioTimeUpdate', this.convertTimeToTag(this.audioObj.currentTime));
// this.audioPlayTimestamp.emit(this.convertTimeToTag(this.audioObj.currentTime));
}
onAudioRateChange() {
console.log('onAudioRateChange');
}
get isPlaying() {
return !!(this.audioObj.currentTime > 0
&& !this.audioObj.paused
&& !this.audioObj.ended
&& this.audioObj.readyState > 2);
}
currentTimeFormatted(time?) {
let t = this.audioObj.currentTime;
if (typeof time !== 'undefined') {
t = time;
}
return this.convertTimeToTag(t);
}
get currentTime() {
return this.audioObj.currentTime;
}
set currentTime(val) {
this.audioPlayBarPosition.emit({
time: val
});
this.audioObj.currentTime = val;
}
get duration() {
return this.audioObj.duration;
}
get durationFormatted() {
return this.convertTimeToTag(this.audioObj.duration, false);
}
get currentSrc() {
return this.audioObj.currentSrc;
}
pause() {
this.audioObj.pause();
}
async play() {
return this.audioObj.play();
}
}
import { EventEmitter } from '@angular/core';
export class DragElement {
onMove = new EventEmitter();
canMove = false;
dragEl = null;
relX = 0;
private readonly bindMove: any;
private readonly maxWidth: any;
private readonly bindDown: any;
private readonly bindUp: any;
constructor(el, maxWidth) {
this.dragEl = el;
this.maxWidth = maxWidth;
this.bindMove = this.move.bind(this);
this.bindDown = this.down.bind(this);
this.bindUp = this.up.bind(this);
this.dragEl.addEventListener('mousedown', this.bindDown, false);
document.addEventListener('mouseup', this.bindUp, false);
}
dispose() {
this.dragEl.removeEventListener('mousedown', this.bindDown, false);
}
down(e) {
document.addEventListener('mousemove', this.bindMove, false);
// relX = e.pageX - this.timeLine.offsetWidth || 0;
// const left = parseInt(el.offsetWidth|| 0)
const matrix = new DOMMatrix(this.dragEl.style.transform);
this.relX = e.pageX - matrix.m41 || 0;
this.canMove = true;
}
up(e) {
this.canMove = false;
document.removeEventListener('mousemove', this.bindMove, false);
}
move(e) {
if (!this.canMove) {
return;
}
const matrix = new DOMMatrix(this.dragEl.style.transform);
const w = matrix.m41;
if (w > this.maxWidth) {
this.dragEl.style.transform = `translateX(${this.maxWidth}px)`;
return;
}
if (w < 0 ) {
this.dragEl.style.transform = `translateX(0px)`;
return;
}
// this.dragEl.style.transform = `translateX(${(e.pageX - this.relX)}px)`;
this.onMove.emit({
position: e.pageX - this.relX,
});
}
}
<div class="cmp-lrc-editor" >
<div id="step2" class="step" >
<nz-spin [nzSpinning]="isLoadingAudioBuffer" style="width: 100%;height: 100%;">
<div class="content">
<div class="center" >
<div style="display: flex; line-height: 36px;">
<span style="margin-right: 20px">{{currentAudioTime}}/{{currentAudioDuration}}</span>
&nbsp;
<app-audio-recorder [audioUrl]="LRCData.audio_url"
(audioUploaded)="onAudioUploaded($event)"></app-audio-recorder>
&nbsp;
<button nz-button nzSize="default"
nzType="primary"
nz-tooltip nzTooltipTitle="上剪头播放暂停,下箭头打点,左右剪头微调"
(click)="togglePlayAudio($event)">
<ng-container *ngIf="isPlaying"><i nz-icon nzType="pause" nzTheme="outline"></i>暂停(上箭头)</ng-container>
<ng-container *ngIf="!isPlaying"><i nz-icon nzType="caret-right" nzTheme="outline"></i>播放(上箭头)</ng-container>
</button>
&nbsp;
<button nz-button nzSize="default"
nzType="primary"
nz-tooltip nzTooltipTitle="上剪头播放暂停,下箭头打点,左右剪头微调"
id="enterbtn"
(click)="setTimestampPoint()">打点(下箭头)</button>
&nbsp;
<button nz-button nzSize="default"
nzType="danger"
(click)="saveUserData()"><i nz-icon nzType="cloud-upload" nzTheme="outline"></i>保存</button>
</div>
<div style="display: flex; line-height: 36px;">
<span>播放速度:</span>&nbsp;
<span style="width: 150px;">
<nz-slider [(ngModel)]="playbackRate"
(ngModelChange)="changePlaybackRate($event)"
[nzMax]="2" [nzMin]="0.25" [nzStep]="0.25"></nz-slider>
</span>
<!-- <label style="margin-right: 20px;margin-left: 20px">文字大小: <nz-input-number [(ngModel)]="LRCData.fontSize" [nzMin]="1" [nzMax]="100" [nzStep]="1"></nz-input-number></label> -->
<!-- <label style="">行高: <nz-input-number [(ngModel)]="LRCData.lineHeight" [nzMin]="1" [nzMax]="100" [nzStep]="1"></nz-input-number></label> -->
<input type="file" onclick="this.value=null;" accept=".lrc" style="display: none" #uploadBtn>
<button [disabled]="!LRCData.audio_url" nz-button nzType="link" (click)="uploadLRC()">上传LRC文件</button>
<nz-select [(ngModel)]="lrcFileEncoding" (ngModelChange)="changeLrcFileEncoding($event)">
<nz-option nzValue="UTF-8" nzLabel="UTF-8"></nz-option>
<nz-option nzValue="GB18030" nzLabel="GB18030"></nz-option>
</nz-select>
</div>
<!-- <span>{{currentAudioTime}}/{{currentAudioDuration}}</span>-->
<!-- <nz-radio-group (ngModelChange)="changeMode($event)" [(ngModel)]="LRCData.mode" class="mode">-->
<!-- <label nz-radio [nzValue]="MODE.TEXT">文本模式</label>-->
<!-- <label nz-radio [nzValue]="MODE.IMAGE">图片模式</label>-->
<!-- </nz-radio-group>-->
<!-- <span style="width: 150px;">-->
<!-- <nz-slider [(ngModel)]="playbackRate"-->
<!-- (ngModelChange)="changePlaybackRate($event)"-->
<!-- [nzMax]="2" [nzMin]="0.25" [nzStep]="0.25"></nz-slider>-->
<!-- </span>-->
</div>
<div class="timestamp-container">
<ng-template #insertLineContentTemplate>
<div>
<p>Content</p>
<p>Content</p>
</div>
</ng-template>
<div class="timestamp-line"
(click)="selectTimePoint(i)"
[ngClass]="{selected: selectHighlightTimePointIndex === i}"
*ngFor="let item of timePointData; let i = index">
<div class="time-tag" [ngClass]="{warn: item.warn}">{{item.timeFormatted}}</div>
<div class="add-line" style="margin-right: 4px;">
<button nz-tooltip nzTooltipTitle="向后插入一行" nz-button nzType="danger" nzSize="small" nzShape="circle"
(click)="insertTimePoint(i)">
<i nz-icon nzType="plus" nzTheme="outline"></i>
</button>
</div>
<!--
<div class="time-content">
<input nz-input [(ngModel)]="item.data" />
</div>
<div class="line-break">
<label nz-checkbox nz-tooltip nzTitle="添加换行" [(ngModel)]="item.newLine"></label>
</div>
-->
<div class="time-del">
<button nz-button nzType="primary" nzSize="small" nzShape="circle" (click)="removeTimePoint(i)">
<i nz-icon nzType="delete" nzTheme="outline"></i>
</button>
</div>
</div>
</div>
</div>
</nz-spin>
</div>
<div class="wave-player" [ngStyle]="{visibility: LRCData.audio_url ? 'visible' : 'hidden'}" >
<canvas #waveEl ></canvas>
<div class="time-line" #timeLineEl>
<div class="ctrl-bar">
</div>
<div class="play-bar"></div>
</div>
<div class="point-line">
<div *ngFor="let item of timePointData; let i = index"
[ngStyle]="{transform: item.position, zIndex: selectHighlightTimePointIndex === i ? 1 : 0}">
<div class="arrow-up"
nzTrigger="click"
nzTitle="⇽⇾左右方向键可以微调该时间点"
nzPlacement="bottom"
nz-tooltip
[ngClass]="{selected: selectHighlightTimePointIndex === i}">
<div class="ctrl-bar" (click)="selectTimePoint(i)"></div>
</div>
</div>
</div>
<!-- [nzDisabled]="isScaleTimeLine"-->
<nz-slider nzRange style="flex: 1" [nzTipFormatter]="formatter" [nzStep]="0.01" [nzMax]="timeRangeObj.max" [nzMin]="timeRangeObj.min"
(nzOnAfterChange)="timeRangeAfterChange($event)"
[(ngModel)]="timeRangeSelector"></nz-slider>
<div style="width: 100%;
position: relative;
height: 30px;
display: flex;
flex-direction: row-reverse;">
<!-- *ngIf="!isScaleTimeLine"-->
<!-- *ngIf="isScaleTimeLine"-->
<button [disabled]="!isScaleTimeLine" style="margin-right: 8px;" nz-button nzSize="small"
(click)="restoreTimeLine()"
nzType="primary">
返回</button>
<button style="margin-right: 8px;" nz-button nzSize="small"
(click)="scaleTimeLine()"
nzType="primary">
缩放时间轴</button>
</div>
</div>
</div>
@import '../../style/common_mixin.css';
:host ::ng-deep .cmp-lrc-editor .ant-spin-container {
width: 100%;
height: 100%;
}
.cmp-lrc-editor{
width: 100%;
.step{
width: 100%;
height: 500px;
position: relative;
.content{
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
}
.flex1{
flex: 1;
}
.wave-player{
display: inline-block;
position: relative;
width: 100%;
canvas{
width: 100%;
height: 100px;
}
}
.time-line{
height: 100%;
position: absolute;
border: 0;
top: 0;
opacity: 0.5;
width: 0px;
z-index: 1;
}
.line-break{
margin: 0 4px 0 8px;
}
.time-tag.warn{
background: firebrick;
}
.time-tag:after {
content: "\27A4";
}
.timestamp-container{
width: 100%;
flex: 1;
overflow: auto;
}
.timestamp-line.selected{
background: green;
}
.timestamp-line{
display: flex;
margin: 2px 0;
height: 36px;
line-height: 36px;
.time-tag{
flex: 0;
margin-right: 4px;
}
.time-content{
flex: 1;
}
.time-del{
margin-left: 4px;
flex: 0;
}
}
.ctrl-bar{
height: 100%;
width: 0px;
transform: translateX(50%);
position: absolute;
cursor: ew-resize;
user-select: none;
padding: 0 2px;
//box-shadow: 0.5px 0 0 blue;
box-shadow: none!important;
box-shadow: none;
width: 1px;
background: blue;
transform: translateX(100%);
padding: 0;
}
.drag-bar{
box-shadow: none;
width: 4px;
background: blue;
transform: translateX(3px);
padding: 0;
}
.point-line{
position: relative;
height: 5px;
.arrow-up.selected{
border-bottom-color: #faad14;
}
.arrow-up {
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
position: absolute;
border-bottom: 5px solid black;
//transform: translateX(-100%);
.ctrl-bar{
bottom: 0;
transform: translateX(-50%);
box-shadow: 0.5px 0 0 blue;
height: 100px;
position: absolute;
}
}
}
}
import {
AfterViewInit,
Component,
ElementRef, EventEmitter,
Input,
Output,
OnChanges,
OnDestroy,
OnInit,
ViewChild
} from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { AudioDelegate } from './audio-delegate';
import { fromEvent, Subscription } from 'rxjs';
import { throttleTime } from 'rxjs/operators';
import { DragElement } from './drag-element';
import { NzMessageService } from 'ng-zorro-antd';
// interface Blob {
// arrayBuffer: () => Promise<ArrayBuffer>;
// }
const MODE = {
TEXT: 1,
IMAGE: 2
};
function arrayBufferToString( buffer, encoding ) {
return new Promise((resolve, reject) => {
const blob = new Blob([buffer], { type: 'text/plain' });
const reader = new FileReader();
reader.onload = (evt) => {
resolve(evt.target.result);
};
reader.readAsText(blob, encoding);
});
}
@Component({
selector: 'app-lrc-editor',
templateUrl: './lrc-editor.component.html',
styleUrls: ['./lrc-editor.component.scss']
})
export class LrcEditorComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {
@ViewChild('waveEl', {static: true }) canvasElRef: ElementRef;
@ViewChild('timeLineEl', {static: true }) timeLineEl: ElementRef;
@ViewChild('uploadBtn', {static: true }) uploadBtn: ElementRef;
lrcFileEncoding = 'GB18030';
@Output()
editFinished = new EventEmitter();
// MODE = MODE;
@Input()
LRCData: any = {
audio_url: null,
fontSize: 24,
lineHeight: 32,
// mode: MODE.TEXT,
lyrics: []
};
timeRangeModeConfObj = {};
timeRangeObj = {
min: 0,
max: 100
};
isScaleTimeLine = false;
timeRangeSelector = [0, 100];
currentAudioTime = '00:00:00.000';
currentAudioDuration = '00:00:00.000';
selectHighlightTimePointIndex = -1;
currentStep = 0;
// item = {
// audio_url: null,
// mode: MODE.TEXT,
// lyrics: []
// };
audioObj = new AudioDelegate();
isLoadingAudioBuffer = false;
private waveWidth: number;
private waveHeight: number;
private ctx: CanvasRenderingContext2D;
private adContext = new AudioContext();
private timeLineTimer: number;
private timeLine: any;
timePointData = [];
httpErrorTryCount = 0;
httpErrorTryMax = 3;
playbackRate = 1;
// private audioBuffer: AudioBuffer;
private audioArrayBuffer: ArrayBuffer;
timePointDataFull: any;
private currentTimeRangDuration: number;
private timeRangeEditLines: number[];
private audioPlayBarPositionSub: Subscription;
private audioDataLoadedSub: Subscription;
private audioPlayTimestampSub: Subscription;
private audioPlayEndSub: Subscription;
private dragMoveBarSub: Subscription;
private arrowKeyUpSub: Subscription;
private loadAudioSub: Subscription;
constructor(private client: HttpClient, private nzMessageService: NzMessageService) {
}
ngOnInit() {
window['lrc'] = this;
// console.log('this.LRCData 1', this.LRCData);
if (!this.LRCData) {
this.LRCData = {};
}
// console.log('this.LRCData 1', this.LRCData);
this.LRCData = Object.assign( {
audio_url: null,
fontSize: 24,
lineHeight: 32,
// mode: MODE.TEXT,
lyrics: []
}, this.LRCData);
// window.player = this;
if (this.audioPlayBarPositionSub) {
this.audioPlayBarPositionSub.unsubscribe();
}
this.audioPlayBarPositionSub = this.audioObj.audioPlayBarPosition.subscribe((evt) => {
this.calcPlayBarPositionByTime(evt.time);
});
if (this.audioDataLoadedSub) {
this.audioDataLoadedSub.unsubscribe();
}
this.audioDataLoadedSub = this.audioObj.audioDataLoaded.subscribe((ab) => {
console.log('this.audioObj.audioDataLoaded');
this.timeRangeObj.max = this.audioObj.duration;
// this.timeRangeSelector[1] = this.audioObj.duration;
this.timeRangeSelector = [0, this.audioObj.duration];
this.currentAudioDuration = this.audioObj.durationFormatted;
if (this.LRCData && this.LRCData.lyrics) {
this.timePointData = [];
this.LRCData.lyrics.forEach(timeline => {
this.setTimestampPoint(timeline);
});
}
this.drawArrayBuffer(ab);
});
if (this.audioPlayTimestampSub) {
this.audioPlayTimestampSub.unsubscribe();
}
this.audioPlayTimestampSub = this.audioObj.audioPlayTimestamp.subscribe((evt) => {
this.currentAudioTime = evt.timeFormat;
let time = evt.time;
// if (this.isScaleTimeLine) {
// if ( evt.time >= this.timeRangeSelector[0]) {
// time = evt.time - this.timeRangeSelector[0];
// }
// if (evt.time >= this.timeRangeSelector[1]) {
// this.audioObj.pause();
// this.audioObj.currentTime = evt.time; // - 5 * 60 / 1000;
// this.calcPlayBarPositionByTime(this.timeRangeSelector[0]);
// }
// }
this.calcPlayBarPositionByTime(time);
});
if (this.audioPlayEndSub) {
this.audioPlayEndSub.unsubscribe();
}
this.audioPlayEndSub = this.audioObj.audioPlayEnd.subscribe(() => {
this.calcPlayBarPositionByTime(0);
this.selectHighlightTimePointIndex = -1;
});
this.uploadBtn.nativeElement.addEventListener('change', () => {
const lrcFile = this.uploadBtn.nativeElement.files[0];
if (!lrcFile) {
this.nzMessageService.error('请正确选择文件');
return;
}
lrcFile.arrayBuffer().then(ab => {
arrayBufferToString(ab, this.lrcFileEncoding).then((s: string) => {
this.timePointData.length = 0;
s.split('[').forEach(l => {
const p = l.indexOf(']');
const t = l.substr(0, p);
const data = l.substr(p + 1).trim();
if (!isNaN(Number(l[0]))) {
const time = this.audioObj.convertTagToTime(t);
this.timePointData.push({
time,
timeFormatted: t,
data,
position: `translateX(${ this.getXPositionByTime(time)}px)`,
});
}
console.log( t, data);
});
});
});
});
if (this.LRCData.audio_url) {
this.goNextStep2();
}
}
drawArrayBuffer(ab) {
this.adContext.close();
this.adContext = new AudioContext();
this.adContext.decodeAudioData(ab).then(adb => {
this.draw(adb);
this.isLoadingAudioBuffer = false;
// (document.activeElement as HTMLButtonElement).blur();
// //this.canvasElRef.nativeElement.focus();
});
}
ngOnChanges(value) {
if (value.LRCData && !value.LRCData.firstChange) {
// console.log(1111111111)
this.ngOnInit();
// this.onAudioUploaded({url: this.LRCData.audio_url});
}
// console.log('ngOnChanges', JSON.stringify(value)); // this.ngOnInit();
}
ngOnDestroy(): void {
// console.log('destory')
this.audioPlayBarPositionSub && this.audioPlayBarPositionSub.unsubscribe();
this.audioDataLoadedSub && this.audioDataLoadedSub.unsubscribe();
this.audioPlayTimestampSub && this.audioPlayTimestampSub.unsubscribe();
this.audioPlayEndSub && this.audioPlayEndSub.unsubscribe();
this.dragMoveBarSub && this.dragMoveBarSub.unsubscribe();
this.arrowKeyUpSub && this.arrowKeyUpSub.unsubscribe();
this.loadAudioSub && this. loadAudioSub.unsubscribe();
}
ngAfterViewInit() {
this.timeLine = this.timeLineEl.nativeElement;
// this.timeLineBar = this.timeLineBarEl.nativeElement;
this.waveWidth = this.canvasElRef.nativeElement.offsetWidth;
this.waveHeight = this.canvasElRef.nativeElement.offsetHeight;
this.ctx = this.canvasElRef.nativeElement.getContext('2d');
const dpr = window.devicePixelRatio || 1;
this.canvasElRef.nativeElement.width = this.waveWidth * dpr;
this.canvasElRef.nativeElement.height = this.waveHeight * dpr;
this.ctx.scale(dpr, dpr);
const cb = (e) => {
if (e.code === 'ArrowUp'
|| e.code === 'ArrowDown'
|| e.code === 'ArrowLeft'
|| e.code === 'ArrowRight') {
e.preventDefault();
e.stopPropagation();
// set time point
}
};
document.removeEventListener('keydown', cb );
document.addEventListener('keydown', cb );
if (this.arrowKeyUpSub) {
this.arrowKeyUpSub.unsubscribe();
}
this.arrowKeyUpSub = fromEvent<KeyboardEvent>(document, 'keyup')
.pipe(throttleTime(100) )
.subscribe((e) => {
e.preventDefault();
e.stopPropagation();
if (e.code === 'ArrowUp') {
this.togglePlayAudio();
//this.canvasElRef.nativeElement.focus();
}
if (e.code === 'ArrowDown') {
this.setTimestampPoint();
//this.canvasElRef.nativeElement.focus();
// set time point
}
if (e.code === 'ArrowLeft') {
if (this.selectHighlightTimePointIndex >= 0) {
this.updateTimePointData(this.selectHighlightTimePointIndex, -0.05);
} else {
this.audioObj.currentTime -= 1;
}
//this.canvasElRef.nativeElement.focus();
}
if (e.code === 'ArrowRight') {
if (this.selectHighlightTimePointIndex >= 0) {
this.updateTimePointData(this.selectHighlightTimePointIndex, 0.05);
} else {
this.audioObj.currentTime += 1;
}
//this.canvasElRef.nativeElement.focus();
}
});
this.ctx.fillStyle = '#0F0';
if (this.dragMoveBarSub) {
this.dragMoveBarSub.unsubscribe();
}
this.dragMoveBarSub = new DragElement(this.timeLine, this.waveWidth).onMove.subscribe(evt => {
this.selectHighlightTimePointIndex = -1;
const percent = evt.position / this.waveWidth;
let baseDur = this.audioObj.duration;
let startPoint = 0;
let currentTime = percent * this.audioObj.duration;
if (this.isScaleTimeLine) {
baseDur = this.currentTimeRangDuration;
startPoint = this.timeRangeObj.min;
currentTime = this.timeRangeObj.min + percent * baseDur;
}
this.audioObj.currentTime = currentTime;
console.log('dd', baseDur, this.audioObj.currentTime );
this.currentAudioTime = this.audioObj.currentTimeFormatted();
this.calcPlayBarPositionByTime(currentTime);
});
}
get isPlaying() {
return this.audioObj.isPlaying;
}
updateTimePointData(index, time) {
const p = this.timePointData[index];
if (p) {
const newTime = p.time + time;
let posTime = newTime;
if (this.isScaleTimeLine) {
posTime = posTime - this.timeRangeObj.min;
}
this.audioObj.currentTime = newTime;
p.time = newTime;
p.position = this.calcPlayBarPositionByTime(posTime, true);
p.timeFormatted = this.audioObj.currentTimeFormatted(newTime);
if (p.time > this.audioObj.duration) {
p.warn = true;
}
}
}
getXPositionByTime(time) {
let base = this.audioObj.duration;
if (this.currentTimeRangDuration) {
time = time - this.timeRangeObj.min;
if (time < 0) {
time = 0;
}
base = this.currentTimeRangDuration;
}
return ((time / base) * this.waveWidth) ;
}
calcPlayBarPositionByTime(time, returnVal = false) {
const x = this.getXPositionByTime(time)
const pos = `translateX(${x}px)`;
if (returnVal) {
return pos;
}
this.timeLine.style.transform = pos;
}
togglePlayAudio(evt?) {
if (evt) {
evt.target.blur();
}
console.log('togglePlayAudio', evt);
if (this.isPlaying) {
this.audioObj.pause();
clearInterval(this.timeLineTimer);
return;
}
if (this.isScaleTimeLine
&& (this.audioObj.currentTime < this.timeRangeSelector[0]
|| this.audioObj.currentTime >= this.timeRangeSelector[1] )) {
this.audioObj.currentTime = this.timeRangeSelector[0];
}
if (this.selectHighlightTimePointIndex >= 0) {
const p = this.timePointData[this.selectHighlightTimePointIndex];
this.audioObj.currentTime = p.time;
}
this.audioObj.play().then(() => {
// this.timeLineTimer = window.setInterval(() => {
// if (canSetPoint) {
// console.log(audio.currentTime,audioImages[audio.currentTime] )
// audioImages.push([audio.currentTime, pointAudio]);
// canSetPoint = false;
// }
// this.timeLine.style.width = `${Math.ceil((this.audioObj.currentTime / this.audioObj.duration) * 100) }%`;
// }, 32);
});
}
setTimestampPoint(timelineData = null, select = false) {
if (!this.audioObj.currentSrc) {
return;
}
// console.log('setTimestampPoint');
let pointTime = this.audioObj.currentTime;
let data = '';
let newLine = false;
if (timelineData) {
pointTime = timelineData.time;
data = timelineData.data;
newLine = timelineData.newLine;
}
let warn = false;
if (pointTime > this.audioObj.duration || pointTime < 0) {
warn = true;
}
const tmpAllTime = this.timePointData.map(d => {
return {...d};
});
tmpAllTime.forEach(p => {
p.timeFormatted = this.audioObj.convertTimeToTag(p.time, true);
const delta = Math.abs(p.time - pointTime ) * 1000;
if (delta < 150) {
p.warn = true;
}
});
// if (this.isScaleTimeLine) {
// pointTime = pointTime - this.timeRangeObj.min;
// }
tmpAllTime.push({
time: pointTime, // this.audioObj.currentTime,
timeFormatted: this.audioObj.currentTimeFormatted(pointTime),
data,
position: `translateX(${ this.getXPositionByTime(pointTime)}px)`,
warn,
newLine
});
tmpAllTime.sort((a, b) => {
return a.time - b.time;
});
this.timePointData.length = 0;
tmpAllTime.forEach(item => {
this.timePointData.push(item);
});
if (select) {
this.selectHighlightTimePointIndex = this.timePointData.length - 1;
}
}
insertTimePoint(index) {
const st = this.timePointData[index].time;
let et = st + 5;
const next = this.timePointData[index + 1];
if (next) {
et = next.time;
}
const time = st + (et - st) / 2;
// if (this.isScaleTimeLine) {
// time = time + this.timeRangeObj.min;
// }
this.audioObj.currentTime = time;
this.setTimestampPoint({
time,
data: ''
});
// this.timePointData.splice(index + 1, 0, {
// time,
// timeFormatted: this.audioObj.currentTimeFormatted(time),
// data: '',
// position: `translateX(${ this.getXPositionByTime(time)}px)`,
// } );
this.selectHighlightTimePointIndex = index + 1;
}
removeTimePoint(index) {
this.timePointData.splice(index, 1);
this.selectHighlightTimePointIndex = -1;
}
selectTimePoint(index) {
this.selectHighlightTimePointIndex = index;
this.audioObj.currentTime = this.timePointData[index].time;
}
onAudioUploaded(evt) {
console.log(evt);
this.LRCData.audio_url = evt.url;
this.LRCData.lyrics.length = 0;
this.timePointData.length = 0;
this.goNextStep2();
}
loadingAudioBuffer() {
this.isLoadingAudioBuffer = true;
if (this.loadAudioSub) {
this.loadAudioSub.unsubscribe();
}
this.loadAudioSub = this.client.get(this.LRCData.audio_url, {responseType: 'arraybuffer'})
.subscribe( (ab) => {
// const blob = new Blob([ab], { type: 'audio/wav' });
// this.audioObj.src = URL.createObjectURL(blob);
this.audioArrayBuffer = ab.slice(0);
this.audioObj.setSource(ab);
this.audioObj.load();
}, ( error ) => {
console.log(error);
this.isLoadingAudioBuffer = false;
if (this.httpErrorTryCount >= this.httpErrorTryMax) {
this.nzMessageService.error('请检查网络,刷新重试');
return;
}
this.httpErrorTryCount += 1;
this.goNextStep2();
});
}
goNextStep2() {
this.currentStep = 1;
this.loadingAudioBuffer();
}
filterAudioSamples( adb: AudioBuffer, samples) {
const data = [];
const length = adb.length;
const blockSize = Math.floor(length / samples);
const rawData = adb.getChannelData(0);
for (let i = 0; i < samples; i++) {
const blockStart = i * blockSize;
let sum = 0;
for (let j = 0; j < blockSize; j++) {
sum = sum + Math.abs(rawData[blockStart + j]);
}
data.push(sum / blockSize);
}
return data;
}
normalizeData(data) {
const base = Math.pow(Math.max(...data), -1);
return data.map(n => n * base);
}
draw(adb) {
this.ctx.clearRect(0, 0 , this.waveWidth, this.waveHeight);
const waveData = this.filterAudioSamples(adb, this.waveWidth);
const normalizeDataForAllAudioBuffer = this.normalizeData(waveData);
const width = this.waveWidth / normalizeDataForAllAudioBuffer.length;
normalizeDataForAllAudioBuffer.forEach((d, i) => {
const x = width * i;
const height = d * this.waveHeight / 2;
this.ctx.fillRect(x, this.waveHeight / 2 - height, 1, height * 2);
});
}
saveUserData() {
this.checkNeedBack();
const result = [];
this.timePointData.forEach(p => {
const t = {...p};
delete t.position;
delete t.warn;
delete t.timeFormatted;
t.data = t.data;
result.push(t);
});
this.LRCData.lyrics = result;
this.editFinished.emit(this.LRCData);
// console.log(this.timePointData);
}
checkNeedBack() {
if (this.isScaleTimeLine) {
this.restoreTimeLine();
}
}
changePlaybackRate(val) {
this.audioObj.playbackRate = val;
}
onImageUploadSuccess(evt) {
}
uploadLRC() {
this.uploadBtn.nativeElement.click();
}
changeLrcFileEncoding(enc) {
this.lrcFileEncoding = enc;
}
formatter = (value: number): string => {
return this.audioObj.convertTimeToTag(value, false);
}
timeRangeAfterChange(value) {
this.timeRangeSelector = value;
}
scaleTimeLine() {
this.audioObj.pause();
this.selectHighlightTimePointIndex = -1;
this.isScaleTimeLine = true;
if (!this.timePointDataFull) {
this.timePointDataFull = this.timePointData.map(line => {
return {...line};
});
}
// this.timeRangeModeConfObj.startTime = this.timeRangeSelector[0];
// this.timeRangeModeConfObj.endTime = this.timeRangeSelector[0];
const start = this.timeRangeSelector[0];
const end = this.timeRangeSelector[1];
const sp = start / this.audioObj.duration;
const ep = end / this.audioObj.duration;
const sl = sp * this.audioArrayBuffer.byteLength;
const el = ep * this.audioArrayBuffer.byteLength;
this.currentTimeRangDuration = end - start;
this.timeRangeObj.max = end;
this.timeRangeObj.min = start;
this.calcPlayBarPositionByTime(start);
// this.timeRangeSelector[0] = start;
// this.timeRangeSelector[1] = end;
this.timeRangeSelector = [start, end];
this.timeRangeEditLines = [];
this.timePointData = this.timePointData.filter( (line, idx) => {
if (line.time > start && line.time < end) {
this.timeRangeEditLines.push(idx);
return true;
}
return false;
}).map( line => {
line.position = this.calcPlayBarPositionByTime( line.time , true);
return line;
});
const ab = this.audioArrayBuffer.slice(sl, el);
// const ab = this.audioObj.getBufferClip(s, e);
this.drawArrayBuffer(ab);
}
restoreTimeLine() {
this.audioObj.pause();
this.timeRangeObj.max = this.audioObj.duration;
this.timeRangeObj.min = 0;
this.timeRangeSelector = [0, this.audioObj.duration];
// this.timeRangeSelector[1] = this.audioObj.duration;
this.selectHighlightTimePointIndex = -1;
this.isScaleTimeLine = false;
this.currentTimeRangDuration = this.audioObj.duration;
if (this.timeRangeEditLines.length) {
const head = this.timePointDataFull.slice(0, Math.min(...this.timeRangeEditLines) );
const tail = this.timePointDataFull.slice( Math.max(...this.timeRangeEditLines) + 1 );
// this.timePointData = [...head, ...this.timePointData, ...tail];
this.timePointData = [...head, ...this.timePointData, ...tail].map(line => {
return {...line};
}).sort((a, b) => {
return a.time - b.time;
});
} else {
this.timePointData = [...this.timePointDataFull, ...this.timePointData];
}
this.timePointData = this.timePointData.map(line => {
line.position = this.calcPlayBarPositionByTime(line.time, true);
return {...line};
});
this.timePointDataFull = null;
const ab = this.audioArrayBuffer.slice(0);
// const ab = this.audioObj.getBufferClip(s, e);
this.drawArrayBuffer(ab);
}
}
<div class="model-content"> <div class="model-content">
<div nz-row>
<div style="padding: 10px;"> <div nz-col nzOffset='4'>
<h1 nz-title>课程练习内容编辑</h1>
<div style="width: 300px;" align='center'>
<span>图1: </span>
<app-upload-image-with-preview
[picUrl]="item.pic_url"
(imageUploaded)="onImageUploadSuccess($event, 'pic_url')">
</app-upload-image-with-preview>
</div> </div>
</div>
<div style="width: 300px; margin-top: 5px;" align='center'> <!--练习题-->
<span>图2: </span> <div nz-row>
<app-upload-image-with-preview <div nz-col [nzSpan]="23" nzOffset="1">
[picUrl]="item.pic_url_2" <nz-divider nzText="内容编辑" nzOrientation="left"></nz-divider>
(imageUploaded)="onImageUploadSuccess($event, 'pic_url_2')"> <nz-form-item>
</app-upload-image-with-preview> <nz-form-label [nzSpan]="2" nzFor="guideAudioUrl1">字母</nz-form-label>
</div> <nz-form-control [nzSpan]="4">
<input type="text" nz-input [(ngModel)]="item.letter" (blur)="save()">
<div style="width: 300px; margin-top: 15px;"> </nz-form-control>
<span>文本: </span> </nz-form-item>
<input type="text" nz-input [(ngModel)]="item.text" (blur)="save()">
</div> <nz-form-item>
<nz-form-label [nzSpan]="2" nzFor="guideAudioUrl1">CC引导音频1</nz-form-label>
<div style="margin-top: 5px"> <nz-form-control [nzSpan]="4">
<span>音频: </span> <app-audio-recorder [audioUrl]="item.guideAudioUrl1" id="guideAudioUrl1"
<app-audio-recorder (audioUploaded)="onAudioUploadSuccess($event, item, 'guideAudioUrl1')">
[audioUrl]="item.audio_url" </app-audio-recorder>
(audioUploaded)="onAudioUploadSuccess($event, 'audio_url')" </nz-form-control>
></app-audio-recorder> </nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="2" nzFor="guideAudioUrl2">CC引导音频2</nz-form-label>
<nz-form-control [nzSpan]="4">
<app-audio-recorder [audioUrl]="item.guideAudioUrl2" id="guideAudioUrl2"
(audioUploaded)="onAudioUploadSuccess($event, item, 'guideAudioUrl2')">
</app-audio-recorder>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="2" nzFor="guideAudioUrl3">CC引导音频3</nz-form-label>
<nz-form-control [nzSpan]="4">
<app-audio-recorder [audioUrl]="item.guideAudioUrl3" id="guideAudioUrl3"
(audioUploaded)="onAudioUploadSuccess($event, item, 'guideAudioUrl3')">
</app-audio-recorder>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="2">图片</nz-form-label>
<nz-form-control [nzSpan]="4">
<app-upload-image-with-preview style="width: 100%" [picUrl]="item.exercises.picUrl"
(imageUploaded)="onImageUploadSuccess($event, item.exercises, 'picUrl')">
</app-upload-image-with-preview>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="2" nzFor="add-btn">字母添加</nz-form-label>
<nz-form-control [nzSpan]="4">
<button nz-button nzType="dashed" class="add-btn" id="add-btn" (click)="addWordItem(item.exercises, 'wordArr')" [disabled]="item.exercises.wordArr.length == 2 ? true : false">
<i nz-icon nzType="plus-circle" nzTheme="outline"></i>添加
</button>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control [nzOffset]="2" [nzSpan]="15">
<nz-table #wordTable nzBordered [nzData]="item.exercises.wordArr" nzBordered nzTitle="字母数组"
[nzShowPagination]=true>
<thead>
<tr>
<th>序号</th>
<th>字母</th>
<th>音频</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of wordTable.data;let j = index">
<td>{{ j+1 }}</td>
<td><input type="text" nz-input [(ngModel)]="row.val" (blur)="save()" maxlength="1"></td>
<td>
<app-audio-recorder [audioUrl]="row.audioUrl"
(audioUploaded)="onAudioUploadSuccess($event, row, 'audioUrl')">
</app-audio-recorder>
</td>
<td>
<button nz-button nzType="dashed" id="del-btn" (click)="delWord(item.exercises, 'wordArr', j)">
<i nz-icon nzType="delete" nzTheme="outline"></i>删除
</button>
</td>
</tr>
</tbody>
</nz-table>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="2" nzFor="add-btn">单词添加</nz-form-label>
<nz-form-control [nzSpan]="4">
<button nz-button nzType="dashed" class="add-btn" id="add-word-btn" (click)="addWordItem(item.exercises, 'word2Arr')" [disabled]="item.exercises.word2Arr.length == 2 ? true : false">
<i nz-icon nzType="plus-circle" nzTheme="outline"></i>添加
</button>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control [nzOffset]="2" [nzSpan]="15">
<nz-table #wordTable2 nzBordered [nzData]="item.exercises.word2Arr" nzBordered nzTitle="单词数组"
[nzShowPagination]=true>
<thead>
<tr>
<th>序号</th>
<th>单词</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of wordTable2.data;let j = index">
<td>{{ j+1 }}</td>
<td><input type="text" nz-input [(ngModel)]="row.val" (blur)="save()"></td>
<td>
<button nz-button nzType="dashed" id="del-word-btn" (click)="delWord(item.exercises, 'word2Arr', j)">
<i nz-icon nzType="delete" nzTheme="outline"></i>删除
</button>
</td>
</tr>
</tbody>
</nz-table>
</nz-form-control>
</nz-form-item>
<nz-divider nzText="音频编辑" nzOrientation="left"></nz-divider>
<app-lrc-editor [LRCData]="item.exercises.lrcData" (editFinished)="getLRC($event, item.exercises)">
</app-lrc-editor>
</div> </div>
</div> </div>
</div>
</div> \ No newline at end of file
import { Component, EventEmitter, Input, OnDestroy, OnChanges, OnInit, Output, ApplicationRef, ChangeDetectorRef } from '@angular/core'; import { Component, EventEmitter, Input, OnDestroy, OnChanges, OnInit, Output, ApplicationRef, ChangeDetectorRef } from '@angular/core';
import { JsonPipe } from '@angular/common'; import { JsonPipe } from '@angular/common';
import { getDefaultExercises, getDefaultWord } from '../bean/ExercisesBean';
@Component({ @Component({
...@@ -10,7 +11,7 @@ import { JsonPipe } from '@angular/common'; ...@@ -10,7 +11,7 @@ import { JsonPipe } from '@angular/common';
export class FormComponent implements OnInit, OnChanges, OnDestroy { export class FormComponent implements OnInit, OnChanges, OnDestroy {
// 储存数据用 // 储存数据用
saveKey = "test_001"; saveKey = "OP-03-2";
// 储存对象 // 储存对象
item; item;
...@@ -37,6 +38,8 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -37,6 +38,8 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
this.item = {}; this.item = {};
this.item.exercises = getDefaultExercises();
// 获取存储的数据 // 获取存储的数据
(<any>window).courseware.getData((data) => { (<any>window).courseware.getData((data) => {
...@@ -44,6 +47,8 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -44,6 +47,8 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
this.item = data; this.item = data;
} }
console.log(JSON.stringify(this.item));
this.init(); this.init();
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
this.changeDetectorRef.detectChanges(); this.changeDetectorRef.detectChanges();
...@@ -60,6 +65,17 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -60,6 +65,17 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
init() { init() {
if(!this.item.exercises){
this.item.exercises = getDefaultExercises();
}
if(!this.item.exercises.wordArr){
this.item.exercises.wordArr = [];
}
if(!this.item.exercises.word2Arr){
this.item.exercises.word2Arr = [];
}
} }
...@@ -67,9 +83,9 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -67,9 +83,9 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
* 储存图片数据 * 储存图片数据
* @param e * @param e
*/ */
onImageUploadSuccess(e, key) { onImageUploadSuccess(e, item, key) {
this.item[key] = e.url; item[key] = e.url;
this.save(); this.save();
} }
...@@ -77,20 +93,12 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -77,20 +93,12 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
* 储存音频数据 * 储存音频数据
* @param e * @param e
*/ */
onAudioUploadSuccess(e, key) { onAudioUploadSuccess(e, item, key) {
this.item[key] = e.url;
this.save();
}
onWordAudioUploadSuccess(e, idx) { item[key] = e.url;
this.item.wordList[idx].audio = e.url;
this.save(); this.save();
} }
onBackWordAudioUploadSuccess(e, idx) {
this.item.wordList[idx].backWordAudio = e.url;
this.save();
}
/** /**
* 储存数据 * 储存数据
...@@ -111,4 +119,29 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -111,4 +119,29 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
}, 1); }, 1);
} }
addWordItem(item, key) {
let word = getDefaultWord();
item[key].push(word);
item[key] = [...item[key]];
this.save();
}
delWord(item, key, index) {
if (index !== -1) {
item[key].splice(index, 1);
item[key] = [...item[key]];
this.save();
}
}
getLRC(evt, it) {
it.lrcData = evt;
it.audioUrl = evt.audio_url;
this.save();
}
} }
\ 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.1.2", "ver": "1.1.2",
"uuid": "c35bb2f6-f24a-4850-ae44-643f2fdc7541", "uuid": "18f88177-7837-4040-acbc-043cbb64bb1e",
"isBundle": false, "isBundle": false,
"bundleName": "", "bundleName": "",
"priority": 1, "priority": 1,
......
{
"ver": "2.0.1",
"uuid": "c58ea9c7-40f6-4fdf-a423-cf8189186748",
"downloadMode": 0,
"duration": 4.176,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "58b7914c-5652-4c51-b14e-5c99e5627fcc",
"downloadMode": 0,
"duration": 8.696417,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "58839a84-d8f6-4df3-aef2-ecaab688f0f3",
"downloadMode": 0,
"duration": 5.84,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "3f07060f-b7a8-46f7-9c84-e9dde678a660",
"downloadMode": 0,
"duration": 4.608,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "77f54cb1-a7d6-4ad3-81d0-1b6aabc5873c",
"downloadMode": 0,
"duration": 3.996,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "b3db0b11-8bb2-44f7-b32d-b4989c3b8197",
"downloadMode": 0,
"duration": 3.384,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "b77d16ca-097b-4106-bd9c-970aa3440fcf",
"downloadMode": 0,
"duration": 1.512,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "4b5a9e31-5415-402a-8602-79434ebeb5f9",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
{"name":"mao","version":"5.5","armature":[{"name":"Armature","slot":[{"name":"影子","color":{},"parent":"root"},{"name":"尾巴","color":{},"z":1,"parent":"尾巴2"},{"name":"右腿","color":{},"z":2,"parent":"右腿"},{"name":"左腿","color":{},"z":3,"parent":"左腿"},{"name":"右手","color":{},"z":4,"parent":"右手2"},{"name":"左手","color":{},"z":5,"parent":"左手2"},{"name":"左手伸直","color":{},"z":6,"parent":"左手"},{"name":"右手伸直","color":{},"z":7,"parent":"右手"},{"name":"身体","color":{},"z":8,"parent":"bone"},{"name":"领带","color":{},"z":9,"parent":"领带2"},{"name":"右耳","color":{},"z":10,"parent":"右耳"},{"name":"左耳","color":{},"z":11,"parent":"左耳"},{"name":"组_1","color":{},"z":12,"parent":"bone1"},{"name":"右眼","color":{},"z":13,"parent":"右眼"},{"name":"右眉毛","color":{},"z":14,"parent":"右眉毛"},{"name":"左眼","color":{},"z":15,"parent":"左眼"},{"name":"左眉毛","color":{},"z":16,"parent":"左眉毛"},{"name":"眼镜","color":{},"z":17,"parent":"眼镜"},{"name":"胡子","color":{},"z":18,"parent":"胡子1"},{"name":"鼻子","color":{},"z":19,"parent":"鼻子"},{"name":"嘴","color":{},"z":20,"parent":"嘴"},{"name":"帽子","color":{},"z":21,"parent":"帽子"}],"bone":[{"name":"root","transform":{}},{"name":"bone","transform":{"x":891.9191,"y":616.1693},"length":160,"parent":"root"},{"name":"领带","transform":{"x":0.6,"skY":-84.2569,"y":28.2,"skX":-84.2569},"length":113,"parent":"bone"},{"name":"左腿","transform":{"x":-20.0746,"skY":175.2807,"y":-25.7203,"skX":175.2807},"length":67,"parent":"领带"},{"name":"右腿","transform":{"x":-8.2206,"skY":159.7117,"y":32.1842,"skX":159.7117},"length":66,"parent":"领带"},{"name":"bone1","transform":{"x":125.7438,"skY":-19.0945,"y":19.1129,"skX":-19.0945},"length":235,"parent":"领带"},{"name":"领带1","transform":{"x":113.6488,"skY":174.2569,"y":9.7764,"skX":174.2569},"length":65,"parent":"领带"},{"name":"尾巴","transform":{"x":-17.0514,"skY":-105.4221,"y":-37.6326,"skX":-105.4221},"length":63,"parent":"领带"},{"name":"左手","transform":{"x":102.3804,"skY":-146.8359,"y":-50.8001,"skX":-146.8359},"length":50,"parent":"领带"},{"name":"右手","transform":{"x":110.3467,"skY":136.3674,"y":47.3957,"skX":136.3674},"length":69,"parent":"领带"},{"name":"鼻子","transform":{"x":59.3977,"skY":41.1099,"y":27.0986,"skX":41.1099},"length":1,"parent":"bone1"},{"name":"帽子","transform":{"x":192.6558,"skY":82.6388,"y":-5.4078,"skX":82.6388},"length":27,"parent":"bone1"},{"name":"眼镜","transform":{"x":78.9107,"skY":5.5084,"y":15.902,"skX":5.5084},"length":28,"parent":"bone1"},{"name":"左眉毛","transform":{"x":140.8962,"skY":83.9424,"y":-36.7575,"skX":83.9424},"length":10,"parent":"bone1"},{"name":"左眼","transform":{"x":96.0507,"y":-35.5301},"parent":"bone1"},{"name":"领带2","transform":{"x":65.1,"skY":1.6366,"skX":1.6366},"length":66,"parent":"领带1"},{"name":"右眼","transform":{"x":96.7167,"y":59.7489},"parent":"bone1"},{"name":"尾巴1","transform":{"x":63.0475,"skY":106.2349,"skX":106.2349},"length":63,"parent":"尾巴"},{"name":"右眉毛","transform":{"x":143.1362,"skY":103.3513,"y":60.3339,"skX":103.3513},"length":17,"parent":"bone1"},{"name":"左手1","transform":{"x":50.632,"skY":106.7395,"skX":106.7395},"length":27,"parent":"左手"},{"name":"嘴","transform":{"x":33.0885,"skY":103.3513,"y":8.4698,"skX":103.3513},"length":16,"parent":"bone1"},{"name":"右手1","transform":{"x":69.1209,"skY":97.009,"skX":97.009},"length":47,"parent":"右手"},{"name":"左耳","transform":{"x":151.1649,"skY":-24.2997,"y":-83.7051,"skX":-24.2997},"length":57,"parent":"bone1"},{"name":"右耳","transform":{"x":134.348,"skY":25.1759,"y":78.9579,"skX":25.1759},"length":64,"parent":"bone1"},{"name":"胡子","transform":{"x":-11.3223,"skY":-142.4333,"y":-14.2123,"skX":-142.4333},"length":65,"parent":"鼻子"},{"name":"胡子1","transform":{"x":10.8123,"skY":69.7025,"y":13.3506,"skX":69.7025},"length":66,"parent":"鼻子"},{"name":"尾巴2","transform":{"x":63.0624,"skY":-59.0609,"skX":-59.0609},"length":52,"parent":"尾巴1"},{"name":"左手2","transform":{"x":27.5566,"skY":-40.1087,"skX":-40.1087},"length":55,"parent":"左手1"},{"name":"右手2","transform":{"x":47.2479,"skY":-106.1572,"skX":-106.1572},"length":37,"parent":"右手1"},{"name":"bone2","transform":{"x":52.2431,"skY":-49.7262,"skX":-49.7262},"length":61,"parent":"尾巴2"}],"frameRate":24,"aabb":{"x":710.308561974626,"height":483.5647539622176,"y":285.4193106747044,"width":362.6105263157899},"canvas":{"x":0,"height":1600,"y":0,"width":2176},"animation":[{"name":"begin","frame":[],"bone":[{"name":"root","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"bone","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"领带","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":1.7096,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":1.7096,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":24},{"tweenEasing":0,"y":-2.769,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"y":-2.769,"duration":24},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左腿","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-1.656,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-1.656,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-2.7551,"y":0.2771,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-2.7551,"y":0.2771,"duration":24},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右腿","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-1.656,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-1.656,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-2.7551,"y":0.2771,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-2.7551,"y":0.2771,"duration":24},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"bone1","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":10.0266,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":10.0266,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-1.298,"y":-9.9228,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-1.298,"y":-9.9228,"duration":24},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"领带1","rotateFrame":[{"duration":12,"tweenEasing":0},{"duration":12,"rotate":-6.0264,"tweenEasing":0},{"duration":12,"rotate":-7.2656,"tweenEasing":0},{"duration":12,"rotate":-1.7867,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":12,"rotate":-6.0264,"tweenEasing":0},{"duration":12,"rotate":-7.2656,"tweenEasing":0},{"duration":12,"rotate":-1.7867,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"尾巴","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-12.8988,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-12.8988,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左手","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":27.8631,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":27.8631,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右手","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-3.1516,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-3.1516,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"眼镜","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"帽子","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-3.153,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-3.153,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"鼻子","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左眉毛","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左眼","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":6},{"tweenEasing":0,"duration":36},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":6},{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"领带2","rotateFrame":[{"duration":12,"tweenEasing":0},{"duration":12,"rotate":4.3629,"tweenEasing":0},{"duration":12,"rotate":-7.231,"tweenEasing":0},{"duration":12,"rotate":-16.1684,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":12,"rotate":4.3629,"tweenEasing":0},{"duration":12,"rotate":-7.231,"tweenEasing":0},{"duration":12,"rotate":-16.1684,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右眼","rotateFrame":[{"duration":12,"tweenEasing":0},{"duration":36,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":6},{"tweenEasing":0,"duration":36},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":6},{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"尾巴1","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":7.109,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":7.109,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右眉毛","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左手1","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-20.969,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-20.969,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"嘴","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"duration":0}]},{"name":"右手1","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":2.3286,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":2.3286,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左耳","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-13.8027,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-13.8027,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右耳","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":25.9315,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":25.9315,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左手2","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":6.5829,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":6.5829,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"胡子1","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"尾巴2","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-6.2263,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-6.2263,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"duration":24},{"duration":0}]},{"name":"胡子","rotateFrame":[{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右手2","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":8.6942,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":8.6942,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"bone2","rotateFrame":[{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-12.1888,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-12.1888,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]}],"playTimes":0,"ffd":[],"slot":[{"name":"尾巴","displayFrame":[],"colorFrame":[]},{"name":"右腿","displayFrame":[],"colorFrame":[]},{"name":"左腿","displayFrame":[],"colorFrame":[]},{"name":"右手","displayFrame":[],"colorFrame":[]},{"name":"左手","displayFrame":[],"colorFrame":[]},{"name":"领带","displayFrame":[],"colorFrame":[]},{"name":"右耳","displayFrame":[],"colorFrame":[]},{"name":"左耳","displayFrame":[],"colorFrame":[]},{"name":"组_1","displayFrame":[],"colorFrame":[]},{"name":"右眼","displayFrame":[],"colorFrame":[]},{"name":"右眉毛","displayFrame":[],"colorFrame":[]},{"name":"左眼","displayFrame":[],"colorFrame":[]},{"name":"左眉毛","displayFrame":[],"colorFrame":[]},{"name":"眼镜","displayFrame":[],"colorFrame":[]},{"name":"胡子","displayFrame":[],"colorFrame":[]},{"name":"鼻子","displayFrame":[],"colorFrame":[]},{"name":"嘴","displayFrame":[],"colorFrame":[]},{"name":"帽子","displayFrame":[],"colorFrame":[]},{"name":"影子","displayFrame":[],"colorFrame":[]},{"name":"身体","displayFrame":[],"colorFrame":[]},{"name":"左手伸直","displayFrame":[{"duration":96,"value":-1}],"colorFrame":[]},{"name":"右手伸直","displayFrame":[{"duration":96,"value":-1}],"colorFrame":[]}],"ik":[],"duration":96},{"name":"normal","frame":[],"bone":[{"name":"root","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"bone","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"领带","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":18},{"tweenEasing":0,"y":-2.0329,"duration":18},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"左腿","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":18},{"tweenEasing":0,"x":-3.3712,"y":0.3391,"duration":18},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"右腿","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":18},{"tweenEasing":0,"x":-3.3712,"y":0.3391,"duration":18},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"bone1","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":5.0458,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"领带1","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":4.4081,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"尾巴","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":-9.2734,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"左手","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":-3.9571,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"右手","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":-4.1269,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"眼镜","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"帽子","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"鼻子","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"左眉毛","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"左眼","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":9},{"tweenEasing":0,"x":0.2,"duration":9},{"tweenEasing":0,"duration":18},{"duration":0}]},{"name":"领带2","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":6.5924,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"右眼","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":9},{"tweenEasing":0,"x":0.2,"duration":9},{"tweenEasing":0,"duration":18},{"duration":0}]},{"name":"尾巴1","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":5.0456,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"右眉毛","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"左手1","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"嘴","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"右手1","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":-0.5975,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"左耳","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":-5.8134,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"右耳","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":5.67,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"左手2","rotateFrame":[{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"胡子1","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":-4.6385,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"尾巴2","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":-4.7872,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"胡子","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":3.4123,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"右手2","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":7.7593,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"bone2","rotateFrame":[{"duration":18,"tweenEasing":0},{"duration":18,"rotate":-4.5584,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":36},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":36},{"duration":0}]}],"playTimes":0,"ffd":[],"slot":[{"name":"尾巴","displayFrame":[],"colorFrame":[]},{"name":"右腿","displayFrame":[],"colorFrame":[]},{"name":"左腿","displayFrame":[],"colorFrame":[]},{"name":"右手","displayFrame":[],"colorFrame":[]},{"name":"左手","displayFrame":[],"colorFrame":[]},{"name":"领带","displayFrame":[],"colorFrame":[]},{"name":"右耳","displayFrame":[],"colorFrame":[]},{"name":"左耳","displayFrame":[],"colorFrame":[]},{"name":"组_1","displayFrame":[],"colorFrame":[]},{"name":"右眼","displayFrame":[],"colorFrame":[]},{"name":"右眉毛","displayFrame":[],"colorFrame":[]},{"name":"左眼","displayFrame":[],"colorFrame":[]},{"name":"左眉毛","displayFrame":[],"colorFrame":[]},{"name":"眼镜","displayFrame":[],"colorFrame":[]},{"name":"胡子","displayFrame":[],"colorFrame":[]},{"name":"鼻子","displayFrame":[],"colorFrame":[]},{"name":"嘴","displayFrame":[],"colorFrame":[]},{"name":"帽子","displayFrame":[],"colorFrame":[]},{"name":"影子","displayFrame":[],"colorFrame":[]},{"name":"身体","displayFrame":[],"colorFrame":[]},{"name":"左手伸直","displayFrame":[{"duration":36,"value":-1}],"colorFrame":[]},{"name":"右手伸直","displayFrame":[{"duration":36,"value":-1}],"colorFrame":[]}],"ik":[],"duration":36},{"name":"finish","frame":[],"bone":[{"name":"root","rotateFrame":[{"duration":50,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"bone","rotateFrame":[{"duration":50,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"领带","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":-3.8619,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":1.7096,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":1.7096,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":26},{"tweenEasing":0,"y":-7.6181,"duration":24},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"y":-2.769,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"y":-2.769,"duration":24},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左腿","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":6.305,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-1.656,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-1.656,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":26},{"tweenEasing":0,"x":-5.4386,"y":0.1786,"duration":24},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-2.7551,"y":0.2771,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-2.7551,"y":0.2771,"duration":24},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右腿","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":6.305,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-1.656,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-1.656,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":26},{"tweenEasing":0,"x":-6.7031,"y":-5.1693,"duration":24},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-2.7551,"y":0.2771,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-2.7551,"y":0.2771,"duration":24},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"bone1","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":9.5597,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":10.0266,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":10.0266,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-1.298,"y":-9.9228,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"x":-1.298,"y":-9.9228,"duration":24},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"领带1","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":17.3385,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":12,"rotate":-6.0264,"tweenEasing":0},{"duration":12,"rotate":-7.2656,"tweenEasing":0},{"duration":12,"rotate":-1.7867,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":12,"rotate":-6.0264,"tweenEasing":0},{"duration":12,"rotate":-7.2656,"tweenEasing":0},{"duration":12,"rotate":-1.7867,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"尾巴","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":-19.1782,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-12.8988,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-12.8988,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左手","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":-12.0712,"tweenEasing":0},{"duration":25,"tweenEasing":0},{"duration":24,"rotate":27.8631,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":27.8631,"tweenEasing":0},{"duration":9}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":49},{"tweenEasing":0,"duration":48},{"duration":9}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":49},{"tweenEasing":0,"duration":48},{"duration":9}]},{"name":"右手","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":22,"rotate":18.0014,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-3.1516,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-3.1516,"tweenEasing":0},{"duration":2}],"translateFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":2}],"scaleFrame":[{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":2}]},{"name":"眼镜","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":36,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":14},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":13.048,"y":-0.5502,"duration":6},{"tweenEasing":0,"x":0.692,"y":0.5317,"duration":24},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":14},{"tweenEasing":0,"duration":36},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"帽子","rotateFrame":[{"duration":50,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-3.153,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-3.153,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":8},{"tweenEasing":0,"x":7.457,"y":1.5583,"duration":6},{"tweenEasing":0,"x":-6.6664,"y":1.1384,"duration":36},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"鼻子","rotateFrame":[{"duration":50,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左眉毛","rotateFrame":[{"duration":50,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":8},{"tweenEasing":0,"x":6.4728,"y":0.8607,"duration":42},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左眼","rotateFrame":[{"duration":50,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":4},{"tweenEasing":0,"duration":16},{"tweenEasing":0,"duration":4},{"tweenEasing":0,"x":0.2,"duration":4},{"tweenEasing":0,"duration":16},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":6},{"tweenEasing":0,"duration":36},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":6},{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"领带2","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":20,"rotate":-13.0313,"tweenEasing":0},{"duration":16,"rotate":14.5197,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":12,"rotate":4.3629,"tweenEasing":0},{"duration":12,"rotate":-7.231,"tweenEasing":0},{"duration":12,"rotate":-16.1684,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":12,"rotate":4.3629,"tweenEasing":0},{"duration":12,"rotate":-7.231,"tweenEasing":0},{"duration":12,"rotate":-16.1684,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右眼","rotateFrame":[{"duration":50,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":36,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":36,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":4},{"tweenEasing":0,"duration":16},{"tweenEasing":0,"duration":4},{"tweenEasing":0,"x":0.2,"duration":4},{"tweenEasing":0,"duration":16},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":6},{"tweenEasing":0,"duration":36},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"x":0.2,"duration":6},{"tweenEasing":0,"duration":36},{"duration":0}]},{"name":"尾巴1","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":6.1561,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":7.109,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":7.109,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右眉毛","rotateFrame":[{"duration":50,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":8},{"tweenEasing":0,"x":6.4728,"y":0.8607,"duration":42},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左手1","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":36,"rotate":-76.2623,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-20.969,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-20.969,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"嘴","rotateFrame":[{"duration":50,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":8},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"tweenEasing":0,"duration":6},{"tweenEasing":0,"y":0.2,"duration":6},{"duration":0}]},{"name":"右手1","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":12,"rotate":-106.3868,"tweenEasing":0},{"duration":24,"rotate":-26.2264,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":2.3286,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":2.3286,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左耳","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":12,"rotate":-14.9384,"tweenEasing":0},{"duration":12,"rotate":5.3691,"tweenEasing":0},{"duration":12,"rotate":-13.3337,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-13.8027,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-13.8027,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右耳","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":12,"rotate":14.6986,"tweenEasing":0},{"duration":12,"rotate":4.7716,"tweenEasing":0},{"duration":12,"rotate":12.1816,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":25.9315,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":25.9315,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"左手2","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":12,"rotate":35.243,"tweenEasing":0},{"duration":24,"rotate":30.1214,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":6.5829,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":6.5829,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"胡子1","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":6,"rotate":4.4556,"tweenEasing":0},{"duration":6,"rotate":-19.7558,"tweenEasing":0},{"duration":8,"rotate":10.9587,"tweenEasing":0},{"duration":8,"rotate":-11.7808,"tweenEasing":0},{"duration":8,"rotate":17.3524,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"尾巴2","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":-18.3593,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-6.2263,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-6.2263,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"duration":24},{"tweenEasing":0,"duration":24},{"duration":0}]},{"name":"胡子","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":6,"rotate":-0.0026,"tweenEasing":0},{"duration":6,"rotate":13.7518,"tweenEasing":0},{"duration":8,"rotate":-4.6954,"tweenEasing":0},{"duration":8,"rotate":17.3351,"tweenEasing":0},{"duration":8,"rotate":-7.5326,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":48,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"右手2","rotateFrame":[{"duration":14,"tweenEasing":0},{"duration":12,"rotate":112.3086,"tweenEasing":0},{"duration":24,"rotate":37.7087,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":8.6942,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":8.6942,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]},{"name":"bone2","rotateFrame":[{"duration":26,"tweenEasing":0},{"duration":24,"rotate":-9.3495,"tweenEasing":0},{"duration":10,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-12.1888,"tweenEasing":0},{"duration":24,"tweenEasing":0},{"duration":24,"rotate":-12.1888,"tweenEasing":0},{"duration":0}],"translateFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}],"scaleFrame":[{"tweenEasing":0,"duration":50},{"tweenEasing":0,"duration":10},{"tweenEasing":0,"duration":48},{"tweenEasing":0,"duration":48},{"duration":0}]}],"playTimes":0,"ffd":[],"slot":[{"name":"尾巴","displayFrame":[],"colorFrame":[]},{"name":"右腿","displayFrame":[],"colorFrame":[]},{"name":"左腿","displayFrame":[],"colorFrame":[]},{"name":"右手","displayFrame":[{"duration":3},{"duration":2,"value":-1},{"duration":45,"value":-1},{"duration":106}],"colorFrame":[]},{"name":"左手","displayFrame":[{"duration":3},{"duration":2,"value":-1},{"duration":45,"value":-1},{"duration":106}],"colorFrame":[]},{"name":"领带","displayFrame":[],"colorFrame":[]},{"name":"右耳","displayFrame":[],"colorFrame":[]},{"name":"左耳","displayFrame":[],"colorFrame":[]},{"name":"组_1","displayFrame":[],"colorFrame":[]},{"name":"右眼","displayFrame":[],"colorFrame":[]},{"name":"右眉毛","displayFrame":[],"colorFrame":[]},{"name":"左眼","displayFrame":[],"colorFrame":[]},{"name":"左眉毛","displayFrame":[],"colorFrame":[]},{"name":"眼镜","displayFrame":[],"colorFrame":[]},{"name":"胡子","displayFrame":[],"colorFrame":[]},{"name":"鼻子","displayFrame":[],"colorFrame":[]},{"name":"嘴","displayFrame":[],"colorFrame":[]},{"name":"帽子","displayFrame":[],"colorFrame":[]},{"name":"影子","displayFrame":[],"colorFrame":[]},{"name":"身体","displayFrame":[],"colorFrame":[]},{"name":"左手伸直","displayFrame":[{"duration":3,"value":-1},{"duration":2},{"duration":45},{"duration":106,"value":-1}],"colorFrame":[]},{"name":"右手伸直","displayFrame":[{"duration":3,"value":-1},{"duration":2},{"duration":45},{"duration":8,"value":-1},{"duration":98,"value":-1}],"colorFrame":[]}],"ik":[],"duration":156}],"skin":[{"name":"","slot":[{"name":"鼻子","display":[{"name":"猫01/鼻子","transform":{"x":0.6893,"skY":62.2415,"y":-0.1933,"skX":62.2415},"type":"image","path":"猫01/鼻子"}]},{"name":"身体","display":[{"bonePose":[2,0.10006862050548088,-0.9949805380961629,0.9949805380961629,0.10006862050548088,-26.4,128.95,5,-0.23092160580048127,-0.9729723593065361,0.9729723593065361,-0.23092160580048127,5.200000000000003,5.750000000000014],"userEdges":[],"slotPose":[1,0,0,1,-17,62],"weights":[1,5,1,1,5,1,2,2,0.6890456427703172,5,0.31095435722968284,2,2,0.8737792266327024,5,0.12622077336729756,2,2,0.9246026735291119,5,0.0753973264708881,2,2,0.8441279451809226,5,0.15587205481907737,2,2,0.7438188647372951,5,0.25618113526270503,2,2,0.458852511481229,5,0.541147488518771,1,5,1,1,5,1],"transform":{"x":10,"y":-38.75},"type":"mesh","width":122,"name":"猫01/身体","uvs":[0.45041,0.00556,0.12418,0.12861,0.0168,0.3625,0,0.80194,0.09139,1,0.9123,1,1,0.80194,1,0.41944,1,0.10028,0.82377,0],"height":180,"vertices":[-6.05,-89,-45.85,-66.85,-58.95,-24.75,-61,54.35,-49.85,90,50.3,90,61,54.35,61,-14.5,61,-71.95,39.5,-90],"path":"猫01/身体","triangles":[1,2,0,9,0,7,0,2,7,2,3,7,9,7,8,4,5,6,3,4,6,7,3,6],"edges":[0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,0]}]},{"name":"左眉毛","display":[{"name":"猫01/左眉毛","transform":{"x":3.113,"skY":19.409,"y":1.998,"skX":19.409},"type":"image","path":"猫01/左眉毛"}]},{"name":"影子","display":[{"name":"猫01/影子","transform":{"x":884.8534,"y":735.9841},"type":"image","path":"猫01/影子"}]},{"name":"眼镜","display":[{"name":"猫01/眼镜","transform":{"x":-1.5367,"skY":97.8429,"y":2.3624,"skX":97.8429},"type":"image","path":"猫01/眼镜"}]},{"name":"右耳","display":[{"name":"猫01/右耳","transform":{"x":24.8427,"skY":78.1755,"y":-7.2444,"skX":78.1755},"type":"image","path":"猫01/右耳"}]},{"name":"左耳","display":[{"name":"猫01/左耳","transform":{"x":7.2491,"skY":127.651,"y":4.5192,"skX":127.651},"type":"image","path":"猫01/左耳"}]},{"name":"组_1","display":[{"name":"猫01/组_1","transform":{"x":89.5565,"skY":103.3513,"y":0.4939,"skX":103.3513},"type":"image","path":"猫01/组_1"}]},{"name":"领带","display":[{"bonePose":[2,0.10006862050548088,-0.9949805380961629,0.9949805380961629,0.10006862050548088,-26.4,128.95,6,-3.885780586188048e-16,1,-1,-3.885780586188048e-16,-5.299999999999999,16.85000000000001,15,-0.02855977389887697,0.9995920864606948,-0.9995920864606948,-0.02855977389887697,-5.299999999999999,81.95,5,-0.23092160580048127,-0.9729723593065361,0.9729723593065361,-0.23092160580048127,5.200000000000003,5.750000000000014],"userEdges":[],"slotPose":[1.0000000000000002,6.938893903907228e-18,-6.938893903907228e-18,1.0000000000000002,-11.999999999999996,70.00000000000001],"weights":[1,2,1,1,2,1,1,2,1,1,5,1,1,5,1,1,5,1,1,2,1,1,2,1,2,15,0.5404804692408611,6,0.4595195307591388,2,15,0.9385812044988878,6,0.061418795501112136,2,15,0.9420585956610453,6,0.05794140433895465,2,15,0.5420950026535496,6,0.45790499734645035],"transform":{"x":-11.7538,"skY":-91.6366,"y":7.0386,"skX":-91.6366},"type":"mesh","width":120,"name":"猫01/领带","uvs":[0.46583,0.18397,0.25292,0.19872,0,0.15897,0,0.00288,0.57875,0,1,0,1,0.15417,0.65917,0.16891,0.6625,0.61314,0.685,1,0.39792,1,0.43375,0.61314],"height":156,"vertices":[-4.1,-49.3,-29.65,-47,-60,-53.2,-60,-77.55,9.45,-78,60,-78,60,-53.95,19.1,-51.65,19.5,17.65,22.2,78,-12.25,78,-7.95,17.65],"path":"猫01/领带","triangles":[4,7,5,5,7,6,0,11,8,0,8,7,4,0,7,8,11,9,11,10,9,1,0,4,3,1,4,3,2,1],"edges":[0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,0]}]},{"name":"帽子","display":[{"name":"猫01/帽子","transform":{"x":12.1614,"skY":20.7126,"y":6.1486,"skX":20.7126},"type":"image","path":"猫01/帽子"}]},{"name":"尾巴","display":[{"bonePose":[2,0.10006862050548088,-0.9949805380961629,0.9949805380961629,0.10006862050548088,-26.4,128.95,7,-0.9857652909736379,0.1681273062642085,-0.1681273062642085,-0.9857652909736379,-65.55000000000001,142.15000000000003,17,0.11417268347300655,-0.9934609193866524,0.9934609193866524,0.11417268347300655,-127.69999999999999,152.75000000000003,26,-0.793406064886026,-0.6086927108172653,0.6086927108172653,-0.793406064886026,-120.50000000000001,90.10000000000002,29,-0.9773007365750258,0.21185672113461934,-0.21185672113461934,-0.9773007365750258,-161.95000000000002,58.3],"userEdges":[],"slotPose":[1,-6.661338147750939e-16,6.661338147750939e-16,1,-133.49999999999997,108.50000000000007],"weights":[1,29,1,4,29,0.5227016984146547,26,0.43202636408426703,17,0.03465313859056454,7,0.010618798910513497,2,26,0.48,17,0.52,1,17,1,4,17,0.4911620289380977,7,0.486310553875708,26,0.015607726312633907,29,0.006919690873560398,4,17,0.4935498145297986,7,0.4918862208015806,26,0.010039731191844524,29,0.004524233476776202,1,7,1,1,7,1,1,2,1,1,2,1,1,2,1,1,7,1,1,7,1,4,7,0.7433172546809301,17,0.24222335523992874,26,0.01106360379462275,29,0.0033957862845183373,1,17,1,2,26,0.48,17,0.52,1,26,1,4,29,0.7305281686669947,26,0.2600263049428544,17,0.007092878355418108,7,0.002352648034732981,1,29,1],"transform":{"x":-0.8857,"skY":142.505,"y":-22.5117,"skX":142.505},"type":"mesh","width":175,"name":"猫01/尾巴","uvs":[0.00514,0.23853,0.31057,0.16835,0.45657,0.27477,0.50629,0.53807,0.46914,0.88945,0.52057,1,0.69714,1,0.86914,0.96422,1,0.81972,1,0.62844,0.92057,0.63899,0.82286,0.75,0.68286,0.82752,0.60543,0.82477,0.63114,0.57706,0.61057,0.2,0.45143,0,0.28571,0,0,0],"height":109,"vertices":[-86.6,-28.5,-33.15,-36.15,-7.6,-24.55,1.1,4.15,-5.4,42.45,3.6,54.5,34.5,54.5,64.6,50.6,87.5,34.85,87.5,14,73.6,15.15,56.5,27.25,32,35.7,18.45,35.4,22.95,8.4,19.35,-32.7,-8.5,-54.5,-37.5,-54.5,-87.5,-54.5],"path":"猫01/尾巴","triangles":[10,11,8,11,7,8,10,8,9,12,6,11,11,6,7,15,3,14,12,13,6,13,5,6,2,3,15,3,13,14,16,2,15,4,5,13,3,4,13,16,1,2,17,1,16,17,0,1,18,0,17],"edges":[0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,0]}]},{"name":"嘴","display":[{"name":"猫01/嘴","transform":{"x":2.7,"y":0.4},"type":"image","path":"猫01/嘴"}]},{"name":"左眼","display":[{"name":"猫01/左眼","transform":{"x":2.2392,"skY":103.3513,"y":5.7217,"skX":103.3513},"type":"image","path":"猫01/左眼"}]},{"name":"右手伸直","display":[{"name":"猫01伸/右手伸直","transform":{"x":-6.0558,"skY":-52.1105,"y":-53.1162,"skX":-52.1105},"type":"image","path":"猫01伸/右手伸直"}]},{"name":"左腿","display":[{"name":"猫01/左腿","transform":{"x":16.201,"skY":-91.0238,"y":2.711,"skX":-91.0238},"type":"image","path":"猫01/左腿"}]},{"name":"右眼","display":[{"name":"猫01/右眼","transform":{"x":1.7338,"skY":103.3513,"y":5.0365,"skX":103.3513},"type":"image","path":"猫01/右眼"}]},{"name":"胡子","display":[{"bonePose":[24,-0.9086924368221263,0.41746623248146225,-0.41746623248146225,-0.9086924368221263,0,-54.9,25,0.9915333108690438,0.12985258348247164,-0.12985258348247164,0.9915333108690438,34.7,-61.65],"userEdges":[],"slotPose":[0.9999999999999999,-2.498001805406602e-16,2.498001805406602e-16,0.9999999999999999,21.000000000000007,-42.499999999999986],"weights":[2,24,0.5957227179303393,25,0.4042772820696607,1,24,1,1,24,1,1,24,1,1,24,1,2,24,0.5465316356128019,25,0.4534683643871981,1,25,1,1,25,1,1,25,1,1,25,1,1,25,1],"transform":{"x":-11.0973,"skY":-7.4611,"y":20.7668,"skX":-7.4611},"type":"mesh","width":176,"name":"猫01/胡子","uvs":[0.47727,0.42941,0.14858,0.99941,0,0.99941,0,0.25294,0.16619,0.11824,0.46989,0.26824,0.62784,0.07647,0.83381,0,1,0,1,0.81412,0.76108,0.56471],"height":85,"vertices":[-4,-6,-61.85,42.45,-88,42.45,-88,-21,-58.75,-32.45,-5.3,-19.7,22.5,-36,58.75,-42.5,88,-42.5,88,26.7,45.95,5.5],"path":"猫01/胡子","triangles":[10,9,8,7,10,8,6,10,7,6,0,10,5,0,6,5,4,0,4,1,0,3,2,1,3,1,4],"edges":[0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,0]}]},{"name":"右腿","display":[{"name":"猫01/右腿","transform":{"x":23.5727,"skY":-75.4548,"y":-10.6202,"skX":-75.4548},"type":"image","path":"猫01/右腿"}]},{"name":"右手","display":[{"bonePose":[2,0.10006862050548088,-0.9949805380961629,0.9949805380961629,0.10006862050548088,-26.4,128.95,9,0.6141409115204024,0.7891963892447109,-0.7891963892447109,0.6141409115204024,31.80000000000001,23.89999999999999,21,-0.8582390203981698,0.5132502156511869,-0.5132502156511869,-0.8582390203981698,74.25,78.44999999999999,28,0.7318029361026762,0.6815162967321489,-0.6815162967321489,0.7318029361026762,33.70000000000001,102.69999999999999],"userEdges":[],"slotPose":[1,1.6653345369377348e-16,-1.6653345369377348e-16,1,56.49999999999999,72],"weights":[3,9,0.9332953684052754,21,0.03988697109198161,28,0.026817660502743007,1,2,1,1,2,1,1,9,1,2,9,0.56,21,0.44,1,21,1,2,28,0.55,21,0.45,1,28,1,1,28,1,1,28,1,1,28,1,1,28,1,1,28,1,1,28,1,1,28,1,1,28,1,2,28,0.55,21,0.45,1,21,1,1,21,1,3,21,0.4586177517259628,9,0.4535368207985339,28,0.0878454274755032,2,9,0.56,21,0.44,1,9,1,1,9,1,1,9,1,1,9,1],"transform":{"x":-4.2374,"skY":-42.9622,"y":-38.0049,"skX":-42.9622},"type":"mesh","width":69,"name":"猫01/右手","uvs":[0.26884,0,0,0,0,0.39918,0.1587,0.41721,0.37391,0.55164,0.16449,0.59098,0.00507,0.70041,0,0.77664,0.03116,0.8832,0.3,1,0.72101,1,0.77536,0.91557,0.71957,0.84959,0.61522,0.81107,0.46667,0.81311,0.43913,0.81557,0.42029,0.80246,0.66667,0.78443,0.90507,0.73402,1,0.65492,1,0.58811,1,0.47828,0.92319,0.34221,0.70217,0.1791,0.36522,0.02336],"height":122,"vertices":[-15.95,-61,-34.5,-61,-34.5,-12.3,-23.55,-10.1,-8.7,6.3,-23.15,11.1,-34.15,24.45,-34.5,33.75,-32.35,46.75,-13.8,61,15.25,61,19,50.7,15.15,42.65,7.95,37.95,-2.3,38.2,-4.2,38.5,-5.5,36.9,11.5,34.7,27.95,28.55,34.5,18.9,34.5,10.75,34.5,-2.65,29.2,-19.25,13.95,-39.15,-9.3,-58.15],"path":"猫01/右手","triangles":[22,4,21,17,18,20,4,17,20,21,4,20,18,19,20,23,4,22,3,4,23,12,10,11,4,16,17,13,14,10,14,9,10,13,10,12,15,9,14,24,3,23,1,3,0,0,3,24,5,6,16,8,9,16,4,5,16,16,9,15,6,7,16,7,8,16,1,2,3],"edges":[0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,0]}]},{"name":"左手","display":[{"bonePose":[2,0.10006862050548088,-0.9949805380961629,0.9949805380961629,0.10006862050548088,-26.4,128.95,8,-0.628061234545813,0.7781639195316045,-0.7781639195316045,-0.628061234545813,-66.7,22,19,-0.564293574788866,-0.8255742010576654,0.8255742010576654,-0.564293574788866,-98.5,61.400000000000006,27,-0.9634528338167091,-0.267878026367511,0.267878026367511,-0.9634528338167091,-114.05000000000001,38.650000000000006],"userEdges":[],"slotPose":[0.9999999999999998,4.440892098500626e-16,-4.440892098500626e-16,0.9999999999999998,-116,41.99999999999999],"weights":[1,27,1,1,27,1,2,27,0.52,19,0.48,3,19,0.5,8,0.29,27,0.21,2,19,0.53,8,0.47000000000000003,2,19,0.49,8,0.51,1,2,1,1,2,1,1,2,1,2,2,0.64,8,0.36,2,8,0.81,2,0.19,2,19,0.49,8,0.51,2,19,0.73,8,0.27,2,27,0.52,19,0.48,1,27,1,1,27,1,1,27,1],"transform":{"x":0.9813,"skY":164.462,"y":-3.7499,"skX":164.462},"type":"mesh","width":124,"name":"猫01/左手","uvs":[0,0.44257,0.07621,0.56284,0.37742,0.60135,0.41734,0.83581,0.53871,1,0.66532,1,0.87742,0.81351,1,0.36622,1,0,0.84556,0,0.70887,0.18176,0.61815,0.30878,0.59758,0.26622,0.49274,0.10338,0.37379,0.05878,0.26774,0,0,0],"height":74,"vertices":[-62,-4.25,-52.55,4.65,-15.2,7.5,-10.25,24.85,4.8,37,20.5,37,46.8,23.2,62,-9.9,62,-37,42.85,-37,25.9,-23.55,14.65,-14.15,12.1,-17.3,-0.9,-29.35,-15.65,-32.65,-28.8,-37,-62,-37],"path":"猫01/左手","triangles":[10,6,7,9,10,7,9,7,8,10,11,6,11,5,6,3,4,11,2,3,11,11,4,5,12,2,11,13,2,12,14,2,13,14,15,2,15,1,2,0,1,15,16,0,15],"edges":[0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,0]}]},{"name":"左手伸直","display":[{"name":"猫01伸/左手伸直","transform":{"x":-0.9077,"skY":-128.9072,"y":53.8063,"skX":-128.9072},"type":"image","path":"猫01伸/左手伸直"}]},{"name":"右眉毛","display":[{"name":"猫01/右眉毛","transform":{"x":8.65,"y":-0.05},"type":"image","path":"猫01/右眉毛"}]}]}],"defaultActions":[{"gotoAndPlay":"begin"}],"ik":[],"type":"Armature"}],"frameRate":24,"isGlobal":0}
\ No newline at end of file
{
"ver": "1.0.1",
"uuid": "3b762855-a2f2-4947-a9a8-5fbefe3c5806",
"subMetas": {}
}
\ No newline at end of file
{"name":"mao","imagePath":"mao_tex.png","SubTexture":[{"name":"猫01/影子","x":1,"height":66,"y":343,"width":337},{"name":"猫01/尾巴","x":1,"height":109,"y":188,"width":175},{"name":"猫01/右腿","x":178,"height":117,"y":188,"width":104},{"name":"猫01/左腿","x":1,"height":115,"y":569,"width":64},{"name":"猫01/右手","x":427,"height":122,"y":590,"width":69},{"name":"猫01/左手","x":301,"height":74,"y":590,"width":124},{"name":"猫01伸/左手伸直","x":299,"height":169,"y":1,"width":168},{"name":"猫01伸/右手伸直","x":299,"height":169,"y":172,"width":168},{"name":"猫01/身体","x":340,"height":180,"y":343,"width":122},{"name":"猫01/领带","x":1,"height":156,"y":411,"width":120},{"name":"猫01/右耳","x":155,"height":76,"y":602,"width":90},{"name":"猫01/左耳","x":67,"height":85,"y":602,"width":86},{"name":"猫01/组_1","x":1,"height":185,"y":1,"width":296},{"name":"猫01/右眼","x":247,"height":60,"y":666,"width":59},{"name":"猫01/右眉毛","x":67,"height":5,"y":595,"width":33},{"name":"猫01/左眼","x":1,"height":60,"y":686,"width":59},{"name":"猫01/左眉毛","x":247,"height":12,"y":602,"width":31},{"name":"猫01/眼镜","x":301,"height":63,"y":525,"width":170},{"name":"猫01/胡子","x":123,"height":85,"y":515,"width":176},{"name":"猫01/鼻子","x":67,"height":24,"y":569,"width":28},{"name":"猫01/嘴","x":1,"height":30,"y":299,"width":65},{"name":"猫01/帽子","x":123,"height":102,"y":411,"width":158}],"height":1024,"width":512}
\ No newline at end of file
{
"ver": "1.0.1",
"uuid": "13437f14-c456-4c90-8a52-0b3de4838632",
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "6cb0a3b3-48aa-42a7-a692-58c5a5f6c46c",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 512,
"height": 1024,
"platformSettings": {},
"subMetas": {
"mao_tex": {
"ver": "1.0.4",
"uuid": "c36b1fcb-9a9c-422b-9910-e6f6688a8b12",
"rawTextureUuid": "6cb0a3b3-48aa-42a7-a692-58c5a5f6c46c",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -7.5,
"offsetY": 138.5,
"trimX": 1,
"trimY": 1,
"width": 495,
"height": 745,
"rawWidth": 512,
"rawHeight": 1024,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "2e8737c9-ef76-4dcd-98bd-03379d8c5634",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
{"frameRate":24,"name":"op-osmo","version":"5.5","compatibleVersion":"5.5","armature":[{"type":"Armature","frameRate":24,"name":"armatureName","aabb":{"x":-391.6,"y":-286.4,"width":773,"height":598},"bone":[{"name":"root","transform":{"scX":0.6,"scY":0.6}},{"length":139,"name":"书","parent":"root","transform":{"x":-15.6,"y":245.3,"skX":-90,"skY":-90}},{"length":222,"name":"指屏幕","parent":"root","transform":{"x":171.4,"y":309.7,"skX":-105.1567,"skY":-105.1567}},{"length":357,"name":"光","parent":"root","transform":{"x":-12.15,"y":-275.95,"skX":90.7286,"skY":90.7286}},{"name":"bone","parent":"root"},{"length":57,"name":"右-上手","parent":"书","transform":{"x":-48.45,"y":339.05,"skX":-12.5288,"skY":-12.5288}},{"length":38,"name":"左-上手","parent":"书","transform":{"x":-26.55,"y":-332.85,"skX":11.8232,"skY":11.8232}},{"name":"右-下手","parent":"右-上手","transform":{"x":48.6792,"y":76.43}},{"name":"左-下手","parent":"左-上手","transform":{"x":38.0594,"y":-62.2181}}],"slot":[{"name":"480","parent":"bone"},{"name":"左-下手","parent":"左-下手"},{"name":"右-下手","parent":"右-下手"},{"name":"书","parent":"书"},{"name":"左-上手","parent":"左-上手"},{"name":"右-上手","parent":"右-上手"},{"name":"p","parent":"root"},{"name":"闪光灯","parent":"root","color":{"aM":0}},{"name":"绿色按钮","parent":"root","color":{"aM":0}},{"name":"指屏幕","parent":"指屏幕","color":{"aM":0}},{"name":"光","parent":"光","color":{"aM":0}}],"skin":[{"slot":[{"name":"书","display":[{"name":"书","transform":{"x":82.3,"y":7.1,"skX":90,"skY":90}}]},{"name":"光","display":[{"name":"光","transform":{"x":296.92,"y":-4.43,"skX":-90.73,"skY":-90.73}}]},{"name":"指屏幕","display":[{"type":"mesh","name":"指屏幕","width":255,"height":430,"vertices":[7.88,-68.68,-5.66,-18.68,-28.7,66.35,-1.19,73.81,54.52,78.69,100.13,74.99,121.12,81.81,158.46,100.01,187.95,109.14,213.39,120.59,242.85,104.58,305.16,76.91,328.61,49.02,353.45,37.47,392.66,32.13,424.55,28.18,438.53,-13.67,443.18,-36.39,402.6,-42.83,357.83,-45.84,355.12,-86.51,347.41,-95.9,272.94,-116.07,229.62,-107.97,176.46,-97.24,124.04,-85.18,76.58,-74.05],"uvs":[0.45118,1.00012,0.65431,1.00012,0.9998,1.00012,0.9998,0.93384,0.96118,0.80581,0.90039,0.7057,0.90471,0.65442,0.93529,0.55953,0.93961,0.48779,0.95686,0.42372,0.86608,0.36733,0.69745,0.2443,0.56784,0.2086,0.49863,0.15988,0.43824,0.07512,0.39059,0.00593,0.21784,0,0.12706,0.00337,0.14431,0.09837,0.17882,0.2007,0.02765,0.23151,0,0.25453,0,0.43395,0.0751,0.52628,0.1702,0.63907,0.26961,0.74942,0.36039,0.84919],"triangles":[1,2,3,4,1,3,10,8,9,5,26,4,26,1,4,24,7,8,10,24,8,24,6,7,23,24,10,25,5,6,24,25,6,25,26,5,12,23,11,11,23,10,22,23,19,19,23,12,26,0,1,13,19,12,14,19,13,18,19,14,15,16,14,16,18,14,21,22,19,20,21,19,17,18,16],"edges":[0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,0],"userEdges":[]}]},{"name":"绿色按钮","display":[{"name":"绿色按钮","transform":{"x":-11.5,"y":-168.5}}]},{"name":"闪光灯","display":[{"name":"闪光灯","transform":{"x":-10.5,"y":-276}}]},{"name":"p","display":[{"name":"p","transform":{"x":-9,"y":-157.5}}]},{"name":"右-上手","display":[{"name":"右-上手","transform":{"x":42.43,"y":17.67,"skX":102.53,"skY":102.53}}]},{"name":"左-上手","display":[{"name":"左-上手","transform":{"x":22.95,"y":-4.34,"skX":78.18,"skY":78.18}}]},{"name":"左-下手","display":[{"name":"左-下手","transform":{"x":-0.41,"y":57.35,"skX":78.18,"skY":78.18}}]},{"name":"480","display":[{"name":"480","transform":{"scX":1.68,"scY":1.68}}]},{"name":"右-下手","display":[{"name":"右-下手","transform":{"x":8.12,"y":-56.59,"skX":102.53,"skY":102.53}}]}]}],"animation":[{"duration":130,"playTimes":0,"name":"normal","bone":[{"name":"书","translateFrame":[{"duration":11,"tweenEasing":0,"y":319.58},{"duration":26,"tweenEasing":0},{"duration":12,"tweenEasing":0},{"duration":24,"tweenEasing":0,"x":-136.71},{"duration":12,"tweenEasing":0,"x":-136.71},{"duration":45,"x":141.15}]},{"name":"右-上手","translateFrame":[{"duration":99},{"duration":15,"tweenEasing":0},{"duration":16,"x":-284.55}]},{"name":"左-上手","translateFrame":[{"duration":99},{"duration":15,"tweenEasing":0},{"duration":16,"x":-306.45,"y":2.98}]},{"name":"指屏幕","translateFrame":[{"duration":50},{"duration":5,"tweenEasing":0},{"duration":3,"tweenEasing":0,"x":-73.19,"y":-78.84},{"duration":3,"tweenEasing":0,"x":-73.19,"y":-78.84},{"duration":69}]}],"slot":[{"name":"闪光灯","colorFrame":[{"duration":11},{"tweenEasing":0,"value":{"aM":0}},{"duration":2,"tweenEasing":0},{"tweenEasing":0},{"tweenEasing":0,"value":{"aM":0}},{"tweenEasing":0,"value":{"aM":0}},{"tweenEasing":0},{"tweenEasing":0},{"duration":111,"value":{"aM":0}}]},{"name":"光","colorFrame":[{"duration":18,"tweenEasing":0,"value":{"aM":0}},{"tweenEasing":0,"value":{"aM":0}},{"duration":111}]}],"ffd":[{"name":"指屏幕","slot":"指屏幕","frame":[{"duration":50},{"duration":5,"tweenEasing":0},{"duration":3,"tweenEasing":0,"vertices":[-79.69,-6.05,-97.34,0,-92.79,10.19]},{"duration":3,"tweenEasing":0,"vertices":[-79.69,-6.05,-97.34,0,-92.79,10.19]},{"duration":26,"tweenEasing":0},{"duration":5,"tweenEasing":0},{"duration":3,"tweenEasing":0,"vertices":[-79.69,-6.05,-97.34,0,-92.79,10.19]},{"duration":3,"tweenEasing":0,"vertices":[-79.69,-6.05,-97.34,0,-92.79,10.19]},{"duration":32}]}]}],"defaultActions":[{"gotoAndPlay":"normal"}],"canvas":{"width":760,"height":510}}]}
\ No newline at end of file
{
"ver": "1.0.1",
"uuid": "4645d6d5-a682-4781-ae60-15a57701ee55",
"subMetas": {}
}
\ No newline at end of file
{"name":"op-osmo","SubTexture":[{"name":"480","x":1,"height":488,"y":601,"width":728},{"name":"左-下手","x":772,"height":172,"y":1,"width":179},{"name":"右-下手","x":772,"height":172,"y":175,"width":179},{"name":"书","x":1,"height":312,"y":1091,"width":773},{"name":"左-上手","x":772,"height":143,"y":349,"width":102},{"name":"右-上手","x":876,"height":143,"y":349,"width":101},{"name":"p","x":1,"height":285,"y":1405,"width":362},{"name":"闪光灯","x":762,"height":27,"y":1033,"width":28},{"name":"绿色按钮","x":731,"height":29,"y":1033,"width":29},{"name":"指屏幕","x":731,"height":430,"y":601,"width":255},{"name":"光","x":1,"height":598,"y":1,"width":769}],"imagePath":"op-osmo_tex.png","height":2048,"width":1024}
\ No newline at end of file
{
"ver": "1.0.1",
"uuid": "71ab854c-938f-45ed-877a-a35bb3a4525b",
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "aac322ca-9f15-4ef2-aaf5-847f7ca1b29d",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1024,
"height": 2048,
"platformSettings": {},
"subMetas": {
"op-osmo_tex": {
"ver": "1.0.4",
"uuid": "ed323cb2-ab5d-4da1-8dce-09de5e3ef255",
"rawTextureUuid": "aac322ca-9f15-4ef2-aaf5-847f7ca1b29d",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -18.5,
"offsetY": 178.5,
"trimX": 1,
"trimY": 1,
"width": 985,
"height": 1689,
"rawWidth": 1024,
"rawHeight": 2048,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
...@@ -57,8 +57,8 @@ ...@@ -57,8 +57,8 @@
"_is3DNode": true, "_is3DNode": true,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"autoReleaseAssets": true, "autoReleaseAssets": false,
"_id": "57ea7c61-9b8b-498a-b024-c98ee9124beb" "_id": "dc1f1180-1ff4-4e67-b2e5-ad8dd02745b0"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
...@@ -72,25 +72,28 @@ ...@@ -72,25 +72,28 @@
"__id__": 3 "__id__": 3
}, },
{ {
"__id__": 5 "__id__": 8
}, },
{ {
"__id__": 7 "__id__": 31
}, },
{ {
"__id__": 14 "__id__": 35
},
{
"__id__": 63
} }
], ],
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 24 "__id__": 69
}, },
{ {
"__id__": 25 "__id__": 70
}, },
{ {
"__id__": 26 "__id__": 71
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -104,8 +107,8 @@ ...@@ -104,8 +107,8 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 1280, "width": 2176,
"height": 720 "height": 1160
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -116,8 +119,8 @@ ...@@ -116,8 +119,8 @@
"__type__": "TypedArray", "__type__": "TypedArray",
"ctor": "Float64Array", "ctor": "Float64Array",
"array": [ "array": [
640, 1088,
360, 580,
0, 0,
0, 0,
0, 0,
...@@ -143,16 +146,23 @@ ...@@ -143,16 +146,23 @@
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "Main Camera", "_name": "bg",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 2 "__id__": 2
}, },
"_children": [], "_children": [
{
"__id__": 4
}
],
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 4 "__id__": 6
},
{
"__id__": 7
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -166,8 +176,8 @@ ...@@ -166,8 +176,8 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 1280, "width": 1088,
"height": 720 "height": 800
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -180,13 +190,13 @@ ...@@ -180,13 +190,13 @@
"array": [ "array": [
0, 0,
0, 0,
362.85545494732423, 0,
0, 0,
0, 0,
0, 0,
1, 1,
1, 2,
1, 2,
1 1
] ]
}, },
...@@ -201,56 +211,20 @@ ...@@ -201,56 +211,20 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "e1WoFrQ79G7r4ZuQE3HlNb" "_id": "32MJMZ2HRGF4BOf533Avyi"
},
{
"__type__": "cc.Camera",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 3
},
"_enabled": true,
"_cullingMask": 4294967295,
"_clearFlags": 7,
"_backgroundColor": {
"__type__": "cc.Color",
"r": 0,
"g": 0,
"b": 0,
"a": 255
},
"_depth": -1,
"_zoomRatio": 1,
"_targetTexture": null,
"_fov": 60,
"_orthoSize": 10,
"_nearClip": 1,
"_farClip": 4096,
"_ortho": true,
"_rect": {
"__type__": "cc.Rect",
"x": 0,
"y": 0,
"width": 1,
"height": 1
},
"_renderStages": 1,
"_alignWithScreen": true,
"_id": "81GN3uXINKVLeW4+iKSlim"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "bg", "_name": "bg_front",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 2 "__id__": 3
}, },
"_children": [], "_children": [],
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 6 "__id__": 5
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -264,8 +238,8 @@ ...@@ -264,8 +238,8 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 1280, "width": 1088,
"height": 720 "height": 231
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -277,7 +251,7 @@ ...@@ -277,7 +251,7 @@
"ctor": "Float64Array", "ctor": "Float64Array",
"array": [ "array": [
0, 0,
0, -284.5,
0, 0,
0, 0,
0, 0,
...@@ -299,14 +273,46 @@ ...@@ -299,14 +273,46 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "32MJMZ2HRGF4BOf533Avyi" "_id": "9a3tMPGW1Kppx0GOCpf41A"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 4
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "deb43340-7520-4981-b2d6-7cf54beaddda"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "ddOUQHQ31BnbF+/BSfYgRu"
}, },
{ {
"__type__": "cc.Sprite", "__type__": "cc.Sprite",
"_name": "", "_name": "",
"_objFlags": 0, "_objFlags": 0,
"node": { "node": {
"__id__": 5 "__id__": 3
}, },
"_enabled": true, "_enabled": true,
"_materials": [ "_materials": [
...@@ -317,7 +323,7 @@ ...@@ -317,7 +323,7 @@
"_srcBlendFactor": 770, "_srcBlendFactor": 770,
"_dstBlendFactor": 771, "_dstBlendFactor": 771,
"_spriteFrame": { "_spriteFrame": {
"__uuid__": "8288e3d4-4c75-4b27-8f01-f7014417f4dd" "__uuid__": "ee79b5fd-7a10-49eb-9071-742ba98290c9"
}, },
"_type": 0, "_type": 0,
"_sizeMode": 1, "_sizeMode": 1,
...@@ -333,23 +339,51 @@ ...@@ -333,23 +339,51 @@
"_atlas": null, "_atlas": null,
"_id": "97/S6HDq9MeqgmV1Zwnhbb" "_id": "97/S6HDq9MeqgmV1Zwnhbb"
}, },
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 3
},
"_enabled": true,
"alignMode": 1,
"_target": null,
"_alignFlags": 18,
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 0,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "25CGOfxQJOoYzCkH7XwtXz"
},
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "bottomPart", "_name": "content",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 2 "__id__": 2
}, },
"_children": [ "_children": [
{ {
"__id__": 8 "__id__": 9
},
{
"__id__": 11
} }
], ],
"_active": true, "_active": true,
"_components": [], "_components": [
{
"__id__": 30
}
],
"_prefab": null, "_prefab": null,
"_opacity": 255, "_opacity": 255,
"_color": { "_color": {
...@@ -361,8 +395,8 @@ ...@@ -361,8 +395,8 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 0, "width": 2061,
"height": 0 "height": 981
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -373,8 +407,8 @@ ...@@ -373,8 +407,8 @@
"__type__": "TypedArray", "__type__": "TypedArray",
"ctor": "Float64Array", "ctor": "Float64Array",
"array": [ "array": [
635.132, 0,
-356.326, 0,
0, 0,
0, 0,
0, 0,
...@@ -396,23 +430,30 @@ ...@@ -396,23 +430,30 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "8c7k8ep/ZFNpO263+1QHz9" "_id": "d7Jd4Mu7JBV4+6m46RJi1d"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "btn_left", "_name": "bg_green",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 7 "__id__": 8
}, },
"_children": [], "_children": [
"_active": true,
"_components": [
{ {
"__id__": 9 "__id__": 10
}, },
{ {
"__id__": 10 "__id__": 21
},
{
"__id__": 23
}
],
"_active": true,
"_components": [
{
"__id__": 29
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -426,8 +467,8 @@ ...@@ -426,8 +467,8 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 61, "width": 1031,
"height": 67 "height": 490
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -438,15 +479,15 @@ ...@@ -438,15 +479,15 @@
"__type__": "TypedArray", "__type__": "TypedArray",
"ctor": "Float64Array", "ctor": "Float64Array",
"array": [ "array": [
-148.464, 0,
34, 0,
0, 0,
0, 0,
0, 0,
0, 0,
1, 1,
1, 2,
1, 2,
1 1
] ]
}, },
...@@ -461,123 +502,30 @@ ...@@ -461,123 +502,30 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "5ad2wLQLxIN5Eg7OHecSH6" "_id": "dfRvzZ5ABCDbFZpbXlDw0c"
}, },
{ {
"__type__": "cc.Sprite", "__type__": "cc.Node",
"_name": "", "_name": "bg_word-background",
"_objFlags": 0, "_objFlags": 0,
"node": { "_parent": {
"__id__": 8 "__id__": 9
}, },
"_enabled": true, "_children": [
"_materials": [
{ {
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" "__id__": 11
},
{
"__id__": 14
} }
], ],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "ce19457d-e8f3-4c38-ae3e-d4b99208ddb5"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "84mqOgJ3JNqZrYVTEU8CjE"
},
{
"__type__": "cc.Button",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 8
},
"_enabled": true,
"_normalMaterial": null,
"_grayMaterial": null,
"duration": 0.1,
"zoomScale": 1.2,
"clickEvents": [],
"_N$interactable": true,
"_N$enableAutoGrayEffect": false,
"_N$transition": 0,
"transition": 0,
"_N$normalColor": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_N$pressedColor": {
"__type__": "cc.Color",
"r": 211,
"g": 211,
"b": 211,
"a": 255
},
"pressedColor": {
"__type__": "cc.Color",
"r": 211,
"g": 211,
"b": 211,
"a": 255
},
"_N$hoverColor": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"hoverColor": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_N$disabledColor": {
"__type__": "cc.Color",
"r": 124,
"g": 124,
"b": 124,
"a": 255
},
"_N$normalSprite": null,
"_N$pressedSprite": null,
"pressedSprite": null,
"_N$hoverSprite": null,
"hoverSprite": null,
"_N$disabledSprite": null,
"_N$target": null,
"_id": "bcYN/4EKBJhbIAfovo9Ah1"
},
{
"__type__": "cc.Node",
"_name": "btn_right",
"_objFlags": 0,
"_parent": {
"__id__": 7
},
"_children": [],
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 12 "__id__": 19
}, },
{ {
"__id__": 13 "__id__": 20
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -591,8 +539,8 @@ ...@@ -591,8 +539,8 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 60, "width": 523,
"height": 66 "height": 345
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -603,8 +551,8 @@ ...@@ -603,8 +551,8 @@
"__type__": "TypedArray", "__type__": "TypedArray",
"ctor": "Float64Array", "ctor": "Float64Array",
"array": [ "array": [
-47.164, 212.00700000000006,
34, 0,
0, 0,
0, 0,
0, 0,
...@@ -626,25 +574,90 @@ ...@@ -626,25 +574,90 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "46i3stdzpHX6zQHTGnRsNE" "_id": "9aq5hJYONDZayIAcJhu1Oc"
}, },
{ {
"__type__": "cc.Sprite", "__type__": "cc.Node",
"_name": "", "_name": "bg_xian",
"_objFlags": 0, "_objFlags": 0,
"node": { "_parent": {
"__id__": 11 "__id__": 10
}, },
"_enabled": true, "_children": [],
"_materials": [ "_active": false,
"_components": [
{ {
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" "__id__": 12
},
{
"__id__": 13
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 868,
"height": 4
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
-83,
0,
0,
0,
0,
1,
0.5,
0.5,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "e77Q3i4kNOVqw7iiEgba3e"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 11
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
} }
], ],
"_srcBlendFactor": 770, "_srcBlendFactor": 770,
"_dstBlendFactor": 771, "_dstBlendFactor": 771,
"_spriteFrame": { "_spriteFrame": {
"__uuid__": "e5a2dbaa-a677-4a32-90d7-a1b057d7fb59" "__uuid__": "0bb2c18d-fc3e-4d4a-8070-801b381de620"
}, },
"_type": 0, "_type": 0,
"_sizeMode": 1, "_sizeMode": 1,
...@@ -658,96 +671,1916 @@ ...@@ -658,96 +671,1916 @@
"_fillRange": 0, "_fillRange": 0,
"_isTrimmedMode": true, "_isTrimmedMode": true,
"_atlas": null, "_atlas": null,
"_id": "42Sh8QS/BHn4WiGyPQPKPt" "_id": "9aZRo8cjhMUq0CORTgtEl5"
}, },
{ {
"__type__": "cc.Button", "__type__": "cc.Widget",
"_name": "", "_name": "",
"_objFlags": 0, "_objFlags": 0,
"node": { "node": {
"__id__": 11 "__id__": 11
}, },
"_enabled": true, "_enabled": true,
"_normalMaterial": null, "alignMode": 1,
"_grayMaterial": null, "_target": {
"duration": 0.1, "__id__": 10
"zoomScale": 1.2, },
"clickEvents": [], "_alignFlags": 4,
"_N$interactable": true, "_left": 0,
"_N$enableAutoGrayEffect": false, "_right": 0,
"_N$transition": 0, "_top": 0,
"transition": 0, "_bottom": 88.5,
"_N$normalColor": { "_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "c9jjCHPuNMto1gE2IeJdC+"
},
{
"__type__": "cc.Node",
"_name": "text",
"_objFlags": 0,
"_parent": {
"__id__": 10
},
"_children": [
{
"__id__": 15
}
],
"_active": true,
"_components": [
{
"__id__": 18
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color", "__type__": "cc.Color",
"r": 255, "r": 255,
"g": 255, "g": 255,
"b": 255, "b": 255,
"a": 255 "a": 255
}, },
"_N$pressedColor": { "_contentSize": {
"__type__": "cc.Color", "__type__": "cc.Size",
"r": 211, "width": 880,
"g": 211, "height": 300
"b": 211,
"a": 255
}, },
"pressedColor": { "_anchorPoint": {
"__type__": "cc.Color", "__type__": "cc.Vec2",
"r": 211, "x": 0.5,
"g": 211, "y": 0.5
"b": 211,
"a": 255
}, },
"_N$hoverColor": { "_trs": {
"__type__": "cc.Color", "__type__": "TypedArray",
"r": 255, "ctor": "Float64Array",
"g": 255, "array": [
"b": 255, 0,
"a": 255 40,
0,
0,
0,
0,
1,
0.8,
0.8,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
}, },
"hoverColor": { "_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "ce4SoovfFIm6mMFJOMz20L"
},
{
"__type__": "cc.Node",
"_name": "icon_hand",
"_objFlags": 0,
"_parent": {
"__id__": 14
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 16
},
{
"__id__": 17
}
],
"_prefab": null,
"_opacity": 0,
"_color": {
"__type__": "cc.Color", "__type__": "cc.Color",
"r": 255, "r": 255,
"g": 255, "g": 255,
"b": 255, "b": 255,
"a": 255 "a": 255
}, },
"_N$disabledColor": { "_contentSize": {
"__type__": "cc.Color", "__type__": "cc.Size",
"r": 124, "width": 91,
"g": 124, "height": 156
"b": 124, },
"a": 255 "_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
101.625,
0,
0,
0,
0,
1,
0.5,
0.5,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "6fjZeYX+NN+YdszAZ4G40f"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 15
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "5d1e0d39-1f19-49c7-959c-ecc75c127ff8"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "30szB8045Mqpv95v6sQNd+"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 15
},
"_enabled": true,
"alignMode": 1,
"_target": {
"__id__": 10
},
"_alignFlags": 1,
"_left": 0,
"_right": 0,
"_top": 20,
"_bottom": 0,
"_verticalCenter": 22.16236440019011,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "37F5AZ/KZMjb4ZQqOtqgqN"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 14
},
"_enabled": true,
"alignMode": 1,
"_target": {
"__id__": 10
},
"_alignFlags": 16,
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 0,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "4bUVZG95FI4oLR4GE0+0OU"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 10
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "e61a88ac-0f60-44e6-9564-ad926b6759a8"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "72SgCbIIlMLJIdvxjSNjrv"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 10
},
"_enabled": true,
"alignMode": 1,
"_target": {
"__id__": 9
},
"_alignFlags": 32,
"_left": 0,
"_right": 41.99299999999997,
"_top": 0,
"_bottom": 0,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "8bptckn8hMFbwov8mkxDES"
},
{
"__type__": "cc.Node",
"_name": "pic",
"_objFlags": 0,
"_parent": {
"__id__": 9
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 22
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 850,
"height": 790
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-258,
20,
0,
0,
0,
0,
1,
0.5,
0.5,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "73U04DvVpE7LJJa0debI9Q"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 21
},
"_enabled": true,
"alignMode": 1,
"_target": {
"__id__": 9
},
"_alignFlags": 10,
"_left": 45,
"_right": 650,
"_top": 0,
"_bottom": 0,
"_verticalCenter": 20,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "c3uzRGQQ1MA5+m9sxOl7BW"
},
{
"__type__": "cc.Node",
"_name": "text2",
"_objFlags": 0,
"_parent": {
"__id__": 9
},
"_children": [
{
"__id__": 24
},
{
"__id__": 26
}
],
"_active": true,
"_components": [
{
"__id__": 28
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 300,
"height": 60
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-298.492,
-235,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "41aHdlIelGj4JLlGWVsIMY"
},
{
"__type__": "cc.Node",
"_name": "text2_bg",
"_objFlags": 0,
"_parent": {
"__id__": 23
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 25
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 299,
"height": 98
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "81susN5iBMTYDlE9W4+7zg"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 24
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "f8596c89-5b5a-48b3-b789-1c54ad3a137c"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "53D7v95wxAjLU1XKFo6htl"
},
{
"__type__": "cc.Node",
"_name": "content",
"_objFlags": 0,
"_parent": {
"__id__": 23
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 27
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 300,
"height": 60
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
20,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "a6Oo+nt/tGzauDDYC2bG+M"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 26
},
"_enabled": true,
"alignMode": 1,
"_target": null,
"_alignFlags": 4,
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 20,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "c3vkwxZklJ045sMTdWq1mA"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 23
},
"_enabled": true,
"alignMode": 1,
"_target": null,
"_alignFlags": 12,
"_left": 67.00799999999998,
"_right": 0,
"_top": 0,
"_bottom": -20,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "a36fgcd89BlKhoARjKvtk4"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 9
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "7571be05-f6ee-4272-b7af-46eaf5a8958e"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "384yJfcb5PaKU1g14mns6z"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 8
},
"_enabled": true,
"alignMode": 1,
"_target": null,
"_alignFlags": 18,
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 0,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "18F8g/rIVMLJXUUSQ37pU2"
},
{
"__type__": "cc.Node",
"_name": "tipFrame",
"_objFlags": 0,
"_parent": {
"__id__": 2
},
"_children": [
{
"__id__": 32
}
],
"_active": true,
"_components": [
{
"__id__": 34
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 1450.6666666666667,
"height": 773.3333333333334
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
362.85545,
0,
0,
0,
1,
1.5,
1.5,
1.5
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "064cMQSFVAxZazDWrzf/WT"
},
{
"__type__": "cc.Node",
"_name": "tip",
"_objFlags": 0,
"_parent": {
"__id__": 31
},
"_children": [],
"_active": false,
"_components": [
{
"__id__": 33
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 773,
"height": 598
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "8c/oFXM+xOEK+jtyROAj1N"
},
{
"__type__": "dragonBones.ArmatureDisplay",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 32
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_armatureName": "armatureName",
"_animationName": "",
"_preCacheMode": 0,
"_cacheMode": 0,
"playTimes": -1,
"premultipliedAlpha": false,
"_armatureKey": "4645d6d5-a682-4781-ae60-15a57701ee55#71ab854c-938f-45ed-877a-a35bb3a4525b",
"_accTime": 0,
"_playCount": 0,
"_frameCache": null,
"_curFrame": null,
"_playing": false,
"_armatureCache": null,
"_N$dragonAsset": {
"__uuid__": "4645d6d5-a682-4781-ae60-15a57701ee55"
},
"_N$dragonAtlasAsset": {
"__uuid__": "71ab854c-938f-45ed-877a-a35bb3a4525b"
},
"_N$_defaultArmatureIndex": 0,
"_N$_animationIndex": 0,
"_N$_defaultCacheMode": 0,
"_N$timeScale": 1,
"_N$debugBones": false,
"_N$enableBatch": false,
"_id": "941+DFVGlPa42h1XM2ZN4V"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 31
},
"_enabled": true,
"alignMode": 1,
"_target": null,
"_alignFlags": 45,
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 0,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "04JjY+rNlOFKRtDFwT0CiE"
},
{
"__type__": "cc.Node",
"_name": "res",
"_objFlags": 0,
"_parent": {
"__id__": 2
},
"_children": [
{
"__id__": 36
},
{
"__id__": 41
},
{
"__id__": 46
}
],
"_active": false,
"_components": [],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "0aAzbH6R1E+6AmGRrkKa5O"
},
{
"__type__": "cc.Node",
"_name": "font",
"_objFlags": 0,
"_parent": {
"__id__": 35
},
"_children": [
{
"__id__": 37
},
{
"__id__": 39
}
],
"_active": true,
"_components": [],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "9bLfcYeeNKrr524vzWchiM"
},
{
"__type__": "cc.Node",
"_name": "BRLNSDB",
"_objFlags": 0,
"_parent": {
"__id__": 36
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 38
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "cfMLGsq0BMhJARv+ySMAxS"
},
{
"__type__": "cc.Label",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 37
},
"_enabled": true,
"_materials": [],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_string": "",
"_N$string": "",
"_fontSize": 40,
"_lineHeight": 40,
"_enableWrapText": true,
"_N$file": {
"__uuid__": "c551970e-b095-45f3-9f1d-25cde8b8deb1"
},
"_isSystemFontUsed": false,
"_spacingX": 0,
"_batchAsBitmap": false,
"_styleFlags": 0,
"_underlineHeight": 0,
"_N$horizontalAlign": 0,
"_N$verticalAlign": 0,
"_N$fontFamily": "Arial",
"_N$overflow": 0,
"_N$cacheMode": 0,
"_id": "9bNHNPu5lC7rQYyr8ai/sY"
},
{
"__type__": "cc.Node",
"_name": "MuliBold-YzEVy",
"_objFlags": 0,
"_parent": {
"__id__": 36
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 40
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "986Ebpj69HTbsntvHr9gAq"
},
{
"__type__": "cc.Label",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 39
},
"_enabled": true,
"_materials": [],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_string": "",
"_N$string": "",
"_fontSize": 40,
"_lineHeight": 40,
"_enableWrapText": true,
"_N$file": null,
"_isSystemFontUsed": false,
"_spacingX": 0,
"_batchAsBitmap": false,
"_styleFlags": 0,
"_underlineHeight": 0,
"_N$horizontalAlign": 0,
"_N$verticalAlign": 0,
"_N$fontFamily": "Arial",
"_N$overflow": 0,
"_N$cacheMode": 0,
"_id": "1f3wEH5MRCAqvbldEOJVBa"
},
{
"__type__": "cc.Node",
"_name": "img",
"_objFlags": 0,
"_parent": {
"__id__": 35
},
"_children": [
{
"__id__": 42
},
{
"__id__": 44
}
],
"_active": true,
"_components": [],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "53LUHHG2pEr79fyrvazXJs"
},
{
"__type__": "cc.Node",
"_name": "icon",
"_objFlags": 0,
"_parent": {
"__id__": 41
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 43
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 138,
"height": 141
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "1blU2OArJIfoC9XfupGxJG"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 42
},
"_enabled": true,
"_materials": [],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": null,
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "03GEWUEZJGyKormWgIWCtM"
},
{
"__type__": "cc.Node",
"_name": "btn_photo",
"_objFlags": 0,
"_parent": {
"__id__": 41
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 45
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 319,
"height": 246
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "cdRAFQYrRHM78hWOQgF/mC"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 44
},
"_enabled": true,
"_materials": [],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": null,
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "f0nuM184tHXIk7jUBMRL9k"
},
{
"__type__": "cc.Node",
"_name": "audio",
"_objFlags": 0,
"_parent": {
"__id__": 35
},
"_children": [
{
"__id__": 47
},
{
"__id__": 49
},
{
"__id__": 51
},
{
"__id__": 53
},
{
"__id__": 55
},
{
"__id__": 57
},
{
"__id__": 59
},
{
"__id__": 61
}
],
"_active": true,
"_components": [],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "b823DIVC9L+Ihc3T9Bt7m3"
},
{
"__type__": "cc.Node",
"_name": "btn",
"_objFlags": 0,
"_parent": {
"__id__": 46
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 48
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "2cUxpSP01P/aj8WSVO+yx8"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 47
},
"_enabled": true,
"_clip": {
"__uuid__": "f0680ae0-c079-45ef-abd7-9e63d90b982b"
},
"_volume": 1,
"_mute": false,
"_loop": false,
"_firstlyEnabled": true,
"playOnLoad": false,
"preload": false,
"_id": "f5kIedgn9Hi4188//O1ekG"
},
{
"__type__": "cc.Node",
"_name": "osmo_tip",
"_objFlags": 0,
"_parent": {
"__id__": 46
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 50
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "f7bIFXoJRFO4xMC8uO3dtR"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 49
},
"_enabled": true,
"_clip": null,
"_volume": 1,
"_mute": false,
"_loop": false,
"_firstlyEnabled": true,
"playOnLoad": false,
"preload": false,
"_id": "c6BDvHgGFCpK5h84Hk+xHT"
},
{
"__type__": "cc.Node",
"_name": "tip_success",
"_objFlags": 0,
"_parent": {
"__id__": 46
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 52
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "40RslLEDlEtbZpVHMcRCNX"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 51
},
"_enabled": true,
"_clip": null,
"_volume": 1,
"_mute": false,
"_loop": false,
"_firstlyEnabled": true,
"playOnLoad": false,
"preload": false,
"_id": "97BiK4gupESIcm0uPWg0oF"
},
{
"__type__": "cc.Node",
"_name": "begin",
"_objFlags": 0,
"_parent": {
"__id__": 46
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 54
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "17fladrpJFg7J8XHuW4Ifd"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 53
}, },
"_N$normalSprite": null, "_enabled": true,
"_N$pressedSprite": null, "_clip": null,
"pressedSprite": null, "_volume": 1,
"_N$hoverSprite": null, "_mute": false,
"hoverSprite": null, "_loop": false,
"_N$disabledSprite": null, "_firstlyEnabled": true,
"_N$target": null, "playOnLoad": false,
"_id": "1aj32fYY1IxLesa77E70Qu" "preload": false,
"_id": "793VMKuqhCwrhxhegzV2Ax"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "res", "_name": "tip_letter",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 2 "__id__": 46
}, },
"_children": [ "_children": [],
{ "_active": true,
"__id__": 15 "_components": [
},
{
"__id__": 18
},
{ {
"__id__": 21 "__id__": 56
} }
], ],
"_active": false,
"_components": [],
"_prefab": null, "_prefab": null,
"_opacity": 255, "_opacity": 255,
"_color": { "_color": {
...@@ -794,22 +2627,39 @@ ...@@ -794,22 +2627,39 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "0aAzbH6R1E+6AmGRrkKa5O" "_id": "f2pnc9hCxJYrprmKXMk690"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 55
},
"_enabled": true,
"_clip": null,
"_volume": 1,
"_mute": false,
"_loop": false,
"_firstlyEnabled": true,
"playOnLoad": false,
"preload": false,
"_id": "8fnYbA8/tH1bTZXvtpImHP"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "font", "_name": "tip_icon",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 14 "__id__": 46
}, },
"_children": [ "_children": [],
"_active": true,
"_components": [
{ {
"__id__": 16 "__id__": 58
} }
], ],
"_active": true,
"_components": [],
"_prefab": null, "_prefab": null,
"_opacity": 255, "_opacity": 255,
"_color": { "_color": {
...@@ -856,20 +2706,37 @@ ...@@ -856,20 +2706,37 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "9bLfcYeeNKrr524vzWchiM" "_id": "d5oZe49vNBbrcczucYl6Et"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 57
},
"_enabled": true,
"_clip": null,
"_volume": 1,
"_mute": false,
"_loop": false,
"_firstlyEnabled": true,
"playOnLoad": false,
"preload": false,
"_id": "c3gxtUcKNDLLSyLl3LmKQ7"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "BRLNSDB", "_name": "tip_area",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 15 "__id__": 46
}, },
"_children": [], "_children": [],
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 17 "__id__": 60
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -918,53 +2785,39 @@ ...@@ -918,53 +2785,39 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "cfMLGsq0BMhJARv+ySMAxS" "_id": "68ywssRN9IyIAwgS9fMZdf"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.AudioSource",
"_name": "", "_name": "",
"_objFlags": 0, "_objFlags": 0,
"node": { "node": {
"__id__": 16 "__id__": 59
}, },
"_enabled": true, "_enabled": true,
"_materials": [], "_clip": null,
"_srcBlendFactor": 770, "_volume": 1,
"_dstBlendFactor": 771, "_mute": false,
"_string": "", "_loop": false,
"_N$string": "", "_firstlyEnabled": true,
"_fontSize": 40, "playOnLoad": false,
"_lineHeight": 40, "preload": false,
"_enableWrapText": true, "_id": "3aveLCXz1PBqnCRilW8ABz"
"_N$file": {
"__uuid__": "c551970e-b095-45f3-9f1d-25cde8b8deb1"
},
"_isSystemFontUsed": false,
"_spacingX": 0,
"_batchAsBitmap": false,
"_styleFlags": 0,
"_underlineHeight": 0,
"_N$horizontalAlign": 0,
"_N$verticalAlign": 0,
"_N$fontFamily": "Arial",
"_N$overflow": 0,
"_N$cacheMode": 0,
"_id": "9bNHNPu5lC7rQYyr8ai/sY"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "img", "_name": "default",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 14 "__id__": 46
}, },
"_children": [ "_children": [],
"_active": true,
"_components": [
{ {
"__id__": 19 "__id__": 62
} }
], ],
"_active": true,
"_components": [],
"_prefab": null, "_prefab": null,
"_opacity": 255, "_opacity": 255,
"_color": { "_color": {
...@@ -1011,20 +2864,41 @@ ...@@ -1011,20 +2864,41 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "53LUHHG2pEr79fyrvazXJs" "_id": "4ecRtdDZBGJqaTXEPiRG5l"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 61
},
"_enabled": true,
"_clip": null,
"_volume": 1,
"_mute": false,
"_loop": false,
"_firstlyEnabled": true,
"playOnLoad": false,
"preload": false,
"_id": "61wL2dmSVKL5qLLgVZJdsf"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "icon", "_name": "Main Camera",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 18 "__id__": 2
}, },
"_children": [], "_children": [
{
"__id__": 64
}
],
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 20 "__id__": 68
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -1038,8 +2912,8 @@ ...@@ -1038,8 +2912,8 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 138, "width": 1280,
"height": 141 "height": 720
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -1052,7 +2926,7 @@ ...@@ -1052,7 +2926,7 @@
"array": [ "array": [
0, 0,
0, 0,
0, 362.85545494732423,
0, 0,
0, 0,
0, 0,
...@@ -1073,50 +2947,26 @@ ...@@ -1073,50 +2947,26 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "1blU2OArJIfoC9XfupGxJG" "_id": "e1WoFrQ79G7r4ZuQE3HlNb"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 19
},
"_enabled": true,
"_materials": [],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "6fbc30a8-3c49-44ae-8ba4-7f56f385b78a"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "03GEWUEZJGyKormWgIWCtM"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "audio", "_name": "catFrame",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 14 "__id__": 63
}, },
"_children": [ "_children": [
{ {
"__id__": 22 "__id__": 65
} }
], ],
"_active": true, "_active": true,
"_components": [], "_components": [
{
"__id__": 67
}
],
"_prefab": null, "_prefab": null,
"_opacity": 255, "_opacity": 255,
"_color": { "_color": {
...@@ -1128,8 +2978,8 @@ ...@@ -1128,8 +2978,8 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 0, "width": 2176,
"height": 0 "height": 1600
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -1141,8 +2991,8 @@ ...@@ -1141,8 +2991,8 @@
"ctor": "Float64Array", "ctor": "Float64Array",
"array": [ "array": [
0, 0,
0, 220,
0, -362.85545,
0, 0,
0, 0,
0, 0,
...@@ -1163,20 +3013,20 @@ ...@@ -1163,20 +3013,20 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "b823DIVC9L+Ihc3T9Bt7m3" "_id": "24Vr0s691PyYzEBGG5YaNX"
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "btn", "_name": "cat",
"_objFlags": 0, "_objFlags": 0,
"_parent": { "_parent": {
"__id__": 21 "__id__": 64
}, },
"_children": [], "_children": [],
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 23 "__id__": 66
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -1190,8 +3040,8 @@ ...@@ -1190,8 +3040,8 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 0, "width": 362.6105263157899,
"height": 0 "height": 483.5647539622176
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -1225,26 +3075,112 @@ ...@@ -1225,26 +3075,112 @@
"_is3DNode": false, "_is3DNode": false,
"_groupIndex": 0, "_groupIndex": 0,
"groupIndex": 0, "groupIndex": 0,
"_id": "3d0p0/uJZJIoRva5Br2iqv" "_id": "39olKLQahPUIkTaY3Gn6UZ"
}, },
{ {
"__type__": "cc.AudioSource", "__type__": "dragonBones.ArmatureDisplay",
"_name": "", "_name": "",
"_objFlags": 0, "_objFlags": 0,
"node": { "node": {
"__id__": 22 "__id__": 65
}, },
"_enabled": true, "_enabled": true,
"_clip": { "_materials": [
"__uuid__": "f0680ae0-c079-45ef-abd7-9e63d90b982b" {
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_armatureName": "Armature",
"_animationName": "",
"_preCacheMode": 0,
"_cacheMode": 0,
"playTimes": 1,
"premultipliedAlpha": false,
"_armatureKey": "3b762855-a2f2-4947-a9a8-5fbefe3c5806#13437f14-c456-4c90-8a52-0b3de4838632",
"_accTime": 0,
"_playCount": 0,
"_frameCache": null,
"_curFrame": null,
"_playing": false,
"_armatureCache": null,
"_N$dragonAsset": {
"__uuid__": "3b762855-a2f2-4947-a9a8-5fbefe3c5806"
},
"_N$dragonAtlasAsset": {
"__uuid__": "13437f14-c456-4c90-8a52-0b3de4838632"
},
"_N$_defaultArmatureIndex": 0,
"_N$_animationIndex": 0,
"_N$_defaultCacheMode": 0,
"_N$timeScale": 1,
"_N$debugBones": false,
"_N$enableBatch": false,
"_id": "1bSl/IDJZJbJ4DzlQ2w/9V"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 64
}, },
"_volume": 1, "_enabled": true,
"_mute": false, "alignMode": 2,
"_loop": false, "_target": {
"_firstlyEnabled": true, "__id__": 2
"playOnLoad": false, },
"preload": false, "_alignFlags": 36,
"_id": "0adN50f61DlbmppsPkOnjX" "_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 0,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": "54kVeTD+5BAbdHcrppjzAr"
},
{
"__type__": "cc.Camera",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 63
},
"_enabled": true,
"_cullingMask": 4294967295,
"_clearFlags": 7,
"_backgroundColor": {
"__type__": "cc.Color",
"r": 0,
"g": 0,
"b": 0,
"a": 255
},
"_depth": -1,
"_zoomRatio": 1,
"_targetTexture": null,
"_fov": 60,
"_orthoSize": 10,
"_nearClip": 1,
"_farClip": 4096,
"_ortho": true,
"_rect": {
"__type__": "cc.Rect",
"x": 0,
"y": 0,
"width": 1,
"height": 1
},
"_renderStages": 1,
"_alignWithScreen": true,
"_id": "81GN3uXINKVLeW4+iKSlim"
}, },
{ {
"__type__": "cc.Canvas", "__type__": "cc.Canvas",
...@@ -1256,8 +3192,8 @@ ...@@ -1256,8 +3192,8 @@
"_enabled": true, "_enabled": true,
"_designResolution": { "_designResolution": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 1280, "width": 2176,
"height": 720 "height": 1160
}, },
"_fitWidth": false, "_fitWidth": false,
"_fitHeight": false, "_fitHeight": false,
...@@ -1291,13 +3227,13 @@ ...@@ -1291,13 +3227,13 @@
"_id": "29zXboiXFBKoIV4PQ2liTe" "_id": "29zXboiXFBKoIV4PQ2liTe"
}, },
{ {
"__type__": "f4edeRi+NdAabqAkVYRwFjK", "__type__": "c996fBq9WFKlqgRnI49Y++/",
"_name": "", "_name": "",
"_objFlags": 0, "_objFlags": 0,
"node": { "node": {
"__id__": 2 "__id__": 2
}, },
"_enabled": true, "_enabled": true,
"_id": "e687yyoRBIzZAOVRL8Sseh" "_id": "2cJI7iy+pGNI34Q53wifSv"
} }
] ]
\ No newline at end of file
{ {
"ver": "1.2.9", "ver": "1.2.9",
"uuid": "57ea7c61-9b8b-498a-b024-c98ee9124beb", "uuid": "dc1f1180-1ff4-4e67-b2e5-ad8dd02745b0",
"asyncLoadAssets": false, "asyncLoadAssets": false,
"autoReleaseAssets": true, "autoReleaseAssets": false,
"subMetas": {} "subMetas": {}
} }
\ No newline at end of file
import { onHomeworkFinish, playAudio } from "../script/util";
import { defaultData } from "../script/defaultData";
cc.Class({
extends: cc.Component,
properties: {
},
// 生命周期 onLoad
onLoad() {
this.initSceneData();
this.initSize();
},
_imageResList: null,
_audioResList: null,
_animaResList: null,
initSceneData() {
this._imageResList = [];
this._audioResList = [];
this._animaResList = [];
},
_designSize: null, // 设计分辨率
_frameSize: null, // 屏幕分辨率
_mapScaleMin: null, // 场景中常用缩放(取大值)
_mapScaleMax: null, // 场景中常用缩放(取小值)
_cocosScale: null, // cocos 自缩放 (较少用到)
initSize() {
// 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小
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 f = screen_size >= design_size
cc.Canvas.instance.fitHeight = f
cc.Canvas.instance.fitWidth = !f
const frameSize = cc.view.getFrameSize();
this._frameSize = frameSize;
this._designSize = cc.view.getDesignResolutionSize();
let sx = cc.winSize.width / frameSize.width;
let sy = cc.winSize.height / frameSize.height;
this._cocosScale = Math.min(sx, sy);
sx = frameSize.width / this._designSize.width;
sy = frameSize.height / this._designSize.height;
this._mapScaleMin = Math.min(sx, sy) * this._cocosScale;
this._mapScaleMax = Math.max(sx, sy) * this._cocosScale;
},
// 生命周期 start
start() {
let getData = this.getData.bind(this);
if (window && window.courseware) {
getData = window.courseware.getData;
}
getData((data) => {
console.log('data:', data);
this.data = data || this.getDefaultData();
this.data = JSON.parse(JSON.stringify(this.data))
this.preloadItem()
})
},
getData(func) {
if (window && window.courseware) {
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() {
return defaultData;
},
preloadItem() {
this.addPreloadImage();
this.addPreloadAudio();
this.addPreloadAnima();
this.preload();
},
addPreloadImage() {
if (this.data.exercises) {
this._imageResList.push({ url: this.data.picUrl });
}
},
addPreloadAudio() {
if (this.data.exercises) {
this._audioResList.push({ url: this.data.exercises.audioUrl });
let wordArr = this.data.exercises.wordArr;
for (let i = 0; i < wordArr.length; ++i) {
if (wordArr[i].audioUrl) {
this._audioResList.push({ url: wordArr[i].audioUrl });
}
}
}
if (this.data) {
this._audioResList.push({ url: this.data.guideAudioUrl1 });
this._audioResList.push({ url: this.data.guideAudioUrl2 });
this._audioResList.push({ url: this.data.guideAudioUrl3 });
}
},
addPreloadAnima() {
},
preload() {
const preloadArr = this._imageResList.concat(this._audioResList).concat(this._animaResList);
cc.assetManager.loadAny(preloadArr, null, null, (err, data) => {
this.loadEnd();
if (window && window["air"]) {
window["air"].hideAirClassLoading();
}
cc.debug.setDisplayStats(false);
});
},
loadEnd() {
this.initData();
this.initAudio();
this.initView();
// this.initListener();
},
_cantouch: null,
initData() {
// 所有全局变量 默认都是null
this._cantouch = true;
},
audioBtn: null,
audioBegin: null,
audioTipArea: null,
audioTipLetter: null,
audioTipIcon: null,
audioTipSuccess: null,
audioOsmoTip: null,
initAudio() {
const audioNode = cc.find('Canvas/res/audio');
const getAudioByResName = (resName) => {
return audioNode.getChildByName(resName).getComponent(cc.AudioSource);
}
this.audioBtn = getAudioByResName('btn');
this.audioBegin = getAudioByResName('begin');
this.audioTipArea = getAudioByResName('tip_area');
this.audioTipLetter = getAudioByResName('tip_letter');
this.audioTipIcon = getAudioByResName('tip_icon');
this.audioTipSuccess = getAudioByResName('tip_success');
this.audioOsmoTip = getAudioByResName('osmo_tip');
this.audioDefault = getAudioByResName('default');
},
initView() {
this.initBg();
const content = cc.find("Canvas/content/bg_green");
// content.scale = this._mapScaleMin
console.log(content.width, content.height);
this.initPic();
this.initBtn();
this.initMask();
let handNode = cc.find("Canvas/content/bg_green/bg_word-background/text/icon_hand");
handNode.initY = handNode.y;
//播放动车
this.playAni('begin', 0);
const begin = () => {
this.playAni('normal', 0);
this._cantouch = true;
this.begin();
}
console.log(this.data.guideAudioUrl1);
//如果有引导音频,则播放完引导音频再开始
if (this.data.guideAudioUrl1) {
//播放引导音频1
this.playAudioByUrl(this.data.guideAudioUrl1, () => {
begin();
});
}
else {
begin();
}
this.addDefaultMusic();
},
/**
* 依次显示
* @param {*} index
*/
begin(index = 0){
let wordArr = this.data.exercises.wordArr;
if(index > wordArr.length - 1){
//播放单词音频
this.playTextAutio();
return;
}
let word = this.data.exercises.wordArr[index];
let textNode = cc.find("Canvas/content/bg_green/bg_word-background/text");
//有空格,取2 * index节点值
let wordNode = textNode.wordNodeArr[2 * index];
//播放音频
this.playAudioByUrl(word.audioUrl, ()=>{
this.begin(index + 1);
})
//显示文本动画
this.textTwinkle(wordNode);
},
maskNode: null,
initMask() {
this.canvas = cc.find("Canvas");
const maskNode = new cc.Node();
maskNode.width = this.canvas.width;
maskNode.height = this.canvas.height;
maskNode.anchorX = 0.5;
maskNode.anchorY = 0.5;
const mask = maskNode.addComponent(cc.Graphics);
mask.fillColor = cc.Color.BLACK.setA(100);
mask.fillRect(-this.canvas.width / 2, -this.canvas.height / 2, this.canvas.width, this.canvas.height);
this.canvas.addChild(maskNode, 9);
maskNode.addComponent(cc.BlockInputEvents);
maskNode.active = false;
this.maskNode = maskNode;
},
addDefaultMusic() {
cc.audioEngine.play(this.audioDefault.clip, true, 0.8);
},
initBg() {
const bgNode = cc.find('Canvas/bg');
bgNode.scale = this._mapScaleMax;
const canvas = cc.find('Canvas');
bgNode.scale = Math.max((canvas.width / bgNode.width), (canvas.height / bgNode.height));
},
_curIndex: null,
initPic() {
let exercises = this.data.exercises;
this.getSprNodeByUrl(exercises.picUrl, (sprNode) => {
let pic = cc.find("Canvas/content/bg_green/pic");
const picNode = sprNode;
picNode.scale = pic.width / picNode.width;
picNode.x = 0;
picNode.y = 0;
pic.addChild(picNode);
});
let textNode = cc.find("Canvas/content/bg_green/bg_word-background/text");
textNode.initScale = textNode.scale;
let wordNodeArr = [];
let wordArr = this.data.exercises.wordArr;
for (let i = 0; i < wordArr.length; ++i) {
if (!wordArr[i].val) {
continue;
}
//首字母
let initial = wordArr[i].val.substr(0, 1);
let label = this.getWord(initial, 700, true);
label.isInitial = true;
wordNodeArr.push(label);
//其余字母
let last = wordArr[i].val.substr(1);
let lastLabel = this.getWord(last, 700, false);
wordNodeArr.push(lastLabel);
}
textNode.wordNodeArr = wordNodeArr;
this.resetTextPosition(textNode);
this._curIndex = 0;
this.initText2();
},
initText2(){
let textNode = cc.find("Canvas/content/bg_green/text2/content");
textNode.initScale = textNode.scale;
let wordNodeArr = [];
let wordArr = this.data.exercises.word2Arr;
for (let i = 0; i < wordArr.length; ++i) {
if (!wordArr[i].val) {
continue;
}
//首字母
let initial = wordArr[i].val.substr(0, 1);
let label = this.getWord(initial, 80, true);
label.isInitial = true;
wordNodeArr.push(label);
//其余字母
let last = wordArr[i].val.substr(1);
let lastLabel = this.getWord(last, 80, false);
wordNodeArr.push(lastLabel);
}
textNode.wordNodeArr = wordNodeArr;
this.resetTextPosition(textNode);
this._curIndex = 0;
},
initBtn() {
},
getWord(wordVal, size, isInitial) {
size /= 2;
let color = new cc.color();
color.fromHEX('#000000');
const labelNode = new cc.Node();
labelNode.color = color;
const label = labelNode.addComponent(cc.Label);
label.lineHeight = size;
label.fontSize = size;
label.font = cc.find('Canvas/res/font/MuliBold-YzEVy').getComponent(cc.Label).font;
label.string = wordVal;
labelNode.x = 0;
labelNode.y = 0;
let widget = labelNode.addComponent(cc.Widget);
widget.isAlignBottom = true;
widget.bottom = -size / 2;
widget.updateAlignment();
return labelNode;
},
playTipAni(name, times = 1, cb = null) {
const tip = cc.find('Canvas/tipFrame/tip');
tip.parent.zIndex = 10;
tip.active = true;
var dragonDisplay = tip.getComponent(dragonBones.ArmatureDisplay);
const state = dragonDisplay.playAnimation(name, times);
dragonDisplay.on(dragonBones.EventObject.COMPLETE, () => {
tip.active = false;
if (cb) {
cb();
}
})
return state;
},
playAni(name, times = 1) {
const cat = cc.find('Canvas/Main Camera/catFrame/cat');
var dragonDisplay = cat.getComponent(dragonBones.ArmatureDisplay);
const state = dragonDisplay.playAnimation(name, times);
return state;
},
moveHand(index, callback = null) {
let textNode = cc.find("Canvas/content/bg_green/bg_word-background/text");
let wordNodeArr = textNode.wordNodeArr
let wordNode = wordNodeArr[2 * index];
if (!wordNode) {
if (callback) {
callback();
}
return;
}
let handNode = cc.find("Canvas/content/bg_green/bg_word-background/text/icon_hand");
handNode.x = wordNode.x;
handNode.zIndex = 999;
this.handAni();
if (callback) {
callback();
}
},
/**
* 播放文本音频
* @param {*} callback
*/
playTextAutio(callback = null) {
this.playAudioByUrl(this.data.exercises.audioUrl, () => {
//停止监听动画
this._stopAni = true;
if (callback) {
callback();
}
}, (audioId) => {
//显示完成,不再播放动画
if (this._shown) {
return;
}
//设置可播放动画
this._stopAni = false;
let lyrics = this.data.exercises.lrcData.lyrics;
//临时音频打点数组
let arr = JSON.parse(JSON.stringify(lyrics));
console.log(arr);
this.monitor(audioId, arr);
})
},
/**
* 重新设置文字位置
*/
resetTextPosition(textNode) {
let wordNodeArr = textNode.wordNodeArr;
//间隔
let space = 40;
let tW = 0;
for (let i = 0; i < wordNodeArr.length; ++i) {
let wordNode = wordNodeArr[i];
wordNode.removeFromParent();
wordNode.parent = textNode;
tW += wordNode.width;
let widget = wordNode.getComponent(cc.Widget);
widget.bottom = - wordNode.getComponent(cc.Label).fontSize / 2;
widget.updateAlignment();
wordNode.initScale = wordNode.scale;
}
tW += (this.data.exercises.wordArr.length - 1) * space;
let startX = - tW / 2;
for (let i = 0; i < wordNodeArr.length; ++i) {
let width = wordNodeArr[i].width;
wordNodeArr[i].x = startX + width / 2;
startX += width;
if (wordNodeArr[i].isInitial) {
continue;
}
startX += space;
}
if (tW > textNode.width) {
const sx = textNode.width / tW;
textNode.scale = Math.round(sx * 1000) / 1000;
textNode.initScale = textNode.scale;
}
},
/**
* 显示结束
*/
_shown: null,
showEnd() {
console.log(' in showEnd');
if (this._curIndex < this.data.exercises.wordArr.length) {
return;
}
if (this._shown) {
return;
}
this._shown = true;
let handNode = cc.find("Canvas/content/bg_green/bg_word-background/text/icon_hand");
handNode.opacity = 0;
this._stop = true;
//播放动画
const state = this.playAni('begin', 0);
//播放引导音频2
this.playAudioByUrl(this.data.guideAudioUrl2, () => {
state.stop();
this.playAni('normal', 0);
this.showPhotoBtn();
});
},
_stop: null,
_tween: null,
handAni() {
if (this._tween) {
this._tween.stop();
}
let handNode = cc.find("Canvas/content/bg_green/bg_word-background/text/icon_hand");
handNode.opacity = 255;
handNode.y = handNode.initY;
const move = () => {
this._tween = cc.tween(handNode)
.to(0.5, { y: handNode.initY + 50 })
.to(0.5, { y: handNode.initY })
.call(() => {
if (!this._stop) {
move()
}
})
.start();
}
this._stop = false;
move();
},
_stopAni: null,
monitor(audioId, arr) {
if (this._stopAni) {
return;
}
this._stopAni = false;
let currentTime = cc.audioEngine.getCurrentTime(audioId);
let len = arr.length;
for (let i = len - 1; i >= 0; --i) {
let time = arr[i].time;
time = Math.round(time * 1000) / 1000;
currentTime = Math.round(currentTime * 1000) / 1000;
if (time < currentTime) {
//如果是最后一个匹配,则播放内容动画
if (len == 1) {
this.contentAni();
}
else {
this.textAni();
}
//移除匹配上的元素
arr.splice(i, 1);
break;
}
}
requestAnimationFrame(() => {
this.monitor(audioId, arr);
})
},
/**
* 文本动画
*/
_playText: null,
textAni() {
if (this._playText) {
return;
}
this._playText = true;
this._cantouch = false;
let textNode = cc.find("Canvas/content/bg_green/text2/content");
let wordNodeArr = textNode.wordNodeArr;
for (let i = 0; i < wordNodeArr.length; ++i) {
let wordNode = wordNodeArr[i];
//如果是首字母,则执行动画
if (wordNode.isInitial) {
this.textTwinkle(wordNode);
}
}
},
/**
* 文本内容动画
* @param {*} node
* @param {*} callback
*/
textTwinkle(node, callback = null){
cc.tween(node)
.to(0.3, { scale: node.initScale * 1.3 })
.to(0.3, { scale: node.initScale })
.call(() => {
this._playText = false;
if(callback){
callback();
}
})
.start();
},
/**
* 内容动画
*/
contentAni() {
const twinkle = (node) => {
cc.tween(node)
.to(0.5, { scale: node.initScale * 1.1 })
.to(0.5, { scale: node.initScale })
.to(0.5, { scale: node.initScale * 1.1 })
.to(0.5, { scale: node.initScale })
.call(() => {
this._cantouch = true;
this._curIndex++;
this.showEnd();
})
.start();
};
let textNode = cc.find("Canvas/content/bg_green/text2/content");
twinkle(textNode);
},
photoBtn: null,
initPhotoBtn() {
const canvas = cc.find('Canvas');
const photoBtn = this.getSprNode('btn_photo');
canvas.addChild(photoBtn);
photoBtn.scale = this._mapScaleMin;
// photoBtn.x = 100;
photoBtn.y = -canvas.height / 2 + photoBtn.height / 2 * photoBtn.scaleY;
photoBtn.addComponent(cc.Button);
photoBtn.on('click', () => {
// this.photoBtnClick();
this.showPhotoTip();
})
this.photoBtn = photoBtn;
},
showPhotoBtn() {
if (!this.photoBtn) {
this.initPhotoBtn();
}
this.photoBtn.active = true;
},
hidePhotoBtn() {
if (!this.photoBtn) {
return;
}
this.photoBtn.active = false;
},
showPhotoTip() {
this.maskNode.active = true;
playAudio(this.audioOsmoTip.clip);
this.playAni('begin', 0)
this.playTipAni('normal', 1, () => {
console.log('play ani end');
this.playAni('normal', 0)
this.photoBtnClick();
})
},
photoBtnClick() {
console.log(' in photoBtnClick')
if (!window || !window.courseware) {
console.log('window.courseware not found')
return;
}
let openRecognitionCamera = window.courseware.openRecognitionCamera;
if (!openRecognitionCamera) {
console.log('openRecognitionCamera not found')
return;
}
// openRecognitionCamera = this.getPhotoData.bind(this);
openRecognitionCamera((data) => {
console.log('openRecognitionCamera data: ', data)
if (typeof data == 'string') {
data = JSON.parse(data);
}
const { result } = data;
this.photoEnd(result);
this.maskNode.active = false;
})
},
photoEnd(data) {
const isRightArea = this.checkIsRightArea(data);
if (!isRightArea) {
playAudio(this.audioTipArea.clip)
console.log('没有检测到此题的区域')
return;
}
const isRightLetter = this.checkIsRightLetter(data);
if (!isRightLetter) {
playAudio(this.audioTipLetter.clip)
console.log('没有检测到此题的字母')
return;
}
const isRightPos = this.checkIsRightPos(data);
if (!isRightPos) {
playAudio(this.audioTipIcon.clip)
console.log('此题的区域内没有检测到标记')
return;
}
playAudio(this.audioTipSuccess.clip)
this.showPhotoSuccess();
},
getPhotoLabelData2(text, block, len) {
text = text.trim();
for (let j = 0; j < block.length; j++) {
const line = block[j].line;
if (!line) {
continue;
}
for (let i = 0; i < line.length; i++) {
const { word } = line[i];
let sentence = ''
word.forEach(item => {
sentence += item.content + ' ';
});
sentence.trim();
const index = sentence.indexOf(text);
if (index == -1 && sentence.length >= len) {
return line[i];
}
}
}
return false;
},
getPhotoLabelData(text, block, topY = null, bottomY = null) {
text = text.trim();
for (let j = 0; j < block.length; j++) {
const line = block[j].line;
if (!line) {
continue;
}
for (let i = 0; i < line.length; i++) {
const { word } = line[i];
let sentence = ''
word.forEach(item => {
sentence += item.content + ' ';
});
sentence.trim();
if (sentence.indexOf(text) != -1) {
if (topY && bottomY) {
const sentenceY = line[i].location.top_left.y
console.log('topY: ', topY)
console.log('bottomY: ', bottomY)
console.log('sentenceY: ', sentenceY)
if (bottomY >= sentenceY && sentenceY >= topY) {
return line[i];
}
} else {
return line[i];
}
}
}
}
return false;
},
checkIsRightArea(result) {
const block = result?.data?.block
if (!block) {
return false;
}
const topLabelData = this.getPhotoLabelData('n and repeat', block);
// const bottomLabelData = this.getPhotoLabelData('n, point, and repeat', block);
const bottomLabelData = this.getPhotoLabelData2('n and repeat', block, 25);
return topLabelData && bottomLabelData
},
checkIsRightLetter(result) {
const block = result?.data?.block
if (!block) {
return false;
}
const topLabelData = this.getPhotoLabelData('n and repeat', block);
const bottomLabelData = this.getPhotoLabelData2('n and repeat', block, 25);
const topY = topLabelData.location.top_left.y;
const bottomY = bottomLabelData.location.top_left.y;
const letter = this.data.letter || 'A';
const letterLabelData = this.getPhotoLabelData(letter, block, topY, bottomY);
return letterLabelData;
},
checkIsRightPos(result) {
const block = result?.data?.block
if (!block) {
return false;
}
const iconLabelData = this.getPhotoLabelData('I like', block);
const topLabelData = this.getPhotoLabelData('n and repeat', block);
// const bottomLabelData = this.getPhotoLabelData('n, point, and repeat', block);
const bottomLabelData = this.getPhotoLabelData2('n and repeat', block, 25);
if (!iconLabelData) {
return false;
}
// console.log('block: ', block);
// console.log('topLabelData: ', topLabelData);
// console.log('bottomLabelData: ', bottomLabelData);
const topY = topLabelData.location.top_left.y;
const bottomY = bottomLabelData.location.top_left.y;
const iconY = iconLabelData.location.top_left.y;
console.log('topY: ', topY);
console.log('bottomY: ', bottomY);
console.log('iconY: ', iconY);
if (bottomY >= iconY && iconY >= topY) {
return true;
}
},
showPhotoSuccess() {
console.log(' in showPhotoSuccess')
this.hidePhotoBtn();
},
getPhotoData(cb) {
const tmpData = { "text": "", "audio": "", "result": { "code": "0", "data": { "block": [{ "type": "text", "line": [{ "confidence": 1, "location": { "top_left": { "x": 112, "y": 63 }, "right_bottom": { "x": 497, "y": 114 } }, "word": [{ "content": "Unit" }, { "content": "1" }, { "content": "Aa" }, { "content": "Bb" }, { "content": "Cc" }] }, { "confidence": 1, "location": { "top_left": { "x": 160, "y": 121 }, "right_bottom": { "x": 401, "y": 162 } }, "word": [{ "content": "A" }, { "content": "Listen" }, { "content": "and" }, { "content": "repeat.03" }] }, { "confidence": 1, "location": { "top_left": { "x": 607, "y": 141 }, "right_bottom": { "x": 657, "y": 184 } }, "word": [{ "content": "V" }] }, { "confidence": 1, "location": { "top_left": { "x": 335, "y": 246 }, "right_bottom": { "x": 417, "y": 277 } }, "word": [{ "content": "I" }, { "content": "like" }] }, { "confidence": 1, "location": { "top_left": { "x": 448, "y": 208 }, "right_bottom": { "x": 640, "y": 306 } }, "word": [{ "content": "Aa" }] }, { "confidence": 1, "location": { "top_left": { "x": 351, "y": 275 }, "right_bottom": { "x": 401, "y": 304 } }, "word": [{ "content": "..." }] }, { "confidence": 1, "location": { "top_left": { "x": 303, "y": 307 }, "right_bottom": { "x": 352, "y": 327 } }, "word": [{ "content": "angry" }, { "content": "to" }] }, { "confidence": 1, "location": { "top_left": { "x": 223, "y": 318 }, "right_bottom": { "x": 449, "y": 364 } }, "word": [{ "content": "Listen.polnt.andrepeat.ou" }] }] }] }, "desc": "success", "sid": "wcr005666b3@dx2d0714d48cc56f2b00" }, "error": "" }
cb(tmpData);
},
// ------------------------------------------------
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;
},
getSpriteFrimeByUrl(url, cb) {
cc.loader.load({ url }, (err, img) => {
const spriteFrame = new cc.SpriteFrame(img)
if (cb) {
cb(spriteFrame);
}
})
},
getSprNodeByUrl(url, cb) {
const node = new cc.Node();
const spr = node.addComponent(cc.Sprite);
this.getSpriteFrimeByUrl(url, (sf) => {
spr.spriteFrame = sf;
if (cb) {
cb(node);
}
})
},
_audioId: null,
playAudioByUrl(audio_url, cb = null, loadcb = null, loop = false) {
if (this._audioId) {
cc.audioEngine.pause(this._audioId);
}
let audioId;
if (audio_url) {
cc.assetManager.loadRemote(audio_url, (err, audioClip) => {
audioId = cc.audioEngine.play(audioClip, loop, 0.8);
this._audioId = audioId;
if (cb) {
cc.audioEngine.setFinishCallback(audioId, () => {
cb();
});
}
if (loadcb) {
loadcb(audioId);
}
});
}
},
// ------------------------------------------
});
{ {
"ver": "1.0.8", "ver": "1.0.8",
"uuid": "f4ede462-f8d7-4069-ba80-915611c058ca", "uuid": "c996f06a-f561-4a96-a811-9c8e3d63efbf",
"isPlugin": false, "isPlugin": false,
"loadPluginInWeb": true, "loadPluginInWeb": true,
"loadPluginInNative": true, "loadPluginInNative": true,
......
export const defaultData = {
"exercises":{
"wordArr":[
{
"val":"A",
"audioUrl":"http://staging-teach.cdn.ireadabc.com/8b5ecca5d4509e1b8a7e81e69d8db615.mp3"
},
{
"val":"a",
"audioUrl":"http://staging-teach.cdn.ireadabc.com/607af37644501e678de6cbafee555948.mp3"
}
],
"word2Arr":[
{
"val":"Angry"
},
{
"val":"Apple"
}
],
"picUrl":"http://staging-teach.cdn.ireadabc.com/101cdabba6404b73292d3b676f4683b1.png",
"audioUrl":"http://staging-teach.cdn.ireadabc.com/bbab99eb9f5fe3cbe2d24cf80594d8c9.mp3",
"lrcData":{
"audio_url":"http://staging-teach.cdn.ireadabc.com/bbab99eb9f5fe3cbe2d24cf80594d8c9.mp3",
"fontSize":24,
"lineHeight":32,
"lyrics":[
{
"time":0.503067,
"data":"",
"newLine":false
},
{
"time":1.503067,
"data":"",
"newLine":false
},
{
"time":3.438793,
"data":"",
"newLine":false
}
]
}
}
,
"guideAudioUrl1":"http://staging-teach.cdn.ireadabc.com/c3b83a24fd8f9b37ee72409cdb45e3f7.mp3",
"guideAudioUrl2":"http://staging-teach.cdn.ireadabc.com/9f6ff5d0617bf274ee2d9af4cfc93c62.mp3",
"guideAudioUrl3":"http://staging-teach.cdn.ireadabc.com/c3b83a24fd8f9b37ee72409cdb45e3f7.mp3"
}
{ {
"ver": "2.3.5", "ver": "2.3.5",
"uuid": "efa5fa09-a4dd-4bfc-ab7e-17c19f85408f", "uuid": "e2b9da86-9338-4023-9e54-6b11ffaf2a3f",
"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": 1088,
"height": 336, "height": 800,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"1orange": { "bg_bg": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "43d1e79d-6de8-4dcb-b8ce-d767df7913aa", "uuid": "ee79b5fd-7a10-49eb-9071-742ba98290c9",
"rawTextureUuid": "efa5fa09-a4dd-4bfc-ab7e-17c19f85408f", "rawTextureUuid": "e2b9da86-9338-4023-9e54-6b11ffaf2a3f",
"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": 1088,
"height": 335, "height": 800,
"rawWidth": 366, "rawWidth": 1088,
"rawHeight": 336, "rawHeight": 800,
"borderTop": 0, "borderTop": 0,
"borderBottom": 0, "borderBottom": 0,
"borderLeft": 0, "borderLeft": 0,
......
{
"ver": "2.3.5",
"uuid": "2dbd4b21-0cc8-416f-916b-f2100592e3d2",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1088,
"height": 231,
"platformSettings": {},
"subMetas": {
"bg_front": {
"ver": "1.0.4",
"uuid": "deb43340-7520-4981-b2d6-7cf54beaddda",
"rawTextureUuid": "2dbd4b21-0cc8-416f-916b-f2100592e3d2",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1088,
"height": 231,
"rawWidth": 1088,
"rawHeight": 231,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "ab390cd9-a10b-4d53-879c-b816e0f46cab",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1031,
"height": 515,
"platformSettings": {},
"subMetas": {
"bg_green": {
"ver": "1.0.4",
"uuid": "7571be05-f6ee-4272-b7af-46eaf5a8958e",
"rawTextureUuid": "ab390cd9-a10b-4d53-879c-b816e0f46cab",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": -12.5,
"trimX": 0,
"trimY": 25,
"width": 1031,
"height": 490,
"rawWidth": 1031,
"rawHeight": 515,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "17fc757e-b869-4c95-a0fa-e9433e7f6929",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1031,
"height": 515,
"platformSettings": {},
"subMetas": {
"bg_word-background2": {
"ver": "1.0.4",
"uuid": "e61a88ac-0f60-44e6-9564-ad926b6759a8",
"rawTextureUuid": "17fc757e-b869-4c95-a0fa-e9433e7f6929",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 208,
"offsetY": -9,
"trimX": 462,
"trimY": 94,
"width": 523,
"height": 345,
"rawWidth": 1031,
"rawHeight": 515,
"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": "55812d91-849c-4ff1-add2-bad078433aa6",
"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": 868,
"height": 67, "height": 4,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"btn_left": { "bg_xian": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "ce19457d-e8f3-4c38-ae3e-d4b99208ddb5", "uuid": "0bb2c18d-fc3e-4d4a-8070-801b381de620",
"rawTextureUuid": "9a79969a-0506-48d4-bc98-3c05d109b027", "rawTextureUuid": "55812d91-849c-4ff1-add2-bad078433aa6",
"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": 868,
"height": 67, "height": 4,
"rawWidth": 61, "rawWidth": 868,
"rawHeight": 67, "rawHeight": 4,
"borderTop": 0, "borderTop": 0,
"borderBottom": 0, "borderBottom": 0,
"borderLeft": 0, "borderLeft": 0,
......
{ {
"ver": "2.3.5", "ver": "2.3.5",
"uuid": "18d07592-51a9-421e-8972-0f67b68d29e1", "uuid": "7b1cc5c6-f935-4c49-a4b4-1d73942429d4",
"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": 325,
"height": 144, "height": 251,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"icon": { "btn_photo": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "6fbc30a8-3c49-44ae-8ba4-7f56f385b78a", "uuid": "a3fb2157-3337-409b-84ca-bd8b9f6ebe0f",
"rawTextureUuid": "18d07592-51a9-421e-8972-0f67b68d29e1", "rawTextureUuid": "7b1cc5c6-f935-4c49-a4b4-1d73942429d4",
"trimType": "auto", "trimType": "auto",
"trimThreshold": 1, "trimThreshold": 1,
"rotated": false, "rotated": false,
"offsetX": 0, "offsetX": 0,
"offsetY": -0.5, "offsetY": -0.5,
"trimX": 3, "trimX": 3,
"trimY": 2, "trimY": 3,
"width": 138, "width": 319,
"height": 141, "height": 246,
"rawWidth": 144, "rawWidth": 325,
"rawHeight": 144, "rawHeight": 251,
"borderTop": 0, "borderTop": 0,
"borderBottom": 0, "borderBottom": 0,
"borderLeft": 0, "borderLeft": 0,
......
{ {
"ver": "2.3.5", "ver": "2.3.5",
"uuid": "d582359e-924e-4ee9-9964-1fc4bb417e71", "uuid": "8a9afb13-fe28-448e-9e6e-ecfc1e538aaf",
"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": 91,
"height": 67, "height": 156,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"btn_right": { "icon_hand": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "e5a2dbaa-a677-4a32-90d7-a1b057d7fb59", "uuid": "5d1e0d39-1f19-49c7-959c-ecc75c127ff8",
"rawTextureUuid": "d582359e-924e-4ee9-9964-1fc4bb417e71", "rawTextureUuid": "8a9afb13-fe28-448e-9e6e-ecfc1e538aaf",
"trimType": "auto", "trimType": "auto",
"trimThreshold": 1, "trimThreshold": 1,
"rotated": false, "rotated": false,
"offsetX": -0.5, "offsetX": 0,
"offsetY": 0.5, "offsetY": 0,
"trimX": 0, "trimX": 0,
"trimY": 0, "trimY": 0,
"width": 60, "width": 91,
"height": 66, "height": 156,
"rawWidth": 61, "rawWidth": 91,
"rawHeight": 67, "rawHeight": 156,
"borderTop": 0, "borderTop": 0,
"borderBottom": 0, "borderBottom": 0,
"borderLeft": 0, "borderLeft": 0,
......
{ {
"ver": "2.3.5", "ver": "2.3.5",
"uuid": "e1b4d971-9876-4832-803a-5a321964a78b", "uuid": "460f7d1f-91a0-48bb-88cc-16d953c47aab",
"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": 1280, "width": 299,
"height": 720, "height": 98,
"platformSettings": {}, "platformSettings": {},
"subMetas": { "subMetas": {
"bg": { "text2_bg": {
"ver": "1.0.4", "ver": "1.0.4",
"uuid": "8288e3d4-4c75-4b27-8f01-f7014417f4dd", "uuid": "f8596c89-5b5a-48b3-b789-1c54ad3a137c",
"rawTextureUuid": "e1b4d971-9876-4832-803a-5a321964a78b", "rawTextureUuid": "460f7d1f-91a0-48bb-88cc-16d953c47aab",
"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": 1280, "width": 299,
"height": 720, "height": 98,
"rawWidth": 1280, "rawWidth": 299,
"rawHeight": 720, "rawHeight": 98,
"borderTop": 0, "borderTop": 0,
"borderBottom": 0, "borderBottom": 0,
"borderLeft": 0, "borderLeft": 0,
......
import { onHomeworkFinish } from "../script/util";
import { defaultData } from "../script/defaultData";
cc.Class({
extends: cc.Component,
properties: {
},
// 生命周期 onLoad
onLoad() {
this.initSceneData();
this.initSize();
},
_imageResList: null,
_audioResList: null,
_animaResList: null,
initSceneData() {
this._imageResList = [];
this._audioResList = [];
this._animaResList = [];
},
_designSize: null, // 设计分辨率
_frameSize: null, // 屏幕分辨率
_mapScaleMin: null, // 场景中常用缩放(取大值)
_mapScaleMax: null, // 场景中常用缩放(取小值)
_cocosScale: null, // cocos 自缩放 (较少用到)
initSize() {
// 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小
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 f = screen_size >= design_size
cc.Canvas.instance.fitHeight = f
cc.Canvas.instance.fitWidth = !f
const frameSize = cc.view.getFrameSize();
this._frameSize = frameSize;
this._designSize = cc.view.getDesignResolutionSize();
let sx = cc.winSize.width / frameSize.width;
let sy = cc.winSize.height / frameSize.height;
this._cocosScale = Math.min(sx, sy);
sx = frameSize.width / this._designSize.width;
sy = frameSize.height / this._designSize.height;
this._mapScaleMin = Math.min(sx, sy) * this._cocosScale;
this._mapScaleMax = Math.max(sx, sy) * this._cocosScale;
},
// 生命周期 start
start() {
let getData = this.getData.bind(this);
if (window && window.courseware) {
getData = window.courseware.getData;
}
getData((data) => {
console.log('data:', data);
this.data = data || this.getDefaultData();
this.data = JSON.parse(JSON.stringify(this.data))
this.preloadItem()
})
},
getData(func) {
if (window && window.courseware) {
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() {
return defaultData;
},
preloadItem() {
this.addPreloadImage();
this.addPreloadAudio();
this.addPreloadAnima();
this.preload();
},
addPreloadImage() {
this._imageResList.push({ url: this.data.pic_url });
this._imageResList.push({ url: this.data.pic_url_2 });
},
addPreloadAudio() {
this._audioResList.push({ url: this.data.audio_url });
},
addPreloadAnima() {
},
preload() {
const preloadArr = this._imageResList.concat(this._audioResList).concat(this._animaResList);
cc.assetManager.loadAny(preloadArr, null, null, (err, data) => {
this.loadEnd();
if (window && window["air"]) {
window["air"].hideAirClassLoading();
}
cc.debug.setDisplayStats(false);
});
},
loadEnd() {
this.initData();
this.initAudio();
this.initView();
// this.initListener();
},
_cantouch: null,
initData() {
// 所有全局变量 默认都是null
this._cantouch = true;
},
audioBtn: null,
initAudio() {
const audioNode = cc.find('Canvas/res/audio');
const getAudioByResName = (resName) => {
return audioNode.getChildByName(resName).getComponent(cc.AudioSource);
}
this.audioBtn = getAudioByResName('btn');
},
initView() {
this.initBg();
this.initPic();
this.initBtn();
this.initIcon();
},
initBg() {
const bgNode = cc.find('Canvas/bg');
bgNode.scale = this._mapScaleMax;
},
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 picNode2 = sprNode;
picNode2.scale = maxW / picNode2.width;
canvas.addChild(picNode2);
picNode2.x = canvas.width;
picNode2.baseX = picNode2.x;
this.pic2 = picNode2;
const labelNode = new cc.Node();
const label = labelNode.addComponent(cc.RichText);
const size = 60
label.font = cc.find('Canvas/res/font/BRLNSDB').getComponent(cc.Label).font;
label.string = `<outline color=#751e00 width=4><size=${size}><color=#ffffff>${this.data.text}</color></size></outline>`
label.lineHeight = size;
picNode2.addChild(labelNode);
});
},
initIcon() {
const iconNode = this.getSprNode('icon');
iconNode.zIndex = 5;
iconNode.anchorX = 1;
iconNode.anchorY = 1;
iconNode.parent = cc.find('Canvas');
iconNode.x = iconNode.parent.width / 2 - 10;
iconNode.y = iconNode.parent.height / 2 - 10;
iconNode.on(cc.Node.EventType.TOUCH_START, () => {
this.playAudioByUrl(this.data.audio_url);
})
},
curPage: null,
initBtn() {
this.curPage = 0;
const bottomPart = cc.find('Canvas/bottomPart');
bottomPart.zIndex = 5; // 提高层级
bottomPart.x = bottomPart.parent.width / 2;
bottomPart.y = -bottomPart.parent.height / 2;
const leftBtnNode = bottomPart.getChildByName('btn_left');
//节点中添加了button组件 则可以添加click事件监听
leftBtnNode.on('click', () => {
if (!this._cantouch) {
return;
}
if (this.curPage == 0) {
return;
}
this.curPage = 0
this.leftMove();
// 游戏结束时需要调用这个方法通知系统作业完成
onHomeworkFinish();
cc.audioEngine.play(this.audioBtn.clip, false, 0.8)
})
const rightBtnNode = bottomPart.getChildByName('btn_right');
//节点中添加了button组件 则可以添加click事件监听
rightBtnNode.on('click', () => {
if (!this._cantouch) {
return;
}
if (this.curPage == 1) {
return;
}
this.curPage = 1
this.rightMove();
cc.audioEngine.play(this.audioBtn.clip, false, 0.5)
})
},
leftMove() {
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)
.to(1, { x: this.pic2.baseX }, { easing: 'cubicInOut' })
.call(() => {
this._cantouch = true;
})
.start();
},
rightMove() {
this._cantouch = false;
const len = this.pic1.parent.width;
cc.tween(this.pic1)
.to(1, { x: this.pic1.baseX - len }, { easing: 'cubicInOut' })
.start();
cc.tween(this.pic2)
.to(1, { x: this.pic2.baseX - len }, { easing: 'cubicInOut' })
.call(() => {
this._cantouch = true;
})
.start();
},
// update (dt) {},
// ------------------------------------------------
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;
},
getSpriteFrimeByUrl(url, cb) {
cc.loader.load({ url }, (err, img) => {
const spriteFrame = new cc.SpriteFrame(img)
if (cb) {
cb(spriteFrame);
}
})
},
getSprNodeByUrl(url, cb) {
const node = new cc.Node();
const spr = node.addComponent(cc.Sprite);
this.getSpriteFrimeByUrl(url, (sf) => {
spr.spriteFrame = sf;
if (cb) {
cb(node);
}
})
},
playAudioByUrl(audio_url, cb = null) {
if (audio_url) {
cc.assetManager.loadRemote(audio_url, (err, audioClip) => {
const audioId = cc.audioEngine.play(audioClip, false, 0.8);
if (cb) {
cc.audioEngine.setFinishCallback(audioId, () => {
cb();
});
}
});
}
},
// ------------------------------------------
});
export const defaultData = {
"pic_url": "http://staging-teach.cdn.ireadabc.com/ed94332a503c31e0908bd4c6923a2665.png",
"pic_url_2": "http://staging-teach.cdn.ireadabc.com/5fb60317ade0195d35ad8034d5370a7f.png",
"text": "This is a test label.",
"audio_url": "http://staging-teach.cdn.ireadabc.com/f47f1d7b5c160fe1c59500d180346240.mp3"
}
\ 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