Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
JM04-3
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
template admin
JM04-3
Commits
63d7b54b
Commit
63d7b54b
authored
Jul 25, 2021
by
李维
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dev commit
parent
79434ec3
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
855 additions
and
539 deletions
+855
-539
form.component.html
src/app/form/form.component.html
+25
-0
play.component.ts
src/app/play/play.component.ts
+185
-24
resources.js
src/app/play/resources.js
+2
-1
DataKey_JM04_3.js
src/assets/default/formData/DataKey_JM04_3.js
+643
-514
btn_submit_shadow.png
src/assets/play/btn_submit_shadow.png
+0
-0
No files found.
src/app/form/form.component.html
View file @
63d7b54b
...
...
@@ -20,6 +20,15 @@
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control
[
nzSpan
]="
4
"
>
<div
class=
"text-label"
>
标题
</div>
</nz-form-control>
<nz-form-control
[
nzSpan
]="
20
"
>
<input
type=
"text"
nz-input
[(
ngModel
)]="
title
.
mainText
"
(
blur
)="
saveItem
()"
>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control
[
nzSpan
]="
4
"
>
<div
class=
"text-label"
>
题号选择
</div>
...
...
@@ -43,6 +52,22 @@
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control
[
nzSpan
]="
4
"
>
<div
class=
"text-label"
>
方向
</div>
</nz-form-control>
<nz-form-control
[
nzSpan
]="
20
"
>
<div
*
ngFor=
"let item of dataArray; let i = index"
>
<nz-radio-group
*
ngIf=
"i==currentSet"
[(
ngModel
)]="
item
.
direction
"
(
ngModelChange
)="
saveItem
()"
>
<label
nz-radio-button
nzValue=
"Across"
><span>
Across
</span></label>
<label
nz-radio-button
nzValue=
"Down"
><span>
Down
</span></label>
</nz-radio-group>
</div>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control
[
nzSpan
]="
4
"
>
<div
class=
"text-label"
>
填空设置
</div>
...
...
src/app/play/play.component.ts
View file @
63d7b54b
...
...
@@ -41,7 +41,7 @@ import { Subject } from "rxjs";
import
{
debounceTime
,
map
,
takeWhile
,
retry
}
from
"
rxjs/operators
"
;
import
*
as
_
from
"
lodash
"
;
import
TWEEN
from
"
@tweenjs/tween.js
"
;
import
{
demoData
as
defaultData
}
from
'
../../assets/default/formData/DataKey_JM04_3.js
'
import
{
demoData
}
from
'
../../assets/default/formData/DataKey_JM04_3.js
'
const
zIndexMap
=
{
mainBackground
:
0
,
...
...
@@ -141,6 +141,8 @@ export class PlayComponent implements OnInit, OnDestroy {
m_wordLetterInputCatch
=
[];
m_canInput
=
true
;
m_totalScrollHeight
=
0
;
m_questionIndexArray
=
[];
m_endGame
=
false
;
// ------------------------------------
...
...
@@ -215,7 +217,21 @@ export class PlayComponent implements OnInit, OnDestroy {
}
cleanGameVar
(){
this
.
m_openShift
=
false
;
this
.
m_blockGroup
=
null
;
this
.
m_wordAll
=
null
;
this
.
m_allBlocks
=
[];
this
.
m_currentInput
=
""
;
this
.
m_currentQuestionIndex
=
0
;
this
.
m_hasActiveBlock
=
false
;
this
.
m_hasErrorLetter
=
false
;
this
.
m_currentInputIndex
=
0
;
this
.
m_submitedTimes
=
0
;
this
.
m_wordLetterInputCatch
=
[];
this
.
m_canInput
=
true
;
this
.
m_totalScrollHeight
=
0
;
this
.
m_questionIndexArray
=
[];
this
.
m_endGame
=
false
;
}
startGame
(){
...
...
@@ -354,17 +370,36 @@ export class PlayComponent implements OnInit, OnDestroy {
}
this
.
subscribeMapDownEvent
(
btnNext
.
id
,
async
()
=>
{
if
(
this
.
m_endGame
||
(
this
.
m_currentQuestionIndex
>=
this
.
g_formData
.
dataArray
.
length
-
1
))
{
this
.
g_enableMapDown
=
true
;
return
;
}
this
.
switchQuestion
(
this
.
m_currentQuestionIndex
,
this
.
m_currentQuestionIndex
+
1
);
await
this
.
buttonPressAnimation
(
btnNext
.
id
,
btnNextShadow
.
id
)
this
.
g_enableMapDown
=
true
;
})
this
.
subscribeMapDownEvent
(
btnPre
.
id
,
async
()
=>
{
if
(
this
.
m_endGame
||
(
this
.
m_currentQuestionIndex
-
1
)
<
0
)
{
this
.
g_enableMapDown
=
true
;
return
;
}
this
.
switchQuestion
(
this
.
m_currentQuestionIndex
,
this
.
m_currentQuestionIndex
-
1
);
await
this
.
buttonPressAnimation
(
btnPre
.
id
,
btnPreShadow
.
id
)
this
.
g_enableMapDown
=
true
;
})
this
.
m_questionIndexArray
=
[]
let
acrossCount
=
0
;
let
downCount
=
0
;
this
.
g_formData
.
dataArray
.
forEach
(
item
=>
{
if
(
item
.
direction
==
"
Across
"
)
{
this
.
m_questionIndexArray
.
push
(
`Across
${
++
acrossCount
}
`
)
}
else
{
this
.
m_questionIndexArray
.
push
(
`Down
${
++
downCount
}
`
)
}
});
element
.
ref
.
addChild
(
labelIndex
.
ref
)
element
.
ref
.
addChild
(
questionText
.
ref
)
element
.
ref
.
addChild
(
btnNextShadow
.
ref
)
...
...
@@ -423,7 +458,7 @@ export class PlayComponent implements OnInit, OnDestroy {
for
(
let
i
=
1
;
i
<=
letttes
.
length
;
i
++
)
{
let
le
=
createWord
(
letttes
[
i
-
1
],
baseX
,
baseY
)
this
.
subscribeMapDownEvent
(
le
.
id
,
async
()
=>
{
if
(
!
this
.
m_canInput
)
{
if
(
this
.
m_endGame
||
!
this
.
m_canInput
)
{
this
.
g_enableMapDown
=
true
;
return
}
...
...
@@ -473,6 +508,10 @@ export class PlayComponent implements OnInit, OnDestroy {
element
.
ref
.
addChild
(
btnShiftShadow
.
ref
)
element
.
ref
.
addChild
(
btnShift
.
ref
)
this
.
subscribeMapDownEvent
(
btnShift
.
id
,
async
()
=>
{
if
(
this
.
m_endGame
)
{
this
.
g_enableMapDown
=
true
;
return
;
}
this
.
m_openShift
=
!
this
.
m_openShift
;
if
(
this
.
m_openShift
)
{
allLetterRefs
.
forEach
(
le
=>
{
...
...
@@ -665,6 +704,10 @@ export class PlayComponent implements OnInit, OnDestroy {
container
.
getContentText
=
()
=>
{
return
text
.
ref
.
text
?
text
.
ref
.
text
:
""
;
}
container
.
getRightLetter
=
()
=>
{
return
letter
?
letter
:
""
;
}
container
.
checkStatus
=
(
withRed
=
false
,
groupIndex
)
=>
{
// container.active(false);
...
...
@@ -684,7 +727,6 @@ export class PlayComponent implements OnInit, OnDestroy {
}
}
else
{
container
.
isCorrect
=
true
;
console
.
log
(
this
.
m_currentQuestionIndex
+
"
-
"
+
groupIndex
)
if
(
this
.
m_currentQuestionIndex
==
groupIndex
)
{
container
.
switchStatus
(
"
right
"
)
}
else
{
...
...
@@ -732,6 +774,10 @@ export class PlayComponent implements OnInit, OnDestroy {
}
this
.
subscribeMapDownEvent
(
container
.
id
,
()
=>
{
if
(
this
.
m_endGame
)
{
this
.
g_enableMapDown
=
true
;
return
}
if
(
this
.
m_currentQuestionIndex
!=
questionIndex
)
{
this
.
switchQuestion
(
this
.
m_currentQuestionIndex
,
questionIndex
)
}
...
...
@@ -896,6 +942,9 @@ export class PlayComponent implements OnInit, OnDestroy {
})
bgMiddleMask
.
ref
.
addChild
(
checkTop
.
ref
)
let
labelText
=
this
.
g_cartoon
.
createCartoonElementLabel
(
"
Chenck_label_title
"
,
"
Check
"
,
"
Aileron-Bold
"
,
"
#FFFFFF
"
,
52
)
checkTop
.
ref
.
addChild
(
labelText
.
ref
);
let
checkBottom
=
this
.
g_cartoon
.
createCartoonElementImageFunc
(
`checkpannel_checnk_bottom`
,
"
check_bottom
"
,
(
w
,
h
)
=>
{
return
{
sx
:
1
,
...
...
@@ -909,7 +958,45 @@ export class PlayComponent implements OnInit, OnDestroy {
})
bgMiddleMask
.
ref
.
addChild
(
checkBottom
.
ref
)
let
btnMore
=
this
.
g_cartoon
.
createCartoonElementImageFunc
(
`button_more_info`
,
"
btn_submit_outline
"
,
(
w
,
h
)
=>
{
return
{
sx
:
888
/
w
,
sy
:
160
/
h
,
}
},
(
w
,
h
)
=>
{
return
{
x
:
0
,
y
:
250
}
})
let
textSubmit
=
this
.
g_cartoon
.
createCartoonElementLabelFunc
(
"
button_submit_text
"
,
"
更多练习
"
,
"
Aileron-Black
"
,
"
#FFFFFF
"
,
64
,
(
w
,
h
)
=>
{
return
{
x
:
0
,
y
:
0
,
}
})
btnMore
.
ref
.
addChild
(
textSubmit
.
ref
)
let
btnMoreShadow
=
this
.
g_cartoon
.
createCartoonElementImageFunc
(
"
btn_submit_shadow
"
,
"
btn_submit_shadow
"
,
(
w
,
h
)
=>
{
return
{
sx
:
941
/
w
,
sy
:
216
/
h
,
}
},
(
w
,
h
)
=>
{
return
{
x
:
0
,
y
:
250
+
80
}
})
checkBottom
.
ref
.
addChild
(
btnMoreShadow
.
ref
)
checkBottom
.
ref
.
addChild
(
btnMore
.
ref
)
this
.
subscribeMapDownEvent
(
btnMore
.
id
,
async
()
=>
{
await
this
.
buttonPressAnimation
(
btnMore
.
id
,
btnMoreShadow
.
id
)
this
.
g_enableMapDown
=
true
;
})
// 滚动面板
let
scrollContent
=
this
.
g_cartoon
.
createCartoonElementShapeRect
(
"
check_scroll_pannel
"
,
880
,
985
*
5
,
"
#FFFFFF
"
);
scrollContent
.
ref
.
y
=
-
985
/
2
...
...
@@ -1176,9 +1263,17 @@ export class PlayComponent implements OnInit, OnDestroy {
text
.
ref
.
maxSingalLineWidth
=
800
;
text
.
ref
.
refreshSize
();
text
.
ref
.
x
=
0
text
.
ref
.
baseY
=
totalHeight
console
.
log
(
"
=====================
"
)
console
.
log
(
"
文字高度
"
,
(
text
.
ref
.
lineNum
+
1
)
*
64
)
if
(
text
.
ref
.
lineNum
==
0
)
{
text
.
ref
.
warpLineHeight
=
0
;
text
.
ref
.
maxSingalLineWidth
=
0
;
text
.
ref
.
refreshSize
();
text
.
ref
.
y
=
totalHeight
text
.
ref
.
y
+=
62
}
else
{
text
.
ref
.
baseY
=
totalHeight
}
totalHeight
+=
(
text
.
ref
.
lineNum
+
1
)
*
64
;
scrollContent
.
ref
.
addChild
(
text
.
ref
)
...
...
@@ -1186,7 +1281,6 @@ export class PlayComponent implements OnInit, OnDestroy {
wordColorBG
.
ref
.
radius
=
10
wordColorBG
.
ref
.
y
=
totalHeight
+
padding
+
64
/
2
totalHeight
+=
padding
+
64
;
console
.
log
(
"
单词高度
"
,
64
)
let
word
=
this
.
g_cartoon
.
createCartoonElementLabel
(
"
text-label
"
,
data
.
word
,
"
DroidSansFallback
"
,
"
#FFFFFF
"
,
44
)
word
.
ref
.
x
=
360
/
2
...
...
@@ -1206,7 +1300,6 @@ export class PlayComponent implements OnInit, OnDestroy {
y
:
totalHeight
+
50
+
60
}
})
console
.
log
(
"
正确提示
"
,
120
)
totalHeight
+=
120
+
padding
;
let
word
=
this
.
g_cartoon
.
createCartoonElementLabel
(
"
text-label
"
,
data
.
rightWord
,
"
DroidSansFallback
"
,
"
#ffe9b1
"
,
44
)
...
...
@@ -1265,17 +1358,58 @@ export class PlayComponent implements OnInit, OnDestroy {
y
:
this
.
g_canvasHeight
/
2
+
700
*
this
.
g_mapScale
}
})
submit
.
ref
.
alpha
=
0
;
let
submitActive
=
this
.
g_cartoon
.
createCartoonElementImageFunc
(
`button_submit_active`
,
"
btn_submit_outline
"
,
(
w
,
h
)
=>
{
return
{
sx
:
888
/
w
,
sy
:
160
/
h
,
}
},
(
w
,
h
)
=>
{
return
{
x
:
0
,
y
:
0
}
})
submitActive
.
ref
.
alpha
=
0
;
submit
.
ref
.
addChild
(
submitActive
.
ref
)
let
textSubmit
=
this
.
g_cartoon
.
createCartoonElementLabelFunc
(
"
button_submit_text
"
,
"
Submit
"
,
"
Aileron-Black
"
,
"
#FFFFFF
"
,
64
,
(
w
,
h
)
=>
{
return
{
x
:
0
,
y
:
0
,
}
})
submit
.
ref
.
addChild
(
textSubmit
.
ref
)
submit
.
switchActive
=
(
status
)
=>
{
if
(
status
)
{
submit
.
ref
.
alpha
=
1
;
submit
Active
.
ref
.
alpha
=
1
;
// this.m_canInput = false;
}
else
{
submit
.
ref
.
alpha
=
0
;
submit
Active
.
ref
.
alpha
=
0
;
// this.m_canInput = true;
}
}
let
btnSubmitShadow
=
this
.
g_cartoon
.
createCartoonElementImageFunc
(
"
btn_submit_shadow
"
,
"
btn_submit_shadow
"
,
(
w
,
h
)
=>
{
return
{
sx
:
941
*
this
.
g_mapScale
/
w
,
sy
:
216
*
this
.
g_mapScale
/
h
,
}
},
(
w
,
h
)
=>
{
return
{
x
:
this
.
g_canvasWidth
/
2
+
855
*
this
.
g_mapScale
/
2
+
118
*
this
.
g_mapScale
,
y
:
this
.
g_canvasHeight
/
2
+
740
*
this
.
g_mapScale
}
})
submit
.
out
=
(
callback
)
=>
{
btnSubmitShadow
.
ref
.
visible
=
false
;
return
tweenChange
(
submit
.
ref
,
{
y
:
this
.
g_canvasHeight
+
200
},
0.3
,
()
=>
{
callback
&&
callback
()
})
}
const
handleSubmit
=
async
()
=>
{
this
.
m_submitedTimes
++
;
...
...
@@ -1286,10 +1420,17 @@ export class PlayComponent implements OnInit, OnDestroy {
this
.
m_hasActiveBlock
=
false
;
this
.
m_blockGroup
.
forEach
((
group
,
index
)
=>
{
status
=
this
.
updateStatusByGroupIndex
(
index
)
let
word
=
""
let
rightWord
=
""
group
.
forEach
(
block
=>
{
word
+=
block
.
getContentText
()
rightWord
+=
block
.
getRightLetter
()
});
if
(
status
)
{
result
.
push
({
text
:
"
Across 1. running water flowing on the Earth
"
,
word
:
"
storfish
"
,
right
:
true
,
rightWord
:
""
})
result
.
push
({
text
:
`
${
this
.
m_questionIndexArray
[
index
]}
.
${
this
.
g_formData
.
dataArray
[
index
].
text
}
`
,
word
:
word
,
right
:
true
,
rightWord
:
rightWord
})
}
else
{
result
.
push
({
text
:
"
Across 1. running water flowing on the Earth
"
,
word
:
"
storfish
"
,
right
:
false
,
rightWord
:
"
Sea house
"
})
result
.
push
({
text
:
`
${
this
.
m_questionIndexArray
[
index
]}
.
${
this
.
g_formData
.
dataArray
[
index
].
text
}
`
,
word
:
word
,
right
:
false
,
rightWord
:
rightWord
})
}
if
(
!
hasIncorrect
&&
!
status
)
{
hasIncorrect
=
true
;
...
...
@@ -1304,14 +1445,16 @@ export class PlayComponent implements OnInit, OnDestroy {
if
(
this
.
m_submitedTimes
>=
2
||
(
this
.
m_submitedTimes
<
2
&&
!
hasIncorrect
))
{
let
qp
=
this
.
g_cartoon
.
getCartoonElement
(
"
question_container
"
)
let
keyboard
=
this
.
g_cartoon
.
getCartoonElement
(
"
keyboard_container
"
)
let
submitButton
=
this
.
g_cartoon
.
getCartoonElement
(
"
button_submit
"
)
await
qp
.
out
()
await
keyboard
.
out
()
await
submitButton
.
out
()
await
this
.
showCheckPannel
(
result
)
this
.
g_cartoon
.
getCartoonElement
(
"
background_mask
"
).
ref
.
alpha
=
0
this
.
g_enableMapDown
=
true
;
this
.
endGame
();
}
// console.log(status)
// this.switchQuestion(this.m_currentQuestionIndex, this.m_currentQuestionIndex+1)
submit
.
switchActive
(
false
)
// if(this.m_currentQuestionIndex == this.g_formData.dataArray.length-1) {
...
...
@@ -1329,12 +1472,18 @@ export class PlayComponent implements OnInit, OnDestroy {
}
this
.
subscribeMapDownEvent
(
submit
.
id
,
()
=>
{
if
(
submit
.
ref
.
alpha
==
1
)
{
if
(
this
.
m_endGame
)
{
this
.
g_enableMapDown
=
true
;
return
}
if
(
submitActive
.
ref
.
alpha
==
1
)
{
handleSubmit
()
this
.
buttonPressAnimation
(
submit
.
id
,
btnSubmitShadow
.
id
)
}
this
.
g_enableMapDown
=
true
;
})
this
.
render
(
btnSubmitShadow
.
ref
)
this
.
render
(
submit
.
ref
)
}
...
...
@@ -1350,12 +1499,11 @@ export class PlayComponent implements OnInit, OnDestroy {
});
});
/*
let indexText = this.g_cartoon.getCartoonElement("IndexText")
indexText.setIndex(toIndex);
let questionText = this.g_cartoon.getCartoonElement("QuestionText");
questionText.setContent(this.g_formData.dataArray[toIndex].text)
*/
let
indexText
=
this
.
g_cartoon
.
getCartoonElement
(
"
question_index
"
)
indexText
.
ref
.
text
=
this
.
m_questionIndexArray
[
toIndex
];
let
questionText
=
this
.
g_cartoon
.
getCartoonElement
(
"
question_text
"
);
questionText
.
ref
.
text
=
this
.
g_formData
.
dataArray
[
toIndex
].
text
let
nextButton
=
this
.
g_cartoon
.
getCartoonElement
(
"
question_next
"
)
if
(
this
.
g_formData
.
dataArray
.
length
>
toIndex
+
1
)
{
nextButton
.
active
(
true
)
...
...
@@ -1443,6 +1591,19 @@ export class PlayComponent implements OnInit, OnDestroy {
return
empty
;
}
endGame
()
{
console
.
log
(
"
游戏结束
"
)
this
.
m_endGame
=
true
;
this
.
m_blockGroup
.
forEach
(
group
=>
{
group
.
forEach
(
block
=>
{
if
(
block
.
getContentText
()
==
block
.
getRightLetter
())
{
block
.
switchStatus
(
"
disable
"
)
}
else
{
block
.
switchStatus
(
"
wrong
"
)
}
});
});
}
...
...
@@ -1558,8 +1719,8 @@ export class PlayComponent implements OnInit, OnDestroy {
// 初始化默认数据
// ----------------------------------
initDefaultData
()
{
if
(
Object
.
keys
(
this
.
g_formData
).
length
===
0
||
this
.
g_formData
.
version
!=
de
fault
Data
.
version
)
{
this
.
g_formData
=
de
fault
Data
;
if
(
Object
.
keys
(
this
.
g_formData
).
length
===
0
||
this
.
g_formData
.
version
!=
de
mo
Data
.
version
)
{
this
.
g_formData
=
de
mo
Data
;
console
.
log
(
"
Use default data.
"
,
this
.
g_formData
)
}
}
...
...
src/app/play/resources.js
View file @
63d7b54b
...
...
@@ -53,7 +53,8 @@ const localImages = {
'
bg_checkboard
'
:
'
assets/play/bg_checkboard.png
'
,
'
btn_submit
'
:
'
assets/play/btn_submit.png
'
,
'
btn_submit_outline
'
:
'
assets/play/btn_submit_outline.png
'
,
'
btn_submit_shadow
'
:
'
assets/play/btn_submit_shadow.png
'
,
'
bg_check_bottom
'
:
'
assets/play/bg_check_bottom.png
'
,
'
bg_check_middle
'
:
'
assets/play/bg_check_middle.png
'
,
'
bg_check_middle_mask
'
:
'
assets/play/bg_check_middle_mask.png
'
,
...
...
src/assets/default/formData/DataKey_JM04_3.js
View file @
63d7b54b
...
...
@@ -9,7 +9,7 @@ export const defaultData = {
size
:
{
wh
:
"
12*12
"
},
dataArray
:
[{
image_url
:
""
,
audio_url
:
""
,
text
:
""
,
uuid
:
"
9803c50c-3638-4a6a-a4f8-719bdeaacede
"
,
direction
:
"
left
"
}],
dataArray
:
[{
image_url
:
""
,
audio_url
:
""
,
text
:
""
,
uuid
:
"
9803c50c-3638-4a6a-a4f8-719bdeaacede
"
,
direction
:
"
Across
"
}],
grid
:
[
[{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
}],
[{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
},
{
index
:
-
1
,
text
:
""
}],
...
...
@@ -27,517 +27,646 @@ export const defaultData = {
}
export
const
demoData
=
{
"
version
"
:
"
1.0
"
,
"
dataKey
"
:
"
DataKey_JM04_3
"
,
"
title
"
:
{
"
NO
"
:
"
C
"
,
"
mainText
"
:
"
Listen, circle and write.
"
,
"
mainTextAudio_url
"
:
""
},
"
dataArray
"
:
[{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-1
"
,
"
uuid
"
:
"
9803c50c-3638-4a6a-a4f8-719bdeaacede
"
,
"
direction
"
:
"
right
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-2
"
,
"
uuid
"
:
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
,
"
direction
"
:
"
right
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-3
"
,
"
uuid
"
:
"
c038eee3-0a93-42b8-8099-e55ef6d41430
"
,
"
direction
"
:
"
right
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-4
"
,
"
uuid
"
:
"
041408b2-b1b7-43d4-b6b1-a6e3d9151c08
"
,
"
direction
"
:
"
down
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-5
"
,
"
uuid
"
:
"
d07794d6-afec-46e9-8458-4705905d5529
"
,
"
direction
"
:
"
down
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-6
"
,
"
uuid
"
:
"
748c35b2-ffcf-4811-ae3e-987c44051113
"
,
"
direction
"
:
"
down
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-7
"
,
"
uuid
"
:
"
c4160e6b-0090-47f0-946e-a0e17c00be8a
"
,
"
direction
"
:
"
down
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-8
"
,
"
uuid
"
:
"
20ba251c-e1c5-40e5-9892-0edd1de30637
"
,
"
direction
"
:
"
right
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-9
"
,
"
uuid
"
:
"
8cb1193c-764e-422a-b202-9d5a9488f967
"
,
"
direction
"
:
"
down
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-10
"
,
"
uuid
"
:
"
62e230f5-ae27-41ba-af5d-76f47dc12604
"
,
"
direction
"
:
"
right
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-11
"
,
"
uuid
"
:
"
ff03aec8-9934-412f-a026-96abd81c83f1
"
,
"
direction
"
:
"
down
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-12
"
,
"
uuid
"
:
"
de7461bb-5188-4210-afac-0703a633e9c1
"
,
"
direction
"
:
"
right
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-13
"
,
"
uuid
"
:
"
1d2d18b9-9b82-490d-bc82-a93925389aa6
"
,
"
direction
"
:
"
right
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-14
"
,
"
uuid
"
:
"
8d26cc84-fca9-40e1-af76-400f76604d5a
"
,
"
direction
"
:
"
right
"
},
{
"
image_url
"
:
"
demo_1
"
,
"
audio_url
"
:
""
,
"
text
"
:
"
SP-15
"
,
"
uuid
"
:
"
cfcd7693-1d40-447e-9541-977f867476ae
"
,
"
direction
"
:
"
right
"
}],
"
grid
"
:
[
[{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
8cb1193c-764e-422a-b202-9d5a9488f967
"
],
"
text
"
:
"
9
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
041408b2-b1b7-43d4-b6b1-a6e3d9151c08
"
],
"
text
"
:
"
4
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
d07794d6-afec-46e9-8458-4705905d5529
"
],
"
text
"
:
"
5
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
748c35b2-ffcf-4811-ae3e-987c44051113
"
],
"
text
"
:
"
6
"
}],
[{
"
index
"
:
[
"
9803c50c-3638-4a6a-a4f8-719bdeaacede
"
],
"
text
"
:
"
1
"
},
{
"
index
"
:
[
"
9803c50c-3638-4a6a-a4f8-719bdeaacede
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
9803c50c-3638-4a6a-a4f8-719bdeaacede
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[
"
8cb1193c-764e-422a-b202-9d5a9488f967
"
,
"
9803c50c-3638-4a6a-a4f8-719bdeaacede
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
cfcd7693-1d40-447e-9541-977f867476ae
"
],
"
text
"
:
"
5
"
},
{
"
index
"
:
[
"
041408b2-b1b7-43d4-b6b1-a6e3d9151c08
"
,
"
cfcd7693-1d40-447e-9541-977f867476ae
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
cfcd7693-1d40-447e-9541-977f867476ae
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[
"
cfcd7693-1d40-447e-9541-977f867476ae
"
],
"
text
"
:
"
C
"
},
{
"
index
"
:
[
"
cfcd7693-1d40-447e-9541-977f867476ae
"
],
"
text
"
:
"
D
"
},
{
"
index
"
:
[
"
d07794d6-afec-46e9-8458-4705905d5529
"
,
"
cfcd7693-1d40-447e-9541-977f867476ae
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
748c35b2-ffcf-4811-ae3e-987c44051113
"
],
"
text
"
:
"
A
"
}],
[{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
20ba251c-e1c5-40e5-9892-0edd1de30637
"
],
"
text
"
:
"
8
"
},
{
"
index
"
:
[
"
20ba251c-e1c5-40e5-9892-0edd1de30637
"
,
"
8cb1193c-764e-422a-b202-9d5a9488f967
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
20ba251c-e1c5-40e5-9892-0edd1de30637
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[
"
20ba251c-e1c5-40e5-9892-0edd1de30637
"
],
"
text
"
:
"
C
"
},
{
"
index
"
:
[
"
20ba251c-e1c5-40e5-9892-0edd1de30637
"
],
"
text
"
:
"
D
"
},
{
"
index
"
:
[
"
041408b2-b1b7-43d4-b6b1-a6e3d9151c08
"
,
"
20ba251c-e1c5-40e5-9892-0edd1de30637
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
ff03aec8-9934-412f-a026-96abd81c83f1
"
],
"
text
"
:
"
1
"
},
{
"
index
"
:
[
"
1d2d18b9-9b82-490d-bc82-a93925389aa6
"
],
"
text
"
:
"
3
"
},
{
"
index
"
:
[
"
d07794d6-afec-46e9-8458-4705905d5529
"
,
"
1d2d18b9-9b82-490d-bc82-a93925389aa6
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[
"
1d2d18b9-9b82-490d-bc82-a93925389aa6
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
1d2d18b9-9b82-490d-bc82-a93925389aa6
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
748c35b2-ffcf-4811-ae3e-987c44051113
"
,
"
1d2d18b9-9b82-490d-bc82-a93925389aa6
"
],
"
text
"
:
"
B
"
}],
[{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
8cb1193c-764e-422a-b202-9d5a9488f967
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
041408b2-b1b7-43d4-b6b1-a6e3d9151c08
"
],
"
text
"
:
"
C
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
ff03aec8-9934-412f-a026-96abd81c83f1
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
d07794d6-afec-46e9-8458-4705905d5529
"
],
"
text
"
:
"
C
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
748c35b2-ffcf-4811-ae3e-987c44051113
"
],
"
text
"
:
"
C
"
}],
[{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
8cb1193c-764e-422a-b202-9d5a9488f967
"
],
"
text
"
:
"
C
"
},
{
"
index
"
:
[
"
c4160e6b-0090-47f0-946e-a0e17c00be8a
"
],
"
text
"
:
"
7
"
},
{
"
index
"
:
[
"
62e230f5-ae27-41ba-af5d-76f47dc12604
"
],
"
text
"
:
"
0
"
},
{
"
index
"
:
[
"
62e230f5-ae27-41ba-af5d-76f47dc12604
"
],
"
text
"
:
"
Z
"
},
{
"
index
"
:
[
"
041408b2-b1b7-43d4-b6b1-a6e3d9151c08
"
,
"
62e230f5-ae27-41ba-af5d-76f47dc12604
"
],
"
text
"
:
"
D
"
},
{
"
index
"
:
[
"
62e230f5-ae27-41ba-af5d-76f47dc12604
"
],
"
text
"
:
"
Z
"
},
{
"
index
"
:
[
"
62e230f5-ae27-41ba-af5d-76f47dc12604
"
,
"
ff03aec8-9934-412f-a026-96abd81c83f1
"
],
"
text
"
:
"
Z
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
d07794d6-afec-46e9-8458-4705905d5529
"
],
"
text
"
:
"
D
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
748c35b2-ffcf-4811-ae3e-987c44051113
"
],
"
text
"
:
"
D
"
}],
[{
"
index
"
:
[
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
2
"
},
{
"
index
"
:
[
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[
"
8cb1193c-764e-422a-b202-9d5a9488f967
"
,
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
C
"
},
{
"
index
"
:
[
"
c4160e6b-0090-47f0-946e-a0e17c00be8a
"
,
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
D
"
},
{
"
index
"
:
[
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
E
"
},
{
"
index
"
:
[
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
F
"
},
{
"
index
"
:
[
"
041408b2-b1b7-43d4-b6b1-a6e3d9151c08
"
,
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
G
"
},
{
"
index
"
:
[
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
H
"
},
{
"
index
"
:
[
"
ff03aec8-9934-412f-a026-96abd81c83f1
"
,
"
2e780bc2-9f79-42f5-9358-6a8da7a9e20c
"
],
"
text
"
:
"
I
"
},
{
"
index
"
:
[
"
de7461bb-5188-4210-afac-0703a633e9c1
"
],
"
text
"
:
"
2
"
},
{
"
index
"
:
[
"
d07794d6-afec-46e9-8458-4705905d5529
"
,
"
de7461bb-5188-4210-afac-0703a633e9c1
"
],
"
text
"
:
"
E
"
},
{
"
index
"
:
[
"
de7461bb-5188-4210-afac-0703a633e9c1
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
de7461bb-5188-4210-afac-0703a633e9c1
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
748c35b2-ffcf-4811-ae3e-987c44051113
"
,
"
de7461bb-5188-4210-afac-0703a633e9c1
"
],
"
text
"
:
"
E
"
}],
[{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
c4160e6b-0090-47f0-946e-a0e17c00be8a
"
],
"
text
"
:
"
E
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
ff03aec8-9934-412f-a026-96abd81c83f1
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
d07794d6-afec-46e9-8458-4705905d5529
"
],
"
text
"
:
"
F
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
}],
[{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
c4160e6b-0090-47f0-946e-a0e17c00be8a
"
],
"
text
"
:
"
D
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
ff03aec8-9934-412f-a026-96abd81c83f1
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
d07794d6-afec-46e9-8458-4705905d5529
"
],
"
text
"
:
"
G
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
}],
[{
"
index
"
:
[
"
c038eee3-0a93-42b8-8099-e55ef6d41430
"
],
"
text
"
:
"
3
"
},
{
"
index
"
:
[
"
c038eee3-0a93-42b8-8099-e55ef6d41430
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
c038eee3-0a93-42b8-8099-e55ef6d41430
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[
"
c038eee3-0a93-42b8-8099-e55ef6d41430
"
],
"
text
"
:
"
C
"
},
{
"
index
"
:
[
"
c038eee3-0a93-42b8-8099-e55ef6d41430
"
,
"
c4160e6b-0090-47f0-946e-a0e17c00be8a
"
],
"
text
"
:
"
D
"
},
{
"
index
"
:
[
"
c038eee3-0a93-42b8-8099-e55ef6d41430
"
],
"
text
"
:
"
E
"
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[],
"
text
"
:
""
},
{
"
index
"
:
[
"
ff03aec8-9934-412f-a026-96abd81c83f1
"
],
"
text
"
:
"
C
"
},
{
"
index
"
:
[
"
8d26cc84-fca9-40e1-af76-400f76604d5a
"
],
"
text
"
:
"
4
"
},
{
"
index
"
:
[
"
d07794d6-afec-46e9-8458-4705905d5529
"
,
"
8d26cc84-fca9-40e1-af76-400f76604d5a
"
],
"
text
"
:
"
I
"
},
{
"
index
"
:
[
"
8d26cc84-fca9-40e1-af76-400f76604d5a
"
],
"
text
"
:
"
A
"
},
{
"
index
"
:
[
"
8d26cc84-fca9-40e1-af76-400f76604d5a
"
],
"
text
"
:
"
B
"
},
{
"
index
"
:
[
"
8d26cc84-fca9-40e1-af76-400f76604d5a
"
],
"
text
"
:
"
C
"
}]
]
"
dataKey
"
:
"
DataKey_JM04_3
"
,
"
title
"
:
{
"
NO
"
:
"
C
"
,
"
mainText
"
:
"
Word cross
"
,
"
mainTextAudio_url
"
:
""
,
"
text
"
:
"
eeeeeeeeee
"
},
"
size
"
:
{
"
wh
"
:
"
12*12
"
},
"
dataArray
"
:
[
{
"
image_url
"
:
""
,
"
audio_url
"
:
""
,
"
text
"
:
"
running water flowing on the Earth
"
,
"
uuid
"
:
"
17960004-90fd-40bb-aae3-38f390a3928c
"
,
"
direction
"
:
"
Across
"
},
{
"
image_url
"
:
""
,
"
audio_url
"
:
""
,
"
text
"
:
"
a fish whose head look like those of a horse
"
,
"
uuid
"
:
"
5ed5f385-02a5-4e78-980a-5abc95b88a6d
"
,
"
direction
"
:
"
Across
"
},
{
"
image_url
"
:
""
,
"
audio_url
"
:
""
,
"
text
"
:
"
smart and possessing sound knowledge
"
,
"
uuid
"
:
"
e139ea06-a99d-4330-8558-42810d9c78a5
"
,
"
direction
"
:
"
Across
"
},
{
"
image_url
"
:
""
,
"
audio_url
"
:
""
,
"
text
"
:
"
a star-shaped sea animal
"
,
"
uuid
"
:
"
7409afc7-c811-4182-9ec5-694d05020a40
"
,
"
direction
"
:
"
Down
"
}
],
"
grid
"
:
[
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
0
,
"
text
"
:
"
s
"
},
{
"
index
"
:
0
,
"
text
"
:
"
t
"
},
{
"
index
"
:
0
,
"
text
"
:
"
r
"
},
{
"
index
"
:
0
,
"
text
"
:
"
e
"
},
{
"
index
"
:
0
,
"
text
"
:
"
a
"
},
{
"
index
"
:
0
,
"
text
"
:
"
m
"
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
3
,
"
text
"
:
"
t
"
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
3
,
"
text
"
:
"
o
"
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
3
,
"
text
"
:
"
r
"
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
3
,
"
text
"
:
"
f
"
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
2
,
"
text
"
:
"
i
"
},
{
"
index
"
:
2
,
"
text
"
:
"
n
"
},
{
"
index
"
:
2
,
"
text
"
:
"
t
"
},
{
"
index
"
:
2
,
"
text
"
:
"
e
"
},
{
"
index
"
:
2
,
"
text
"
:
"
l
"
},
{
"
index
"
:
2
,
"
text
"
:
"
l
"
},
{
"
index
"
:
2
,
"
text
"
:
"
i
"
},
{
"
index
"
:
2
,
"
text
"
:
"
g
"
},
{
"
index
"
:
2
,
"
text
"
:
"
e
"
},
{
"
index
"
:
2
,
"
text
"
:
"
n
"
},
{
"
index
"
:
2
,
"
text
"
:
"
t
"
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
3
,
"
text
"
:
"
s
"
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
1
,
"
text
"
:
"
s
"
},
{
"
index
"
:
1
,
"
text
"
:
"
e
"
},
{
"
index
"
:
1
,
"
text
"
:
"
a
"
},
{
"
index
"
:
1
,
"
text
"
:
"
h
"
},
{
"
index
"
:
1
,
"
text
"
:
"
o
"
},
{
"
index
"
:
1
,
"
text
"
:
"
u
"
},
{
"
index
"
:
1
,
"
text
"
:
"
r
"
},
{
"
index
"
:
1
,
"
text
"
:
"
s
"
},
{
"
index
"
:
1
,
"
text
"
:
"
e
"
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
],
[
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
},
{
"
index
"
:
-
1
,
"
text
"
:
""
}
]
]
};
src/assets/play/btn_submit_shadow.png
0 → 100644
View file @
63d7b54b
10.4 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment