Commit 519a274e authored by limingzhe's avatar limingzhe

feat: 添加 spine

parent 2d11e844
File added
import { onHomeworkFinish, RandomInt, playAudioByUrl, loadDragonBones, getSpriteFrimeByUrl } from "../script/util"; import { onHomeworkFinish, RandomInt, playAudioByUrl, loadDragonBones, getSpriteFrimeByUrl, loadSpine } from "../script/util";
import { defaultData } from "../script/defaultData"; import { defaultData } from "../script/defaultData";
import { assign, createMachine, interpret, actions, forwardTo, matchesState } from "../script/xstate"; import { assign, createMachine, interpret, actions, forwardTo, matchesState } from "../script/xstate";
const { pure , send, raise, sendParent } = actions; const { pure , send, raise, sendParent } = actions;
...@@ -457,15 +457,28 @@ cc.Class({ ...@@ -457,15 +457,28 @@ cc.Class({
const k = this._hintsNodeList[i].after; const k = this._hintsNodeList[i].after;
after[k]= { after[k]= {
actions: () => { actions: () => {
const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
dragonDisplay.playAnimation('enlarge', 1); if (t.isSpine) {
console.log(dragonDisplay._armatureKey, 'enlarge')
dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => { const skeleton = t.getComponent(sp.Skeleton);
// TODO 这里写触发事件 skeleton.pause();
// event.name为事件名称 skeleton.loop = false;
// event.armature.animation.play('normal', 0); skeleton.animation = 'enlarge';
// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end') // skeleton.animation = skeleton.animationNames[0];
}, this);
} else {
const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
dragonDisplay.playAnimation('enlarge', 1);
console.log(dragonDisplay._armatureKey, 'enlarge')
dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {
// TODO 这里写触发事件
// event.name为事件名称
// event.armature.animation.play('normal', 0);
// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
}, this);
}
// const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay); // const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
...@@ -488,8 +501,18 @@ cc.Class({ ...@@ -488,8 +501,18 @@ cc.Class({
for(let i = 0 ;i < this._allAnimationNodes.length; i++) { for(let i = 0 ;i < this._allAnimationNodes.length; i++) {
const t = this._allAnimationNodes[i]; const t = this._allAnimationNodes[i];
const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay); if (t.isSpine) {
dragonDisplay.playAnimation('normal', 0);
const skeleton = t.getComponent(sp.Skeleton);
skeleton.pause();
skeleton.loop = true;
skeleton.animation = 'normal'
// skeleton.animation = skeleton.animationNames[0];
} else {
const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
dragonDisplay.playAnimation('normal', 0);
}
} }
} }
} }
...@@ -505,7 +528,9 @@ cc.Class({ ...@@ -505,7 +528,9 @@ cc.Class({
// console.log(1, state.value, state.context); // console.log(1, state.value, state.context);
}); });
this.gameMachineService.start(); this.gameMachineService.start();
window.gameMachineService = gameMachineService; if (window.gameMachineService) {
window.gameMachineService = gameMachineService;
}
}, },
...@@ -586,7 +611,8 @@ cc.Class({ ...@@ -586,7 +611,8 @@ cc.Class({
}, },
getDefaultData() { getDefaultData() {
return defaultData; return {"begin_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","begin_sep_time":1,"guide_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","playing_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","right_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio1":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio2":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","end_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","bgItem":{"url":"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png","rect":{"x":549.55,"y":0,"width":449.9,"height":582}},"hotZoneItemArr":[{"id":"1659333645573","index":0,"audio_url":"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3","itemType":"rect","fontScale":1.21015625,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.21015625,"dragDot":{"x":774.5,"y":289.55016883743366},"gIdx":"1","labelText":"1","posX":887.5,"posY":165.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/d1f859d3fba84bd03565e543c986fb28.json","name":"6_4_ske.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/70f96e1cc7f013e27ed1952c503fb750.json","name":"6_4_tex.json"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/b06f9b90018a6eb0175a01e355b9ced6.png","name":"6_4_tex.png"},"animType":"dragonBone","rect":{"x":36.08,"y":49.19,"width":153.95,"height":150.19}},{"id":"1659334098930","index":1,"audio_url":"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3","itemType":"rect","fontScale":1.21015625,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.21015625,"dragDot":{"x":774.5,"y":289.55016883743366},"gIdx":"0","labelText":"1","posX":1212.5,"posY":643.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/bdbadb06e0c1157e727cecd28f28d10e.json","name":"spineboy-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas","name":"spineboy-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png","name":"spineboy-pro.png"},"animType":"spine","rect":{"x":282.03,"y":408.15,"width":150.19,"height":150.19}}]}
// return defaultData;
}, },
preloadItem() { preloadItem() {
...@@ -783,33 +809,74 @@ cc.Class({ ...@@ -783,33 +809,74 @@ cc.Class({
} }
if (block.gIdx == '0' || block.gIdx == '1') { if (block.gIdx == '0' || block.gIdx == '1') {
const n = new cc.Node(); const n = new cc.Node();
n.scale = 0.25; n.scale = 0.25;
const db = n.addComponent(dragonBones.ArmatureDisplay);
n.parent = ground; n.parent = ground;
n.active = false; n.active = false;
loadDragonBones(db, {
tex: block.texPngData.url, if (block.animType == 'spine') {
atlas: block.texJsonData.url,
ske: block.skeJsonData.url, const skeleton = n.addComponent(sp.Skeleton);
}).then(({width, height}) => { n.isSpine = true;
n.width = width;
n.height = height; loadSpine(skeleton, block.texPngData.name, {
n.active = true; tex: block.texPngData.url,
db.playAnimation('null', 0); atlas: block.texJsonData.url,
this._allAnimationNodes.push(n); ske: block.skeJsonData.url,
finishDbCount++; }).then(({width, height}) => {
console.log(finishDbCount, dbCount) n.width = width;
if (finishDbCount == dbCount) { n.height = height;
this.loadEnd(); n.active = true;
} // db.playAnimation('null', 0);
}).catch(() => {
finishDbCount++; // skeleton.loop = true;
console.log(finishDbCount, dbCount) // skeleton.animation = skeleton.animationNames[0]
if (finishDbCount == dbCount) {
this.loadEnd(); this._allAnimationNodes.push(n);
} finishDbCount++;
}); console.log(finishDbCount, dbCount)
if (finishDbCount == dbCount) {
this.loadEnd();
}
}).catch(() => {
finishDbCount++;
console.log(finishDbCount, dbCount)
if (finishDbCount == dbCount) {
this.loadEnd();
}
});
} else {
const db = n.addComponent(dragonBones.ArmatureDisplay);
loadDragonBones(db, {
tex: block.texPngData.url,
atlas: block.texJsonData.url,
ske: block.skeJsonData.url,
}).then(({width, height}) => {
n.width = width;
n.height = height;
n.active = true;
db.playAnimation('null', 0);
this._allAnimationNodes.push(n);
finishDbCount++;
console.log(finishDbCount, dbCount)
if (finishDbCount == dbCount) {
this.loadEnd();
}
}).catch(() => {
finishDbCount++;
console.log(finishDbCount, dbCount)
if (finishDbCount == dbCount) {
this.loadEnd();
}
});
}
if (block.gIdx == '0') { if (block.gIdx == '0') {
const rectInfo = { const rectInfo = {
node: n, node: n,
......
...@@ -399,4 +399,79 @@ export function loadDragonBones(dragonDisplay,{tex, atlas, ske}) { ...@@ -399,4 +399,79 @@ export function loadDragonBones(dragonDisplay,{tex, atlas, ske}) {
}); });
}); });
} }
\ No newline at end of file
export function loadSpine(skeleton, picName, {tex, atlas, ske}) {
return new Promise((resolve, reject) => {
// cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {
cc.assetManager.loadRemote(tex, (error, texture) => {
if (error) {
reject();
return;
}
// cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.assetManager.loadAny({ url: atlas }, (error, atlasJson) => {
if (error) {
reject();
return;
}
// cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
cc.assetManager.loadAny({ url: ske }, (error, dragonBonesJson) => {
if (error) {
reject();
return;
}
var asset = new sp.SkeletonData();
asset._uuid = ske;
asset.skeletonJson = JSON.stringify( dragonBonesJson );
asset.atlasText = atlasJson;
asset.textures = [texture];
asset.textureNames = [picName];
console.log('picName: ', picName);
skeleton.skeletonData = asset;
const jsonObj = dragonBonesJson //JSON.parse( assets[1]);
const animationNameObj = jsonObj.animations;
let animationNames = [];
for (let name in animationNameObj) {
console.log('name~~: ', name);
animationNames.push(name);
}
console.log("skeleton.animation: ", skeleton.animation);
skeleton.animationNames = animationNames;
skeleton.loop = false;
console.log("jsonObj['skeleton'] : ", jsonObj['skeleton'])
resolve(jsonObj['skeleton']);
// const atlasObj = new dragonBones.DragonBonesAtlasAsset()
// atlasObj.uuid = atlas
// atlasObj.atlasJson = atlasJson
// atlasObj.texture = texture
// const asset = new dragonBones.DragonBonesAsset()
// asset.uuid = ske
// asset.dragonBonesJson = dragonBonesJson;
// const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
// dragonDisplay.armatureName = armatureName;
// dragonDisplay.dragonAtlasAsset = atlasObj
// dragonDisplay.dragonAsset = asset;
// resolve(asset._dragonBonesJsonData.armature[0].aabb);
});
});
});
});
}
...@@ -128,5 +128,8 @@ ...@@ -128,5 +128,8 @@
} }
} }
}, },
"defaultProject": "ng-template-generator" "defaultProject": "ng-template-generator",
} "cli": {
"analytics": "61925577-1d89-4137-97e7-a79129dc9dd5"
}
}
\ No newline at end of file
...@@ -20,10 +20,10 @@ ...@@ -20,10 +20,10 @@
"@angular/platform-browser": "~9.0.2", "@angular/platform-browser": "~9.0.2",
"@angular/platform-browser-dynamic": "~9.0.2", "@angular/platform-browser-dynamic": "~9.0.2",
"@angular/router": "~9.0.2", "@angular/router": "~9.0.2",
"@fortawesome/angular-fontawesome": "^0.6.0", "@fortawesome/angular-fontawesome": "0.6.0",
"@fortawesome/fontawesome-svg-core": "^1.2.27", "@fortawesome/fontawesome-svg-core": "1.2.27",
"@fortawesome/free-regular-svg-icons": "^5.12.1", "@fortawesome/free-regular-svg-icons": "5.12.1",
"@fortawesome/free-solid-svg-icons": "^5.12.1", "@fortawesome/free-solid-svg-icons": "5.12.1",
"@tweenjs/tween.js": "~18.5.0", "@tweenjs/tween.js": "~18.5.0",
"ali-oss": "^6.5.1", "ali-oss": "^6.5.1",
"compressing": "^1.5.0", "compressing": "^1.5.0",
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<h5 style="margin-left: 2.5%;"> preview: </h5> <h5 style="margin-left: 2.5%;"> preview: </h5>
<div class="preview-box" #wrap> <div class="preview-box" [style.height]="isRotate ? '95vw' : '35vw'" #wrap>
<canvas id="canvas" #canvas></canvas> <canvas id="canvas" #canvas></canvas>
</div> </div>
...@@ -69,17 +69,34 @@ ...@@ -69,17 +69,34 @@
</div> </div>
<div *ngIf="customTypeGroupArr[it.gIdx].anima" align="center" style="margin-top: 5px"> <div *ngIf="customTypeGroupArr[it.gIdx].anima" align="center" style="margin-top: 5px">
<button nz-button (click)="setAnimaBtnClick(i)" > <!-- <button nz-button (click)="setAnimaBtnClick(i)" >
<i nz-icon nzType="tool" nzTheme="outline"></i> <i nz-icon nzType="tool" nzTheme="outline"></i>
配置龙骨动画 配置龙骨动画
</button> </button> -->
<app-upload-dragon-bone
[skeJsonData]="it.skeJsonData || {}"
[texJsonData]="it.texJsonData || {}"
[texPngData]="it.texPngData || {}"
[animType]="it.animType || 'dragonBone'"
(save)="saveAnim($event, it)">
</app-upload-dragon-bone>
</div> </div>
<div *ngIf="customTypeGroupArr[it.gIdx].animaSmall" align="center" style="margin-top: 5px"> <div *ngIf="customTypeGroupArr[it.gIdx].animaSmall" align="center" style="margin-top: 5px">
<button nz-button (click)="setAnimaSmallBtnClick(i)" > <!-- <button nz-button (click)="setAnimaSmallBtnClick(i)" >
<i nz-icon nzType="tool" nzTheme="outline"></i> <i nz-icon nzType="tool" nzTheme="outline"></i>
配置龙骨动画(小) 配置龙骨动画(小)
</button> </button> -->
<app-upload-dragon-bone
[skeJsonData]="it.skeJsonData || {}"
[texJsonData]="it.texJsonData || {}"
[texPngData]="it.texPngData || {}"
(save)="saveAnim($event, it)">
</app-upload-dragon-bone>
</div> </div>
...@@ -91,15 +108,15 @@ ...@@ -91,15 +108,15 @@
></app-audio-recorder> ></app-audio-recorder>
</div> </div>
<!-- <div *ngIf="customTypeGroupArr[it.gIdx]?.action" style="display: flex;align-items: center; margin-top: 5px">--> <!-- <div *ngIf="customTypeGroupArr[it.gIdx]?.action" style="display: flex;align-items: center; margin-top: 5px">
<!-- <app-custom-action--> <app-custom-action
<!-- style="margin: auto"--> style="margin: auto"
<!-- [item]="it ? it['actionData_' + it.gIdx] : {}"--> [item]="it ? it['actionData_' + it.gIdx] : {}"
<!-- [type]="customTypeGroupArr[it.gIdx].action.type"--> [type]="customTypeGroupArr[it.gIdx].action.type"
<!-- [option]="customTypeGroupArr[it.gIdx].action.option"--> [option]="customTypeGroupArr[it.gIdx].action.option"
<!-- (save)="onSaveCustomAction($event, it)">--> (save)="onSaveCustomAction($event, it)">
<!-- ></app-custom-action>--> ></app-custom-action>
<!-- </div>--> </div> -->
<div *ngIf="customTypeGroupArr[it.gIdx]?.isShowPos" style="display: flex; align-items: center; justify-content: center; margin-top: 5px;"> <div *ngIf="customTypeGroupArr[it.gIdx]?.isShowPos" style="display: flex; align-items: center; justify-content: center; margin-top: 5px;">
x: <input type="text" nz-input [(ngModel)]="it.posX" style="width: 50px; margin-right: 15px;" (blur)="saveItemPos(it)"> x: <input type="text" nz-input [(ngModel)]="it.posX" style="width: 50px; margin-right: 15px;" (blur)="saveItemPos(it)">
...@@ -118,23 +135,23 @@ ...@@ -118,23 +135,23 @@
<input type="text" nz-input [(ngModel)]="it.labelText" (blur)="saveText(it)"> <input type="text" nz-input [(ngModel)]="it.labelText" (blur)="saveText(it)">
</div> </div>
<!-- <div *ngIf="customTypeGroupArr[it.gIdx]?.mathLabel" align="center" style="margin-top: 5px; display: flex; align-items: center; justify-content: center;">--> <!-- <div *ngIf="customTypeGroupArr[it.gIdx]?.mathLabel" align="center" style="margin-top: 5px; display: flex; align-items: center; justify-content: center;">
<!-- <span style="width: 30%;">{{customTypeGroupArr[it.gIdx].mathLabel + ':'}}</span>--> <span style="width: 30%;">{{customTypeGroupArr[it.gIdx].mathLabel + ':'}}</span>
<!-- <app-formula-input [(ngfModel)]="it.mathLabel" ></app-formula-input>--> <app-formula-input [(ngfModel)]="it.mathLabel" ></app-formula-input>
<!-- </div>--> </div> -->
<div *ngIf="customTypeGroupArr[it.gIdx]?.isCopy" align="center" style="margin-top: 5px; display: flex; align-items: center; justify-content: center;"> <div *ngIf="customTypeGroupArr[it.gIdx]?.isCopy" align="center" style="margin-top: 5px; display: flex; align-items: center; justify-content: center;">
<button nz-button (click)="copyItem(it)" > <button nz-button (click)="copyItem(it)" >
<i nz-icon nzType="copy" nzTheme="outline"></i> <i nz-icon nzType="copy" nzTheme="outline"></i>
复制粘贴 复制粘贴
</button> </button>
</div> </div>
</div> </div>
<!-- <div *ngIf="!customTypeGroupArr"> <!-- <div *ngIf="!customTypeGroupArr">
...@@ -226,6 +243,7 @@ ...@@ -226,6 +243,7 @@
<!--龙骨面板--> <!--龙骨面板-->
<!--
<nz-modal [(nzVisible)]="animaPanelVisible" nzTitle="配置资源文件" (nzAfterClose)="closeAfterPanel()" (nzOnCancel)="animaPanelCancel()" (nzOnOk)="animaPanelOk()" nzOkText="保存"> <nz-modal [(nzVisible)]="animaPanelVisible" nzTitle="配置资源文件" (nzAfterClose)="closeAfterPanel()" (nzOnCancel)="animaPanelCancel()" (nzOnOk)="animaPanelOk()" nzOkText="保存">
<div class="anima-upload-btn"> <div class="anima-upload-btn">
...@@ -271,6 +289,6 @@ ...@@ -271,6 +289,6 @@
提示:需包含以下动画: {{customTypeGroupArr[curDragonBoneGIdx].animaNames.toString()}} 提示:需包含以下动画: {{customTypeGroupArr[curDragonBoneGIdx].animaNames.toString()}}
</div> </div>
</nz-modal> </nz-modal> -->
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
border: 2px solid #ddd; border: 2px solid #ddd;
.preview-box { .preview-box {
margin: auto; margin: auto;
......
...@@ -11,8 +11,17 @@ ...@@ -11,8 +11,17 @@
<nz-modal [(nzVisible)]="animaPanelVisible" (nzAfterClose)="closePanel()" nzTitle="配置资源文件" <nz-modal [(nzVisible)]="animaPanelVisible" (nzAfterClose)="closePanel()" nzTitle="配置资源文件"
(nzOnCancel)="animaPanelCancel()" (nzOnOk)="animaPanelOk()" nzOkText="保存"> (nzOnCancel)="animaPanelCancel()" (nzOnOk)="animaPanelOk()" nzOkText="保存">
<nz-radio-group [ngModel]="animType" (ngModelChange)="animRadioChange($event)" style="display: flex; align-items: center; justify-content: center; flex-wrap: wrap;">
<div style="display: flex; ">
<label nz-radio nzValue="dragonBone">龙骨</label>
<label nz-radio nzValue="spine">spine</label>
</div>
</nz-radio-group>
<div class="anima-upload-btn"> <div class="anima-upload-btn">
<span style="margin-right: 10px">上传 ske_json 文件: </span> <span *ngIf="animType == 'dragonBone'" style="margin-right: 10px">上传 ske_json 文件: </span>
<span *ngIf="animType == 'spine'" style="margin-right: 10px">上传 json 文件: </span>
<nz-upload [nzShowUploadList]="false" nzAccept="application/json" [nzAction]="uploadUrl" [nzData]="uploadData" <nz-upload [nzShowUploadList]="false" nzAccept="application/json" [nzAction]="uploadUrl" [nzData]="uploadData"
(nzChange)="skeJsonHandleChange($event)"> (nzChange)="skeJsonHandleChange($event)">
<button nz-button><i nz-icon nzType="upload"></i><span>Upload</span></button> <button nz-button><i nz-icon nzType="upload"></i><span>Upload</span></button>
...@@ -22,8 +31,9 @@ ...@@ -22,8 +31,9 @@
</div> </div>
<div class="anima-upload-btn"> <div class="anima-upload-btn">
<span style="margin-right: 10px">上传 tex_json 文件: </span> <span *ngIf="animType == 'dragonBone'" style="margin-right: 10px">上传 tex_json 文件: </span>
<nz-upload [nzShowUploadList]="false" nzAccept="application/json" [nzAction]="uploadUrl" [nzData]="uploadData" <span *ngIf="animType == 'spine'" style="margin-right: 10px">上传 atlas 文件: </span>
<nz-upload [nzShowUploadList]="false" [nzAccept]="animType == 'dragonBone' ? '.json' : '.atlas'" [nzAction]="uploadUrl" [nzData]="uploadData"
(nzChange)="texJsonHandleChange($event)"> (nzChange)="texJsonHandleChange($event)">
<button nz-button><i nz-icon nzType="upload"></i><span>Upload</span></button> <button nz-button><i nz-icon nzType="upload"></i><span>Upload</span></button>
</nz-upload> </nz-upload>
...@@ -32,7 +42,8 @@ ...@@ -32,7 +42,8 @@
</div> </div>
<div class="anima-upload-btn"> <div class="anima-upload-btn">
<span style="margin-right: 10px">上传 tex_png 文件: </span> <span *ngIf="animType == 'dragonBone'" style="margin-right: 10px">上传 tex_png 文件: </span>
<span *ngIf="animType == 'spine'" style="margin-right: 10px">上传 png 文件: </span>
<nz-upload [nzShowUploadList]="false" nzAccept="image/*" [nzAction]="uploadUrl" [nzData]="uploadData" <nz-upload [nzShowUploadList]="false" nzAccept="image/*" [nzAction]="uploadUrl" [nzData]="uploadData"
(nzChange)="texPngHandleChange($event)"> (nzChange)="texPngHandleChange($event)">
<button nz-button><i nz-icon nzType="upload"></i><span>Upload</span></button> <button nz-button><i nz-icon nzType="upload"></i><span>Upload</span></button>
......
...@@ -11,7 +11,7 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges { ...@@ -11,7 +11,7 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges {
uploading = false; uploading = false;
progress = 0; progress = 0;
@Input() @Input()
btnName = '配置龙骨动画'; btnName = '配置骨骼动画';
@Input() @Input()
animaNames = []; animaNames = [];
...@@ -21,32 +21,16 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges { ...@@ -21,32 +21,16 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges {
texJsonData = {}; texJsonData = {};
@Input() @Input()
texPngData = {}; texPngData = {};
@Input()
animType;
@Output() @Output()
save = new EventEmitter(); save = new EventEmitter();
@Output() @Output()
refreshEmitter = new EventEmitter(); refreshEmitter = new EventEmitter();
// @Input()
// picUrl;
// @Input()
// canDelete = false;
// @Output()
// imageUploaded = new EventEmitter();
// @Output()
// imageUploadFailure = new EventEmitter();
// @Output()
// delete = new EventEmitter();
// @Input()
// picItem = null;
// @Input()
// iconSize = 2;
// @Input()
// TIP = 'Click here to upload image';
// @Input()
// disableUpload = false;
uploadUrl; uploadUrl;
uploadData; uploadData;
...@@ -93,6 +77,7 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges { ...@@ -93,6 +77,7 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges {
data['skeJsonData'] = this.skeJsonData; data['skeJsonData'] = this.skeJsonData;
data['texJsonData'] = this.texJsonData; data['texJsonData'] = this.texJsonData;
data['texPngData'] = this.texPngData; data['texPngData'] = this.texPngData;
data['animType'] = this.animType;
this.save.emit(data); this.save.emit(data);
} }
...@@ -155,6 +140,11 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges { ...@@ -155,6 +140,11 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges {
} }
animRadioChange(e) {
console.log(" in animRadioChange: ", e);
this.animType = e;
}
/** /**
* 刷新 渲染页面 * 刷新 渲染页面
......
This diff is collapsed.
...@@ -28,6 +28,7 @@ exports.asyncTweenBy = asyncTweenBy; ...@@ -28,6 +28,7 @@ exports.asyncTweenBy = asyncTweenBy;
exports.showTrebleFirework = showTrebleFirework; exports.showTrebleFirework = showTrebleFirework;
exports.onHomeworkFinish = onHomeworkFinish; exports.onHomeworkFinish = onHomeworkFinish;
exports.loadDragonBones = loadDragonBones; exports.loadDragonBones = loadDragonBones;
exports.loadSpine = loadSpine;
exports.FireworkSettings = void 0; exports.FireworkSettings = void 0;
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
...@@ -354,7 +355,7 @@ function _showFireworks() { ...@@ -354,7 +355,7 @@ function _showFireworks() {
case 0: case 0:
baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange; baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
new Array(number).fill(' ').forEach( /*#__PURE__*/function () { new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) { var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
var rabbonNode, node, rate, angle; var rabbonNode, node, rate, angle;
return regeneratorRuntime.wrap(function _callee2$(_context2) { return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) { while (1) {
...@@ -422,7 +423,7 @@ function _showFireworks() { ...@@ -422,7 +423,7 @@ function _showFireworks() {
})); }));
return function (_x12, _x13) { return function (_x12, _x13) {
return _ref2.apply(this, arguments); return _ref3.apply(this, arguments);
}; };
}()); }());
...@@ -618,4 +619,74 @@ function loadDragonBones(dragonDisplay, _ref) { ...@@ -618,4 +619,74 @@ function loadDragonBones(dragonDisplay, _ref) {
}); });
} }
function loadSpine(skeleton, picName, _ref2) {
var tex = _ref2.tex,
atlas = _ref2.atlas,
ske = _ref2.ske;
return new Promise(function (resolve, reject) {
// cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {
cc.assetManager.loadRemote(tex, function (error, texture) {
if (error) {
reject();
return;
} // cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.assetManager.loadAny({
url: atlas
}, function (error, atlasJson) {
if (error) {
reject();
return;
} // cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
cc.assetManager.loadAny({
url: ske
}, function (error, dragonBonesJson) {
if (error) {
reject();
return;
}
var asset = new sp.SkeletonData();
asset._uuid = ske;
asset.skeletonJson = JSON.stringify(dragonBonesJson);
asset.atlasText = atlasJson;
asset.textures = [texture];
asset.textureNames = [picName];
console.log('picName: ', picName);
skeleton.skeletonData = asset;
var jsonObj = dragonBonesJson; //JSON.parse( assets[1]);
var animationNameObj = jsonObj.animations;
var animationNames = [];
for (var name in animationNameObj) {
console.log('name~~: ', name);
animationNames.push(name);
}
console.log("skeleton.animation: ", skeleton.animation);
skeleton.animationNames = animationNames;
skeleton.loop = false;
console.log("jsonObj['skeleton'] : ", jsonObj['skeleton']);
resolve(jsonObj['skeleton']); // const atlasObj = new dragonBones.DragonBonesAtlasAsset()
// atlasObj.uuid = atlas
// atlasObj.atlasJson = atlasJson
// atlasObj.texture = texture
// const asset = new dragonBones.DragonBonesAsset()
// asset.uuid = ske
// asset.dragonBonesJson = dragonBonesJson;
// const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
// dragonDisplay.armatureName = armatureName;
// dragonDisplay.dragonAtlasAsset = atlasObj
// dragonDisplay.dragonAsset = asset;
// resolve(asset._dragonBonesJsonData.armature[0].aabb);
});
});
});
});
}
cc._RF.pop(); cc._RF.pop();
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
{"version":"1.0.8","stats":{"/Users/admin/workspace/OP15/temp/quick-scripts/src/__qc_index__.js":"2022-01-10T08:17:43.297Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/scene/OP15.js":"2022-01-10T08:17:43.274Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/script/defaultData.js":"2022-01-10T08:17:43.271Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/script/util.js":"2022-01-10T08:17:43.270Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/script/state.js":"2022-01-10T08:17:43.269Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/script/xstate.js":"2022-01-10T08:17:43.272Z"}} {"version":"1.0.8","stats":{"/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/__qc_index__.js":"2022-08-01T06:30:44.713Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/defaultData.js":"2022-08-01T06:30:44.689Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/scene/OP15.js":"2022-08-01T06:30:44.691Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/state.js":"2022-08-01T06:30:44.688Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/util.js":"2022-08-01T06:30:44.689Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/xstate.js":"2022-08-01T06:30:44.690Z"}}
This diff is collapsed.
(function () { (function () {
var scripts = [{"deps":{"./assets/OP15/script/xstate":3,"./assets/OP15/script/state":1,"./assets/OP15/script/defaultData":4,"./assets/OP15/scene/OP15":2,"./assets/OP15/script/util":5},"path":"preview-scripts/__qc_index__.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/state.js"},{"deps":{"../script/defaultData":4,"../script/xstate":3,"../script/util":5},"path":"preview-scripts/assets/OP15/scene/OP15.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/xstate.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/defaultData.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/util.js"}]; var scripts = [{"deps":{"./assets/OP15/script/state":3,"./assets/OP15/script/xstate":5,"./assets/OP15/script/defaultData":1,"./assets/OP15/scene/OP15":2,"./assets/OP15/script/util":4},"path":"preview-scripts/__qc_index__.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/defaultData.js"},{"deps":{"../script/defaultData":1,"../script/xstate":5,"../script/util":4},"path":"preview-scripts/assets/OP15/scene/OP15.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/state.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/util.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/xstate.js"}];
var entries = ["preview-scripts/__qc_index__.js"]; var entries = ["preview-scripts/__qc_index__.js"];
var bundleScript = 'preview-scripts/__qc_bundle__.js'; var bundleScript = 'preview-scripts/__qc_bundle__.js';
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -28,6 +28,7 @@ exports.asyncTweenBy = asyncTweenBy; ...@@ -28,6 +28,7 @@ exports.asyncTweenBy = asyncTweenBy;
exports.showTrebleFirework = showTrebleFirework; exports.showTrebleFirework = showTrebleFirework;
exports.onHomeworkFinish = onHomeworkFinish; exports.onHomeworkFinish = onHomeworkFinish;
exports.loadDragonBones = loadDragonBones; exports.loadDragonBones = loadDragonBones;
exports.loadSpine = loadSpine;
exports.FireworkSettings = void 0; exports.FireworkSettings = void 0;
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
...@@ -354,7 +355,7 @@ function _showFireworks() { ...@@ -354,7 +355,7 @@ function _showFireworks() {
case 0: case 0:
baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange; baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
new Array(number).fill(' ').forEach( /*#__PURE__*/function () { new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) { var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
var rabbonNode, node, rate, angle; var rabbonNode, node, rate, angle;
return regeneratorRuntime.wrap(function _callee2$(_context2) { return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) { while (1) {
...@@ -422,7 +423,7 @@ function _showFireworks() { ...@@ -422,7 +423,7 @@ function _showFireworks() {
})); }));
return function (_x12, _x13) { return function (_x12, _x13) {
return _ref2.apply(this, arguments); return _ref3.apply(this, arguments);
}; };
}()); }());
...@@ -618,4 +619,74 @@ function loadDragonBones(dragonDisplay, _ref) { ...@@ -618,4 +619,74 @@ function loadDragonBones(dragonDisplay, _ref) {
}); });
} }
function loadSpine(skeleton, picName, _ref2) {
var tex = _ref2.tex,
atlas = _ref2.atlas,
ske = _ref2.ske;
return new Promise(function (resolve, reject) {
// cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {
cc.assetManager.loadRemote(tex, function (error, texture) {
if (error) {
reject();
return;
} // cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.assetManager.loadAny({
url: atlas
}, function (error, atlasJson) {
if (error) {
reject();
return;
} // cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
cc.assetManager.loadAny({
url: ske
}, function (error, dragonBonesJson) {
if (error) {
reject();
return;
}
var asset = new sp.SkeletonData();
asset._uuid = ske;
asset.skeletonJson = JSON.stringify(dragonBonesJson);
asset.atlasText = atlasJson;
asset.textures = [texture];
asset.textureNames = [picName];
console.log('picName: ', picName);
skeleton.skeletonData = asset;
var jsonObj = dragonBonesJson; //JSON.parse( assets[1]);
var animationNameObj = jsonObj.animations;
var animationNames = [];
for (var name in animationNameObj) {
console.log('name~~: ', name);
animationNames.push(name);
}
console.log("skeleton.animation: ", skeleton.animation);
skeleton.animationNames = animationNames;
skeleton.loop = false;
console.log("jsonObj['skeleton'] : ", jsonObj['skeleton']);
resolve(jsonObj['skeleton']); // const atlasObj = new dragonBones.DragonBonesAtlasAsset()
// atlasObj.uuid = atlas
// atlasObj.atlasJson = atlasJson
// atlasObj.texture = texture
// const asset = new dragonBones.DragonBonesAsset()
// asset.uuid = ske
// asset.dragonBonesJson = dragonBonesJson;
// const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
// dragonDisplay.armatureName = armatureName;
// dragonDisplay.dragonAtlasAsset = atlasObj
// dragonDisplay.dragonAsset = asset;
// resolve(asset._dragonBonesJsonData.armature[0].aabb);
});
});
});
});
}
cc._RF.pop(); cc._RF.pop();
\ 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