Commit 5df57226 authored by 范雪寒's avatar 范雪寒

feat: 选项尺寸调整;猫猫语音可配置

parent a2fea002
......@@ -5,6 +5,26 @@
答对所有题或答题满<input style="width: 50px;" type="number" nz-input [(ngModel)]="item.maxWrongNumber" (blur)="save()">次自动结束游戏
</div>
</div>
<div style="padding: 10px;">
<div style="width: 500px; margin-top: 20px; border: 1px solid #ccc; border-radius: 5px; padding: 15px;">
猫咪开头音频:
<app-audio-recorder
style="margin-left: 10px; "
[audioUrl]="item.startAudio"
(audioUploaded)="onAudioUploadSuccess($event, 'startAudio', item)"
></app-audio-recorder>
</div>
<div style="width: 500px; margin-top: 20px; border: 1px solid #ccc; border-radius: 5px; padding: 15px;">
猫咪结束音频:
<app-audio-recorder
style="margin-left: 10px; "
[audioUrl]="item.endAudio"
(audioUploaded)="onAudioUploadSuccess($event, 'endAudio', item)"
></app-audio-recorder>
</div>
</div>
<div style="padding: 10px;">
......
......@@ -24,6 +24,8 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
this.item = {
maxWrongNumber: 4,
startAudio: '',
endAudio: '',
question_arr: []
};
......
......@@ -104,6 +104,8 @@ cc.Class({
},
addPreloadAudio() {
this._audioResList.push(this.data.startAudio);
this._audioResList.push(this.data.endAudio);
this._audioResList.push(...this.data.question_arr.map(question => {
return question.option_arr.map(option => {
return { url: option.audio_url };
......@@ -172,19 +174,19 @@ cc.Class({
const canvasHeight = cc.find('Canvas').height;
const optionNum = this.data.question_arr[questionIdx].option_arr.length;
const maxOptionHeight = 500;
const maxOptionWidth = (canvasWidth - 20) / optionNum;
const maxOptionWidth = (canvasWidth * 0.95) / optionNum;
const arr = randomSortByArr(this.data.question_arr[questionIdx].option_arr);
arr.forEach(async (option, idx) => {
const optionNode = await this.createOption(option);
optionNode.name = `option_${idx}`;
optionNode.x = (maxOptionWidth) * (idx + 0.5) - canvasWidth / 2 - box.x;
optionNode.x = (idx - (arr.length - 1) / 2) * maxOptionWidth - box.x;
optionNode.y = canvasHeight / 2 - box.y - 300;
optionNode.scale = 0;
optionNode.parent = box;
cc.tween(optionNode)
.to(0.1, { scale: Math.min(1, (maxOptionWidth - 10) / optionNode.width, maxOptionHeight / optionNode.height) })
.to(0.1, { scale: Math.min(1, (maxOptionWidth * 0.85) / optionNode.width, maxOptionHeight / optionNode.height) })
.start();
});
},
......@@ -386,7 +388,7 @@ cc.Class({
coolCatSpeakRight(cb) {
const cat = cc.find('Canvas/bg/catFrame/CoolCat');
playDragonBoneAnimation(cat, 'right', -1);
this.playEffect('CoolCatRight', () => {
this.playAudioByUrl(this.data.startAudio, () => {
playDragonBoneAnimation(cat, 'normal', -1);
cb();
});
......@@ -395,7 +397,7 @@ cc.Class({
coolCatSpeakWrong(cb) {
const cat = cc.find('Canvas/bg/catFrame/CoolCat');
playDragonBoneAnimation(cat, 'wrong', -1);
this.playEffect('CoolCatWrong', () => {
this.playAudioByUrl(this.data.endAudio, () => {
playDragonBoneAnimation(cat, 'normal', -1);
cb();
});
......
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