Commit 5c94e0b4 authored by 李维's avatar 李维

dev commit

parent 5c63c1e3
<nz-form-item> <div class="content-border">
<nz-form-item>
<nz-form-label [nzSpan]="2" >左上</nz-form-label> <nz-form-label [nzSpan]="2" >左上</nz-form-label>
<nz-form-control [nzSpan]="6"> <nz-form-control [nzSpan]="6">
<app-upload-image-with-preview style="width: 100%" [picUrl]="items.leftTop" <app-upload-image-with-preview style="width: 100%" [picUrl]="items.leftTop"
...@@ -14,8 +15,8 @@ ...@@ -14,8 +15,8 @@
<app-upload-image-with-preview style="width: 100%" [picUrl]="items.rightTop" <app-upload-image-with-preview style="width: 100%" [picUrl]="items.rightTop"
(imageUploaded)="onImageUploadSuccess($event, items, 'rightTop')"></app-upload-image-with-preview> (imageUploaded)="onImageUploadSuccess($event, items, 'rightTop')"></app-upload-image-with-preview>
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item> <nz-form-item>
<nz-form-label [nzSpan]="2" >左中</nz-form-label> <nz-form-label [nzSpan]="2" >左中</nz-form-label>
<nz-form-control [nzSpan]="6"> <nz-form-control [nzSpan]="6">
<app-upload-image-with-preview style="width: 100%" [picUrl]="items.leftMiddle" <app-upload-image-with-preview style="width: 100%" [picUrl]="items.leftMiddle"
...@@ -27,8 +28,8 @@ ...@@ -27,8 +28,8 @@
<app-upload-image-with-preview style="width: 100%" [picUrl]="items.rightMiddle" <app-upload-image-with-preview style="width: 100%" [picUrl]="items.rightMiddle"
(imageUploaded)="onImageUploadSuccess($event, items, 'rightMiddle')"></app-upload-image-with-preview> (imageUploaded)="onImageUploadSuccess($event, items, 'rightMiddle')"></app-upload-image-with-preview>
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item> <nz-form-item>
<nz-form-label [nzSpan]="2" >左下</nz-form-label> <nz-form-label [nzSpan]="2" >左下</nz-form-label>
<nz-form-control [nzSpan]="6"> <nz-form-control [nzSpan]="6">
<app-upload-image-with-preview style="width: 100%" [picUrl]="items.leftBottom" <app-upload-image-with-preview style="width: 100%" [picUrl]="items.leftBottom"
...@@ -44,4 +45,5 @@ ...@@ -44,4 +45,5 @@
<app-upload-image-with-preview style="width: 100%" [picUrl]="items.rightBottom" <app-upload-image-with-preview style="width: 100%" [picUrl]="items.rightBottom"
(imageUploaded)="onImageUploadSuccess($event, items, 'rightBottom')"></app-upload-image-with-preview> (imageUploaded)="onImageUploadSuccess($event, items, 'rightBottom')"></app-upload-image-with-preview>
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
\ No newline at end of file </div>
\ No newline at end of file
.content-border {
width: 100%;
height: 100%;
border-radius: 0.5rem;
min-width: 1200px;
border: 2px solid #ddd;
}
\ No newline at end of file
<div class="p-image-children-editor"> <div class="p-image-children-editor">
<div style="border-right: 2px solid #ddd;" class="clearfix">
<div style="float: left; width: 20%; border-right: 2px solid #ddd;" class="clearfix"> <!-- 全局音频素材 -->
<div nzAlign="middle" style="border-bottom: 2px solid #DDD;"> <div nzAlign="middle" style="border-bottom: 2px solid #DDD;">
<div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;"> <div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;">
<div style="float: left;"> <div style="float: left;">
...@@ -10,27 +11,28 @@ ...@@ -10,27 +11,28 @@
</div> </div>
</div> </div>
<div nzAlign="middle"> <!-- 标题以及题号 -->
<div nzAlign="middle" style="border-bottom: 2px solid #DDD;">
<div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;"> <div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;">
<nz-form-item>
<nz-form-control [nzSpan]="8" style="padding: 0 5px; border-right: 1px dashed #ccc;">
<div style="position: relative; margin-bottom: 5px;"> <div style="position: relative; margin-bottom: 5px;">
<h3>题号</h3> <h3 style="text-align: left;">题号</h3>
<input type="text" nz-input placeholder="" [(ngModel)]="bgItem.NO" (blur)="autoSave()" /> <input type="text" nz-input placeholder="" [(ngModel)]="bgItem.NO" (blur)="autoSave()" />
</div> </div>
<div style="position: relative; margin-bottom: 5px;"> <div style="position: relative; margin-bottom: 5px;">
<h3>课件标题</h3> <h3 style="text-align: left;">课件标题</h3>
<input type="text" nz-input placeholder="" [(ngModel)]="bgItem.mainText" (blur)="autoSave()" /> <input type="text" nz-input placeholder="" [(ngModel)]="bgItem.mainText" (blur)="autoSave()" />
</div> </div>
<div style="position: relative; margin-bottom: 5px;"> <div style="position: relative; margin-bottom: 5px;">
<h3>标题发音</h3> <h3 style="text-align: left;">标题发音</h3>
<app-audio-recorder id="index_audio_1" [audioUrl]="bgItem.mainTextAudio" (audioUploaded)="onAudioUploadSuccess($event, bgItem,'mainTextAudio')" > </app-audio-recorder> <app-audio-recorder id="index_audio_1" [audioUrl]="bgItem.mainTextAudio" (audioUploaded)="onAudioUploadSuccess($event, bgItem,'mainTextAudio')" > </app-audio-recorder>
</div> </div>
</div> </nz-form-control>
</div>
<div nzAlign="middle"> <nz-form-control [nzSpan]="6" style="padding: 0 5px; border-right: 1px dashed #ccc;">
<div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;">
<div style="position: relative; margin-bottom: 5px;"> <div style="position: relative; margin-bottom: 5px;">
<h3>左侧单词</h3> <h3 style="text-align: left;">左侧单词</h3>
<div style="display: flex; "> <div style="display: flex; ">
<div style="flex: 1"> <div style="flex: 1">
音频 音频
...@@ -50,12 +52,11 @@ ...@@ -50,12 +52,11 @@
</div> </div>
</div> </div>
</div> </div>
</div> </nz-form-control>
</div>
<div nzAlign="middle" style="border-bottom: 2px solid #DDD;"> <nz-form-control [nzSpan]="8" style="padding: 0 5px;" >
<div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;">
<div style="position: relative; margin-bottom: 5px;"> <div style="position: relative; margin-bottom: 5px;">
<h3>右侧单词</h3> <h3 style="text-align: left;">右侧单词</h3>
<div style="display: flex; "> <div style="display: flex; ">
<div style="flex: 1"> <div style="flex: 1">
音频 音频
...@@ -75,68 +76,17 @@ ...@@ -75,68 +76,17 @@
</div> </div>
</div> </div>
</div> </div>
</nz-form-control>
</nz-form-item>
</div> </div>
</div> </div>
<div nzAlign="middle" class="clearfix">
<div class="img-box clearfix" *ngFor="let it of hotZoneArr; let i = index" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;">
<div style="position: relative; margin-bottom: 5px;">
<h3>选区-{{ i + 1 }}</h3>
<div style="display: flex; ">
<div style="flex: 1">
音频
</div>
<div style="flex: 4">
<app-audio-recorder id="index_audio_1" [audioUrl]="it.audio_url" (audioUploaded)="onAudioUploadSuccess($event, it, null)" > </app-audio-recorder>
</div>
</div>
</div>
<div style="position: relative; margin-bottom: 5px;">
<div style="display: flex; ">
<div style="flex: 1">
文字
</div>
<div style="flex: 4">
<input type="text" nz-input placeholder="" [(ngModel)]="it.text" (blur)="autoSave()" />
</div>
</div>
</div>
<div style="position: relative;">
<button style="float: right; margin-bottom: 5px;" nz-button nzType="danger" (click)="deleteItem($event, i)">
<i nz-icon nzType="delete" nzTheme="outline"></i>
删除
</button>
</div>
<div style="float: right; display: flex; padding-left: 10px;">
<!-- <button style="flex:1; margin-bottom: 5px;" nz-button nzType="dashed" (click)="handleMoveItemUp($event, i)"
[disabled]="i==0">
<i nz-icon nzType="up" nzTheme="outline"></i>
上移
</button>
<button style="flex:1; margin-bottom: 5px;" nz-button nzType="dashed" (click)="handleMoveItemDown($event, i)"
[disabled]="i==hotZoneArr.length-1">
<i nz-icon nzType="down" nzTheme="outline"></i>
下移
</button>
<button style="flex:1; margin-bottom: 5px;" nz-button nzType="danger" (click)="deleteItem($event, i)">
<i nz-icon nzType="delete" nzTheme="outline"></i>
删除
</button> -->
</div>
</div>
<div nz-col nzSpan="5" nzOffset="1">
<div class="bg-box">
<button nz-button nzType="dashed" (click)="addBtnClick()" class="add-btn">
<i nz-icon nzType="plus-circle" nzTheme="outline"></i>
Add hot zone
</button>
</div>
</div>
</div>
</div>
<div style="float: left; width: 80%; border-bottom: 2px solid #ddd;"> <!-- 选区 -->
<div nzAlign="middle" style="border-bottom: 2px solid #DDD;">
<div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;">
<h3>选区</h3>
<div>
<h5 style="margin-left: 2.5%;">预览:</h5> <h5 style="margin-left: 2.5%;">预览:</h5>
<div id="canvas-container" style="margin:5px;"> <div id="canvas-container" style="margin:5px;">
<div class="preview-box" #wrap style="margin-bottom: 20px"> <div class="preview-box" #wrap style="margin-bottom: 20px">
...@@ -157,8 +107,52 @@ ...@@ -157,8 +107,52 @@
</app-upload-image-with-preview> </app-upload-image-with-preview>
</div> </div>
</div> </div>
<div style="border-bottom: 2px solid #DDD;"></div> </div>
</div>
</div>
<!-- 选区设置 -->
<div nzAlign="middle" style="border-bottom: 2px solid #DDD;">
<div *ngFor="let it of hotZoneArr; let i = index" class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;">
<div style="position: relative; margin-bottom: 5px;">
<h3>选区-{{ i + 1 }}</h3>
<nz-form-item>
<nz-form-control [nzSpan]="8" style="padding: 0 5px;">
<div style="float: left; margin-right: 10px;">
音频
</div>
<div style="float: left;">
<app-audio-recorder id="index_audio_1" [audioUrl]="it.audio_url" (audioUploaded)="onAudioUploadSuccess($event, it, null)" > </app-audio-recorder>
</div>
</nz-form-control>
<nz-form-control [nzSpan]="8" style="padding: 0 5px;">
<div style="float: left; margin-right: 10px;">
文字
</div>
<div style="float: left;">
<input type="text" nz-input placeholder="" [(ngModel)]="it.text" (blur)="autoSave()" />
</div>
</nz-form-control>
<nz-form-control [nzSpan]="8" style="padding: 0 5px;">
<button style="float: right; margin-bottom: 5px;" nz-button nzType="danger" (click)="deleteItem($event, i)">
<i nz-icon nzType="delete" nzTheme="outline"></i>
删除
</button>
</nz-form-control>
</nz-form-item>
</div>
</div>
<div>
<button nz-button nzType="dashed" (click)="addBtnClick()" class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;">
<i nz-icon nzType="plus-circle" nzTheme="outline"></i>
添加选区
</button>
</div>
</div>
<!-- 题目配置 -->
<div nzAlign="middle">
<div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px;">
<h3>题目配置</h3> <h3>题目配置</h3>
<div nzAlign="middle" *ngFor="let item of bgItem.questions; let QI = index"> <div nzAlign="middle" *ngFor="let item of bgItem.questions; let QI = index">
<div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px; "> <div class="img-box clearfix" style="border-bottom: 1px solid #DDD; padding-bottom: 10px; ">
...@@ -179,8 +173,8 @@ ...@@ -179,8 +173,8 @@
<div>组合</div> <div>组合</div>
<div> <div>
<nz-select *ngFor="let part of item.combin; let i = index" [(ngModel)]="item.combin[i]" style="float: left; margin-right: 5px;" (ngModelChange)="handlePartChange($event, item, i)"> <nz-select *ngFor="let part of item.combin; let i = index" [(ngModel)]="item.combin[i]" style="float: left; margin-right: 5px;" (ngModelChange)="handlePartChange($event, item, i)">
<nz-option nzValue="-1" [nzLabel]="'L-' + bgItem.wordLeft_text"></nz-option> <nz-option [nzValue]="-1" [nzLabel]="'L-' + bgItem.wordLeft_text"></nz-option>
<nz-option nzValue="-2" [nzLabel]="'R-' + bgItem.wordRight_text"></nz-option> <nz-option [nzValue]="-2" [nzLabel]="'R-' + bgItem.wordRight_text"></nz-option>
<nz-option *ngFor="let hot of hotZoneArr; let j = index;" [nzValue]="j" [nzLabel]="(j + 1) + '-' + hot.text"></nz-option> <nz-option *ngFor="let hot of hotZoneArr; let j = index;" [nzValue]="j" [nzLabel]="(j + 1) + '-' + hot.text"></nz-option>
</nz-select> </nz-select>
</div> </div>
...@@ -219,7 +213,7 @@ ...@@ -219,7 +213,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<div style="padding-left: 10px; padding-bottom: 10px;"> <div style="padding-left: 10px; padding-bottom: 10px;">
<button nz-button nzType="dashed" (click)="addQustion()" [disabled]="bgItem.questions.length==8"> <button nz-button nzType="dashed" (click)="addQustion()" [disabled]="bgItem.questions.length==8">
<i nz-icon nzType="plus-circle" nzTheme="outline"></i> <i nz-icon nzType="plus-circle" nzTheme="outline"></i>
...@@ -227,6 +221,6 @@ ...@@ -227,6 +221,6 @@
</button> </button>
</div> </div>
</div> </div>
<nz-divider></nz-divider> </div>
</div> </div>
\ No newline at end of file
...@@ -346,6 +346,7 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges { ...@@ -346,6 +346,7 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
number: 2, number: 2,
combin: [0,0] combin: [0,0]
}) })
this.autoSave()
} }
handleCombinLength(item) { handleCombinLength(item) {
...@@ -561,8 +562,8 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges { ...@@ -561,8 +562,8 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
} }
handlePartChange(e, item, index) { handlePartChange(e, item, index) {
item.combin[index] = e item.combin[index] = Number(e)
console.log(item.combin, index) this.autoSave()
} }
hideAllLineDash() { hideAllLineDash() {
......
import {Component, EventEmitter, Input, OnDestroy, OnChanges, OnInit, Output, ApplicationRef} from '@angular/core'; import {Component, EventEmitter, Input, OnDestroy, OnChanges, OnInit, Output, ApplicationRef} from '@angular/core';
import { defaultData } from '../../assets/default/formData/defaultData.js'
@Component({ @Component({
selector: 'app-form', selector: 'app-form',
...@@ -40,10 +41,7 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -40,10 +41,7 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
this.item = {}; this.item = {};
} }
if ( !this.item.contentObj ) { if ( !this.item.contentObj ) {
this.item.contentObj = { this.item.contentObj = {};
"version": "1.0",
"dataKey": "DataKey_YM4-11",
};
} }
this.init(); this.init();
this.refresh(); this.refresh();
...@@ -67,39 +65,19 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy { ...@@ -67,39 +65,19 @@ export class FormComponent implements OnInit, OnChanges, OnDestroy {
} }
init() { init() {
if (this.item.contentObj.dataArray) { if(typeof(this.item.contentObj.hotZoneItemArr) == undefined || typeof(this.item.contentObj.bgItem) == undefined || typeof(this.item.contentObj.bgImages) == undefined || this.item.contentObj.version != defaultData.version) {
this.dataArray = this.item.contentObj.dataArray; console.log("Init defalue data")
this.item.contentObj = defaultData
this.hotZoneItemArr = defaultData.hotZoneItemArr
this.bgItem = defaultData.bgItem
this.bgImages = defaultData.bgImages
} else { } else {
this.dataArray = this.getDefaultPicArr(); console.log("Data loaded")
this.item.contentObj.dataArray = this.dataArray;
}
if (this.item.contentObj.hotZoneItemArr) {
this.hotZoneItemArr = this.item.contentObj.hotZoneItemArr; this.hotZoneItemArr = this.item.contentObj.hotZoneItemArr;
} else {
this.hotZoneItemArr = this.getDefaultPicArr();
this.item.contentObj.hotZoneItemArr = this.hotZoneItemArr;
}
if (this.item.contentObj.bgItem) {
this.bgItem = this.item.contentObj.bgItem; this.bgItem = this.item.contentObj.bgItem;
} else {
this.bgItem = {
url: 'assets/play/hotZooCard/defalut_bg.png'
}
this.item.contentObj.bgItem = this.bgItem;
}
if (this.item.contentObj.bgImages) {
this.bgImages = this.item.contentObj.bgImages; this.bgImages = this.item.contentObj.bgImages;
} else {
this.bgImages = {
leftTop: '', middleTop: '', rightTop: '', leftMiddle: '', rightMiddle: '', leftBottom: '', middleBottom: '', rightBottom: '',
}
this.item.contentObj.bgImages = this.bgImages;
} }
} }
cardItemData(){ cardItemData(){
......
...@@ -42,8 +42,7 @@ import { Subject } from "rxjs"; ...@@ -42,8 +42,7 @@ import { Subject } from "rxjs";
import { debounceTime, map, takeWhile, retry } from "rxjs/operators"; import { debounceTime, map, takeWhile, retry } from "rxjs/operators";
import * as _ from "lodash"; import * as _ from "lodash";
import TWEEN from "@tweenjs/tween.js"; import TWEEN from "@tweenjs/tween.js";
import defauleFormData from '../../assets/default/formData/defaultData.js' import { demoData as defaultData } from '../../assets/default/formData/defaultData.js'
import { element } from 'protractor';
const zIndexMap = { const zIndexMap = {
mainBackground: 0, mainBackground: 0,
...@@ -341,11 +340,11 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -341,11 +340,11 @@ export class PlayComponent implements OnInit, OnDestroy {
} }
}) })
element.originX = element.ref.x - 960 * this.g_mapScale / 2
element.originY = element.ref.y - 155 * this.g_mapScale / 2
let contentImageWidth = 0
let element_t = this.g_cartoon.createCartoonElementImageFunc("window-image-container", this.g_formData.bgItem.url, (w, h)=>{ let element_t = this.g_cartoon.createCartoonElementImageFunc("window-image-container", this.g_formData.bgItem.url, (w, h)=>{
let s = Math.min( 960 / w, 155 / h) let s = Math.min( 960 / w, 155 / h)
contentImageWidth = (w * s) / 2
return { return {
sx: s, sx: s,
sy: s sy: s
...@@ -357,6 +356,9 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -357,6 +356,9 @@ export class PlayComponent implements OnInit, OnDestroy {
} }
}) })
element.originX = element.ref.x - contentImageWidth * element.ref.scaleX
element.originY = element.ref.y - 155 * this.g_mapScale / 2
element.ref.addChild(element_t.ref) element.ref.addChild(element_t.ref)
this.render(element.ref) this.render(element.ref)
...@@ -379,21 +381,19 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -379,21 +381,19 @@ export class PlayComponent implements OnInit, OnDestroy {
element.initY = element.ref.y element.initY = element.ref.y
element.margin = 0 element.margin = 0
element.hotZooIndex = index; element.hotZooIndex = index;
element.ref.alpha = 0;
let elementDrag = null let elementDrag = null
elementDrag = this.g_cartoon.createCartoonElementLabel("text-puzzle-"+index, " " + item.media.text + " ", "MMTextBook-Bold", "#000", 48 * this.g_mapScale, -500, -500) elementDrag = this.g_cartoon.createCartoonElementLabel("text-puzzle-"+index, " " + item.media.text + " ", "MMTextBook-Bold", "#000", 48 * this.g_mapScale, -500, -500)
this.render(element.ref) this.render(element.ref)
this.render(elementDrag.ref) this.render(elementDrag.ref)
this.subscribeMapDragEvent(element.id, ()=>{ this.subscribeMapDragEvent(element.id, ()=>{
element.ref.alpha = 0.5;
item.media.audio_url && this.g_cartoon.playAudio(item.media.audio_url) item.media.audio_url && this.g_cartoon.playAudio(item.media.audio_url)
console.log(item.media.audio_url) console.log(item.media.audio_url)
}, ()=>{ }, ()=>{
elementDrag.ref.x = this.g_clickX, elementDrag.ref.x = this.g_clickX,
elementDrag.ref.y = this.g_clickY elementDrag.ref.y = this.g_clickY
}, ()=>{ }, ()=>{
element.ref.alpha = 1;
elementDrag.ref.x = elementDrag.initX, elementDrag.ref.x = elementDrag.initX,
elementDrag.ref.y = elementDrag.initY elementDrag.ref.y = elementDrag.initY
this.m_elementDraged = element.id; this.m_elementDraged = element.id;
...@@ -876,9 +876,9 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -876,9 +876,9 @@ export class PlayComponent implements OnInit, OnDestroy {
// 初始化默认数据 // 初始化默认数据
// ---------------------------------- // ----------------------------------
initDefaultData() { initDefaultData() {
if ( Object.keys(this.g_formData).length===0 || this.g_formData.version != defauleFormData.version ) { if ( Object.keys(this.g_formData).length===0 || this.g_formData.version != defaultData.version ) {
this.g_formData = defauleFormData; this.g_formData = defaultData;
console.log("Use default data.") console.log("Use default data.", this.g_formData)
} }
} }
......
export default { export const defaultData = {
"version": "1.0", "version": "1.0",
"dataKey": "DataKey_YM4-11", "dataKey": "DataKey_YM4-11",
"dataArray": [ "dataArray": [
...@@ -8,7 +8,7 @@ export default { ...@@ -8,7 +8,7 @@ export default {
], ],
"bgItem": { "bgItem": {
"url": "demo", "url": "",
"questions": [ "questions": [
], ],
...@@ -30,3 +30,202 @@ export default { ...@@ -30,3 +30,202 @@ export default {
"leftTop": '', "middleTop": '', "rightTop": '', "leftMiddle": '', "rightMiddle": '', "leftBottom": '', "middleBottom": '', "rightBottom": '', "leftTop": '', "middleTop": '', "rightTop": '', "leftMiddle": '', "rightMiddle": '', "leftBottom": '', "middleBottom": '', "rightBottom": '',
} }
} }
export const demoData = {
version: "1.0",
dataKey: "DataKey_YM4-11",
dataArray: [],
hotZoneItemArr: [
{
index: 0,
rect: {
x: 8.769469387755102,
y: 20.163265306122447,
width: 72.12244897959184,
height: 39.5029387755102,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_1.png",
text: "p",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
{
index: 1,
rect: {
x: 14.19804081632653,
y: 96.89069387755102,
width: 54.285714285714285,
height: 31.020408163265305,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_2.png",
text: "t",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
{
index: 2,
rect: {
x: 138.27967346938775,
y: 57.339673469387755,
width: 54.285714285714285,
height: 31.020408163265305,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_3.png",
text: "d",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
{
index: 3,
rect: {
x: 246.8511020408163,
y: 20.115183673469385,
width: 54.285714285714285,
height: 31.020408163265305,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_4.png",
text: "w",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
{
index: 4,
rect: {
x: 235.99395918367347,
y: 96.11518367346939,
width: 54.285714285714285,
height: 31.020408163265305,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_5.png",
text: "st",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
{
index: 5,
rect: {
x: 360.85110204081633,
y: 59.714285714285715,
width: 89.95918367346938,
height: 32.52334693877551,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_6.png",
text: "eam",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
{
index: 6,
rect: {
x: 496.565387755102,
y: 20.115183673469385,
width: 54.285714285714285,
height: 31.020408163265305,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_7.png",
text: "o",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
{
index: 7,
rect: {
x: 487.2592653061224,
y: 101.59183673469387,
width: 77.55102040816327,
height: 30.196816326530612,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_8.png",
text: "one",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
{
index: 8,
rect: {
x: 735.4225306122448,
y: 21.714285714285715,
width: 79.87755102040816,
height: 32.52334693877551,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_9.png",
text: "m",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
{
index: 9,
rect: {
x: 723.0143673469388,
y: 93.83673469387755,
width: 94.61224489795919,
height: 41.05395918367347,
},
media: {
image_url: "assets/play/hotZooCard/bg_70_40_10.png",
text: "eet",
type: "text",
audio_url: "",
},
scale: 0.7755102040816326,
},
],
bgItem: {
url: "assets/play/demo.png",
questions: [],
NO: "C",
mainText: "Listen, circle and write.",
mainTextAudio: "",
wordLeft_text: "ear",
wordLeft_audio_url: "",
wordRight_text: "pl",
wordRight_audio_url: "",
questions: [
{number: 2, combin: [0, -1]},
{number: 2, combin: [0, -1]}
],
rect: {
x: 43.691666666666606,
y: 0,
width: 1088.6166666666668,
height: 189.875,
},
},
bgImages: {
leftTop: "",
middleTop: "",
rightTop: "",
leftMiddle: "",
rightMiddle: "",
leftBottom: "",
middleBottom: "",
rightBottom: "",
},
}
\ 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