Commit d3c8a034 authored by Tt's avatar Tt

dg16嵌入 重置视频播放部分测试

parent bb5c7c3e
{
"ver": "1.1.2",
"uuid": "d2c00954-06de-4c50-ba53-cd2e7ec614fc",
"isBundle": true,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {
"ios": true,
"android": true
},
"subMetas": {}
}
\ No newline at end of file
{"ver":"1.1.2","uuid":"72af34c5-40db-48d6-8519-86daeefb658b","isBundle":false,"bundleName":"","priority":1,"compressionType":{},"optimizeHotUpdate":{},"inlineSpriteFrames":{},"isRemoteBundle":{"ios":false,"android":false},"subMetas":{}}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "252022d0-36e6-449b-ae4e-8855bec6642c",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {
"ios": false,
"android": false
},
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "32d1b252-4736-4fab-b61c-929851e70454",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "ce5d2cd2-ce6a-4a20-99dc-dd6fea5bb87f",
"downloadMode": 0,
"duration": 0.130612,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "05f6487f-ddda-4ae4-ab56-a703bc1aa10b",
"downloadMode": 0,
"duration": 0.372875,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "0412d367-5352-48ac-a0e8-0c69a6361db3",
"downloadMode": 0,
"duration": 3.761633,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "483ca7cc-a955-4a4c-ae88-257b695d8ccc",
"downloadMode": 0,
"duration": 0.219333,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "affcef7b-05ed-47fa-9d1f-49c892b0d025",
"downloadMode": 0,
"duration": 3.787755,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.0.1",
"uuid": "7d281036-98de-4b38-9c38-e30cb6f36cdd",
"downloadMode": 0,
"duration": 0.697429,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "23487466-2051-4a9a-b2dc-b9c68aa77354",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
This diff is collapsed.
{
"ver": "1.0.1",
"uuid": "677e9f58-cd36-4fd5-a285-668fb894defc",
"subMetas": {}
}
\ No newline at end of file
{"name":"boy","imagePath":"boy_tex.png","SubTexture":[{"name":"wave/图层_45","x":248,"height":174,"y":1105,"width":149},{"name":"cheer/图层42_2","x":390,"height":91,"y":1471,"width":87},{"name":"cheer/图层42","x":245,"height":84,"y":1607,"width":90},{"name":"good/图层40_0","x":834,"height":90,"y":1374,"width":71},{"name":"good/图层 36_0","x":518,"height":102,"y":1449,"width":79},{"name":"wave/图层_44","x":1,"height":84,"y":1619,"width":86},{"name":"run/图层_73","x":1394,"height":67,"y":210,"width":79},{"name":"run/图层 61_0","x":1349,"height":178,"y":810,"width":133},{"name":"run/图层_65","x":479,"height":71,"y":1452,"width":30},{"name":"run/图层44","x":1892,"height":99,"y":1049,"width":122},{"name":"run/图层_64","x":1148,"height":207,"y":1,"width":332},{"name":"run/图层38(2)","x":1952,"height":123,"y":670,"width":82},{"name":"run/图层_68","x":1148,"height":266,"y":210,"width":244},{"name":"run/身体","x":897,"height":285,"y":1,"width":249},{"name":"run/图层_66","x":156,"height":77,"y":1526,"width":71},{"name":"run/图层_72","x":156,"height":87,"y":1607,"width":87},{"name":"run/图层_61","x":1,"height":127,"y":1295,"width":241},{"name":"run/头","x":1,"height":413,"y":1,"width":454},{"name":"run/嘴巴","x":1785,"height":47,"y":612,"width":48},{"name":"run/闭眼","x":441,"height":199,"y":428,"width":243},{"name":"run/眼睛","x":1033,"height":76,"y":664,"width":64},{"name":"run/半睁","x":1713,"height":76,"y":748,"width":64},{"name":"run/图层_74","x":312,"height":15,"y":1547,"width":59},{"name":"run/眼镜","x":599,"height":130,"y":1001,"width":242},{"name":"run/耳套","x":1892,"height":119,"y":928,"width":118},{"name":"expect/左脚_0","x":608,"height":95,"y":1324,"width":126},{"name":"good/右脚","x":1420,"height":94,"y":1165,"width":126},{"name":"good/右腿","x":636,"height":265,"y":734,"width":137},{"name":"expect/图层 45_0","x":1394,"height":263,"y":280,"width":196},{"name":"expect/左脚","x":390,"height":95,"y":1355,"width":126},{"name":"good/左脚","x":1670,"height":94,"y":1086,"width":127},{"name":"good/左腿","x":255,"height":265,"y":838,"width":143},{"name":"expect/图层_45","x":1127,"height":263,"y":478,"width":196},{"name":"cheer/图层_37","x":1592,"height":153,"y":314,"width":237},{"name":"good/右手2_0","x":400,"height":163,"y":1033,"width":197},{"name":"talk/图层_47","x":1,"height":193,"y":1424,"width":153},{"name":"good/图层35_0","x":1909,"height":202,"y":1,"width":128},{"name":"expect/图层 37_2","x":1848,"height":176,"y":492,"width":167},{"name":"good/图层_46","x":1084,"height":142,"y":930,"width":133},{"name":"wave/图层43","x":838,"height":199,"y":798,"width":224},{"name":"cheer/图层 46_0","x":1564,"height":134,"y":612,"width":219},{"name":"invite/图层_30","x":1219,"height":121,"y":1014,"width":199},{"name":"good/图层 35_0","x":1785,"height":165,"y":670,"width":165},{"name":"good/图层34_0","x":1017,"height":104,"y":1218,"width":150},{"name":"talk/图层42","x":608,"height":92,"y":1421,"width":88},{"name":"cheer/图层42_0","x":1799,"height":87,"y":1086,"width":90},{"name":"wave/图层42","x":1548,"height":92,"y":1165,"width":100},{"name":"good/图层40","x":1062,"height":90,"y":1324,"width":71},{"name":"cheer/图层42_1","x":518,"height":92,"y":1355,"width":88},{"name":"good/图层_36","x":1033,"height":102,"y":560,"width":80},{"name":"expect/图层 37_1","x":1848,"height":176,"y":314,"width":167},{"name":"cheer/图层 37_0","x":1,"height":164,"y":1001,"width":231},{"name":"wave/图层43_0","x":1,"height":161,"y":838,"width":252},{"name":"good/图层 46_0","x":1084,"height":142,"y":1074,"width":132},{"name":"good/图层35","x":1219,"height":202,"y":810,"width":128},{"name":"invite/图层 30_0","x":1219,"height":121,"y":1137,"width":199},{"name":"good/图层_35","x":1546,"height":165,"y":748,"width":165},{"name":"cheer/图层_46","x":1325,"height":134,"y":674,"width":219},{"name":"talk/图层_46","x":400,"height":155,"y":1198,"width":206},{"name":"good/右手2","x":400,"height":164,"y":867,"width":197},{"name":"good/图层47_0","x":234,"height":100,"y":1505,"width":76},{"name":"good/身体","x":897,"height":270,"y":288,"width":228},{"name":"wave/图层_25","x":400,"height":20,"y":838,"width":29},{"name":"good/头","x":1,"height":420,"y":416,"width":438},{"name":"talk/眉毛","x":1415,"height":25,"y":1330,"width":220},{"name":"invite/眉毛","x":1357,"height":23,"y":1357,"width":220},{"name":"expect/眉毛","x":312,"height":32,"y":1564,"width":221},{"name":"good/眉毛","x":1135,"height":25,"y":1341,"width":220},{"name":"invite/张嘴","x":1169,"height":26,"y":1218,"width":44},{"name":"cheer/张嘴","x":312,"height":40,"y":1505,"width":70},{"name":"talk/闭嘴","x":390,"height":17,"y":1452,"width":44},{"name":"cheer/闭嘴","x":1954,"height":22,"y":902,"width":57},{"name":"talk/张嘴","x":1420,"height":26,"y":990,"width":44},{"name":"expect/张嘴","x":762,"height":40,"y":1133,"width":70},{"name":"good/张嘴","x":636,"height":26,"y":690,"width":44},{"name":"wave/闭嘴","x":1420,"height":26,"y":1046,"width":43},{"name":"expect/闭嘴","x":1592,"height":26,"y":280,"width":66},{"name":"good/张嘴_0","x":1420,"height":26,"y":1018,"width":44},{"name":"wave/张嘴","x":1660,"height":32,"y":280,"width":43},{"name":"invite/闭嘴","x":1891,"height":17,"y":1150,"width":44},{"name":"good/闭嘴","x":1349,"height":17,"y":990,"width":44},{"name":"good/睁眼","x":1420,"height":77,"y":1086,"width":248},{"name":"wave/睁眼_0","x":1,"height":126,"y":1167,"width":245},{"name":"good/闭眼","x":1799,"height":30,"y":1175,"width":247},{"name":"invite/闭眼","x":1169,"height":37,"y":1302,"width":244},{"name":"good/睁眼_0","x":1638,"height":77,"y":928,"width":252},{"name":"wave/睁眼","x":1325,"height":127,"y":545,"width":237},{"name":"cheer/闭眼","x":1403,"height":37,"y":1261,"width":244},{"name":"wave/闭眼","x":1713,"height":89,"y":837,"width":239},{"name":"good/半睁","x":1638,"height":77,"y":1007,"width":252},{"name":"expect/睁眼","x":762,"height":77,"y":1183,"width":253},{"name":"expect/图层 36_0","x":1325,"height":59,"y":478,"width":39},{"name":"expect/图层_36","x":636,"height":59,"y":629,"width":39},{"name":"point/左脚","x":762,"height":95,"y":1262,"width":126},{"name":"point/左腿","x":686,"height":304,"y":428,"width":150},{"name":"point/右脚","x":1909,"height":103,"y":205,"width":125},{"name":"point/右腿","x":1721,"height":311,"y":1,"width":186},{"name":"point/图层42","x":1954,"height":105,"y":795,"width":87},{"name":"point/已插入图像_1","x":1592,"height":141,"y":469,"width":254},{"name":"point/图层47","x":156,"height":100,"y":1424,"width":76},{"name":"point/身体","x":1482,"height":277,"y":1,"width":237},{"name":"point/图层34","x":1650,"height":92,"y":1268,"width":76},{"name":"point/头","x":457,"height":425,"y":1,"width":438},{"name":"point/闭眼","x":1169,"height":40,"y":1260,"width":232},{"name":"point/半睁","x":843,"height":90,"y":999,"width":239},{"name":"point/睁眼","x":843,"height":90,"y":1091,"width":239},{"name":"point/眉毛","x":1415,"height":28,"y":1300,"width":223},{"name":"point/已插入图像_0","x":988,"height":90,"y":1324,"width":72},{"name":"point/嘴巴2","x":1033,"height":41,"y":742,"width":24},{"name":"point/嘴巴1","x":1017,"height":30,"y":1183,"width":63},{"name":"point/已插入图像","x":244,"height":208,"y":1295,"width":144},{"name":"invite/图层_31","x":1484,"height":138,"y":915,"width":152},{"name":"invite/图层 31_0","x":608,"height":138,"y":1133,"width":152},{"name":"talk/图层40","x":1650,"height":84,"y":1182,"width":84},{"name":"talk/右手前","x":1064,"height":185,"y":743,"width":153},{"name":"good/图层_44","x":441,"height":236,"y":629,"width":193},{"name":"good/图层 44_0","x":838,"height":236,"y":560,"width":193},{"name":"expect/图层 39_2","x":890,"height":110,"y":1262,"width":96},{"name":"expect/图层 39_1","x":736,"height":110,"y":1359,"width":96}],"height":2048,"width":2048}
\ No newline at end of file
{
"ver": "1.0.1",
"uuid": "ef2c3639-6259-495b-9b46-6958888540bb",
"subMetas": {}
}
\ No newline at end of file
This diff is collapsed.
{
"ver": "2.3.5",
"uuid": "4acd399b-e85c-41f0-a47f-b0c2d19bc39d",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 2048,
"height": 2048,
"platformSettings": {},
"subMetas": {
"boy_tex": {
"ver": "1.0.4",
"uuid": "a4e52cd6-9b2d-4a02-8113-db7317649fce",
"rawTextureUuid": "4acd399b-e85c-41f0-a47f-b0c2d19bc39d",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -0.5,
"offsetY": 172,
"trimX": 1,
"trimY": 1,
"width": 2045,
"height": 1702,
"rawWidth": 2048,
"rawHeight": 2048,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "44b68acb-0351-4416-bc1d-1e151a1c6b1f",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.0",
"uuid": "4c568d60-208e-4b40-b827-c252a7d39e74",
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.0",
"uuid": "8c2e33a4-1499-41ce-88b4-4142668c1e92",
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "0881827e-af48-49d3-a09b-5e9bf300290b",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
[
{
"__type__": "cc.Prefab",
"_name": "",
"_objFlags": 0,
"_native": "",
"data": {
"__id__": 1
},
"optimizationPolicy": 0,
"asyncLoadAssets": false,
"readonly": false
},
{
"__type__": "cc.Node",
"_name": "boy",
"_objFlags": 0,
"_parent": null,
"_children": [
{
"__id__": 2
}
],
"_active": true,
"_components": [
{
"__id__": 5
},
{
"__id__": 6
}
],
"_prefab": {
"__id__": 7
},
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 715,
"height": 943
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
1500,
-440,
0,
0,
0,
0,
1,
0.65,
0.65,
0.5
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": ""
},
{
"__type__": "cc.Node",
"_name": "aniNode",
"_objFlags": 0,
"_parent": {
"__id__": 1
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 3
}
],
"_prefab": {
"__id__": 4
},
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 715,
"height": 943
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
503,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": ""
},
{
"__type__": "dragonBones.ArmatureDisplay",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 2
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_armatureName": "Armature",
"_animationName": "normal",
"_preCacheMode": 0,
"_cacheMode": 0,
"playTimes": -1,
"premultipliedAlpha": false,
"_armatureKey": "677e9f58-cd36-4fd5-a285-668fb894defc#ef2c3639-6259-495b-9b46-6958888540bb",
"_accTime": 0,
"_playCount": 0,
"_frameCache": null,
"_curFrame": null,
"_playing": false,
"_armatureCache": null,
"_N$dragonAsset": {
"__uuid__": "677e9f58-cd36-4fd5-a285-668fb894defc"
},
"_N$dragonAtlasAsset": {
"__uuid__": "ef2c3639-6259-495b-9b46-6958888540bb"
},
"_N$_defaultArmatureIndex": 0,
"_N$_animationIndex": 9,
"_N$_defaultCacheMode": 0,
"_N$timeScale": 1,
"_N$debugBones": false,
"_N$enableBatch": false,
"_id": ""
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__uuid__": "c99fe28f-4d25-49d7-843d-8e9255637f33"
},
"fileId": "27gh7VpBtEULSudnmmLQrx",
"sync": false
},
{
"__type__": "d8587k2pENJtrxeO0we1YaG",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 1
},
"_enabled": true,
"aniBody": {
"__id__": 2
},
"_id": ""
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 1
},
"_enabled": true,
"alignMode": 1,
"_target": null,
"_alignFlags": 4,
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 100,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_id": ""
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__uuid__": "c99fe28f-4d25-49d7-843d-8e9255637f33"
},
"fileId": "",
"sync": false
}
]
\ No newline at end of file
{
"ver": "1.2.9",
"uuid": "c99fe28f-4d25-49d7-843d-8e9255637f33",
"optimizationPolicy": "AUTO",
"asyncLoadAssets": false,
"readonly": false,
"subMetas": {}
}
\ No newline at end of file
This diff is collapsed.
{
"ver": "1.2.9",
"uuid": "de92a4e2-ef1f-4261-838b-f077424f6b50",
"optimizationPolicy": "AUTO",
"asyncLoadAssets": false,
"readonly": false,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "c93c6b76-6e86-43f8-aa1e-58c9b452922a",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
import { asyncDelay, onHomeworkFinish } from "../script/util_DG16";
import { MyCocosSceneComponent } from "../script/MyCocosSceneComponent_DG16";
import Boy from "../script/ui/boy_DG16";
import QuestionView from "../script/ui/question_DG16";
import videoCtrl from "../script/ui/videoCtrl_DG16";
const { ccclass, property } = cc._decorator;
@ccclass
export default class SceneComponent extends MyCocosSceneComponent {
@property(cc.Node)
qustionLayer: cc.Node = null;
@property(cc.Node)
boyNode: cc.Node = null;
@property(cc.Node)
btn_next: cc.Node = null;
@property(cc.Node)
qustionLayerRoot: cc.Node = null;
@property(cc.VideoPlayer)
vplayer: cc.VideoPlayer = null;
@property(cc.Node)
videoCtrl: cc.Node = null;
@property(cc.Node)
touchlayer: cc.Node = null;
qustionCom: QuestionView = null;
_totalIndex: any;
_roundIndex: number;
playGuide2: any;
firstRound: boolean;
doWrongTime: number;
WrongList: any[];
prepared: boolean;
addPreloadImage() {
// TODO 根据自己的配置预加载图片资源
this._imageResList.push({ url: this.data.pic_url });
this._imageResList.push({ url: this.data.pic_url_2 });
}
addPreloadAudio() {
// TODO 根据自己的配置预加载音频资源
this._audioResList.push({ url: this.data.audio_url_guide });
this._audioResList.push({ url: this.data.audio_url_guide_2 });
this._audioResList.push({ url: this.data.audio_url_right });
this._audioResList.push({ url: this.data.audio_url_wrong });
this._audioResList.push({ url: this.data.audio_url_end });
}
addPreloadAnima() {
}
async onLoadEnd() {
// TODO 加载完成后的逻辑写在这里, 下面的代码仅供参考
this.initData();
this.initView();
}
_cantouch = null;
initData() {
// 所有全局变量 默认都是null
this._cantouch = true;
this.touchlayer.on(cc.Node.EventType.TOUCH_START, this.tryPlayVideo, this)
this.touchlayer._touchListener.setSwallowTouches(false)
this.vplayer.node.active = true;
this.vplayer.remoteURL = this.data.video_url;
this.vplayer.resourceType = cc.VideoPlayer.ResourceType.REMOTE;
}
tryPlayVideo() {
cc.log("touch layer--")
if (this.prepared) {
this.prepared = false;
this.vplayer.volume = 0;
this.vplayer.play();
this.scheduleOnce(() => {
this.vplayer.volume = 1;
this.vplayer.pause();
}, 1)
}
}
initBg() {
const bgNode = cc.find('Canvas/bg');
bgNode.scale = this._mapScaleMax;
}
initView() {
this.initBg();
this.btn_next.on("click", () => {
this.playLocalAudio("btn")
if (!cc.find('middleLayer')) {
console.log("==点击了下一页按钮==")
return;
}
const middleLayer = cc.find('middleLayer').getComponent('middleLayer');
middleLayer.goNextPage(); // 跳转到下一页
}, this)
this.videoCtrl.active = false;
this.qustionCom = this.qustionLayer.getComponent(QuestionView);
this._totalIndex = this.data.contentObj.dataArray.length;
this._roundIndex = 0;
this.firstRound = true
this.doWrongTime = 0;
cc.log(JSON.stringify(this.data, null, 2))
this.WrongList = [];
this.qustionCom.hide();
this.boyNode.x = cc.winSize.width;
this.boyNode.getComponent(Boy).playRun(-1);
cc.tween(this.boyNode).to(3, { x: 0 }).call(() => {
this.boyNode.getComponent(Boy).playtalk(-1);
this.playAudioByUrl(this.data.audio_url_guide, () => {
this.boyNode.scaleX = -0.65;
this.log("playRun start")
this.boyNode.getComponent(Boy).playRun(-1);
cc.tween(this.boyNode).to(1, { x: 500 }).call(() => {
this.log("playRun end")
this.boyNode.scaleX = 0.65;
this.boyNode.getComponent(Boy).playNormal();
this.qustionCom.show();
this.doRound()
}).start();
})
}).start()
}
doRound() {
if (this._roundIndex < this._totalIndex) {
let data = this.data.contentObj.dataArray[this._roundIndex];
let index = data.option_1_isRight ? 0 : 1;
this.qustionCom.init(data, index, this._roundIndex + 1, this._totalIndex, async (isRight) => {
if (isRight) {
this.playLocalAudio("right");
this.boyNode.getComponent(Boy).playGood(1);
} else {
this.WrongList.push(data);
this.doWrongTime++;
this.playLocalAudio("wrong")
this.boyNode.getComponent(Boy).playInvite(1);
}
await asyncDelay(1.5)
this.doRound();
})
this._roundIndex++;
} else {
this.qustionCom.hide()
this.boyNode.getComponent(Boy).playRun(-1);
cc.tween(this.boyNode).to(1, { x: 0 }).call(() => {
this.boyNode.getComponent(Boy).playtalk(-1);
let audiourl = this.doWrongTime > 0 ? this.data.audio_url_wrong : this.data.audio_url_right;
this.playAudioByUrl(audiourl, () => {
this.boyNode.scaleX = -0.65;
this.boyNode.getComponent(Boy).playRun(-1);
cc.tween(this.boyNode).to(1, { x: 500 }).call(async () => {
this.boyNode.scaleX = 0.65;
this.boyNode.getComponent(Boy).playNormal();
this.videoCtrl.active = true;
this.node.getChildByName("bg").active = false;
this.videoCtrl.getComponent(videoCtrl).setVideCom(this.vplayer);
this.vplayer.volume = 1;
this.vplayer.node.scale = 1;
this.vplayer.currentTime = 0;
this.vplayer.play();
await asyncDelay(0.1);
this.boyNode.active = false;
}).start();
})
}).start()
}
}
initWorongLogic() {
this._totalIndex = this.WrongList.length;
this._roundIndex = 0;
this.qustionCom.show();
this.doWrongRound();
}
doWrongRound() {
if (this._roundIndex < this._totalIndex) {
let data = this.WrongList[this._roundIndex];
let index = data.option_1_isRight ? 0 : 1;
this.qustionCom.init(data, index, this._roundIndex + 1, this._totalIndex, async (isRight) => {
if (isRight) {
this.playLocalAudio("right");
this.boyNode.getComponent(Boy).playGood(1);
} else {
this.playLocalAudio("wrong")
this.boyNode.getComponent(Boy).playInvite(1);
}
await asyncDelay(1.5)
this.doWrongRound();
})
this._roundIndex++;
} else {
this.qustionCom.hide();
this.boyNode.getComponent(Boy).playRun(-1);
cc.tween(this.boyNode).to(1, { x: 0 }).call(() => {
this.boyNode.getComponent(Boy).playtalk(-1);
this.playAudioByUrl(this.data.audio_url_end, () => {
this.boyNode.scaleX = -0.65;
this.boyNode.getComponent(Boy).playRun(-1);
cc.tween(this.boyNode).to(1, { x: 500 }).call(() => {
this.boyNode.scaleX = 0.65;
this.boyNode.getComponent(Boy).playWave(-1);
this.btn_next.active = true;
}).start();
})
}).start()
}
}
playLocalAudio(audioName) {
const audio = cc.find(`Canvas/res/audio/${audioName}`).getComponent(cc.AudioSource);
return new Promise((resolve, reject) => {
const id = cc.audioEngine.playEffect(audio.clip, false);
cc.audioEngine.setFinishCallback(id, () => {
resolve(id);
});
})
}
onVideoPlayerEvent(sender, event) {
cc.log(event)
if (event === cc.VideoPlayer.EventType.CLICKED) {
}
else if (event === cc.VideoPlayer.EventType.READY_TO_PLAY || event === cc.VideoPlayer.EventType.META_LOADED) {
}
else if (event === cc.VideoPlayer.EventType.PLAYING) {
cc.log("=========")
cc.log(sender);
cc.log(sender._impl._h)
cc.log(sender._impl._w);
if (sender?._impl?._w) {
this.vplayer.node.scale = cc.winSize.width / sender._impl._w;
}
}
else if (event === cc.VideoPlayer.EventType.COMPLETED) {
this.videoCtrl.active = false;
this.node.getChildByName("bg").active = true;
cc.log("video completed");
this.boyNode.active = true;
this.vplayer.node.active = false;
if (this.WrongList.length > 0) {
this.initWorongLogic();
} else {
this.boyNode.getComponent(Boy).playtalk(-1);
this.playAudioByUrl(this.data.audio_url_end, () => {
this.boyNode.getComponent(Boy).playWave(-1);
this.btn_next.active = true;
})
}
}
}
}
{
"ver": "1.0.8",
"uuid": "4446be6a-5098-479d-9e2f-0f2e41dc9e34",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "ba91d58d-9c7c-45c4-9afe-0db7be2836a4",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
import { defaultData } from "../script/defaultData_DG16";
export class MyCocosSceneComponent extends cc.Component {
// 生命周期 onLoad
onLoad() {
this.initSceneData();
this.initSize();
}
_imageResList = null;
_audioResList = null;
_animaResList = null;
initSceneData() {
this._imageResList = [];
this._audioResList = [];
this._animaResList = [];
}
_designSize = null; // 设计分辨率
_frameSize = null; // 屏幕分辨率
_mapScaleMin = null; // 场景中常用缩放(取大值)
_mapScaleMax = null; // 场景中常用缩放(取小值)
_cocosScale = null; // cocos 自缩放 (较少用到)
initSize() {
// 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小
let screen_size = cc.view.getFrameSize().width / cc.view.getFrameSize().height
let design_size = cc.Canvas.instance.designResolution.width / cc.Canvas.instance.designResolution.height
let f = screen_size >= design_size
cc.Canvas.instance.fitHeight = f
cc.Canvas.instance.fitWidth = !f
const frameSize = cc.view.getFrameSize();
this._frameSize = frameSize;
this._designSize = cc.view.getDesignResolutionSize();
let sx = cc.winSize.width / frameSize.width;
let sy = cc.winSize.height / frameSize.height;
this._cocosScale = Math.min(sx, sy);
sx = frameSize.width / this._designSize.width;
sy = frameSize.height / this._designSize.height;
this._mapScaleMin = Math.min(sx, sy) * this._cocosScale;
this._mapScaleMax = Math.max(sx, sy) * this._cocosScale;
cc.director['_scene'].width = frameSize.width;
cc.director['_scene'].height = frameSize.height;
}
data = null;
// 生命周期 start
start() {
if (window && (<any>window).courseware && (<any>window).courseware.getData) {
(<any>window).courseware.getData((data) => {
this.log('data:' + data);
this.data = data || this.getDefaultData();
this.data = JSON.parse(JSON.stringify(this.data));
this.preloadItem();
})
} else {
this.data = this.getDefaultData();
this.preloadItem();
}
}
getDefaultData() {
return defaultData;
}
preloadItem() {
this.addPreloadImage();
this.addPreloadAudio();
this.addPreloadAnima();
this.preload();
}
addPreloadImage() {
}
addPreloadAudio() {
}
addPreloadAnima() {
}
preload() {
const preloadArr = this._imageResList.concat(this._audioResList).concat(this._animaResList);
cc.assetManager.preloadAny(preloadArr, null, null, async (err, data) => {
if (window && window["air"]) {
// window["air"].onCourseInScreen = (next) => {
// window["air"].isCourseInScreen = true;
// this.onLoadEnd();
// next();
// };
await this.onLoadEnd();
window["air"].hideAirClassLoading();
} else {
await this.onLoadEnd();
}
cc.debug.setDisplayStats(false);
});
}
log(str) {
const node = cc.find('middleLayer');
if (node) {
node.getComponent('middleLayer').log(str);
} else {
console.log(str);
}
}
async onLoadEnd() {
}
// ------------------------------------------------
getSprNode(resName) {
const sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame;
const node = new cc.Node();
node.addComponent(cc.Sprite).spriteFrame = sf;
return node;
}
getSpriteFrimeByUrl(url, cb) {
cc.loader.load({ url }, (err, img) => {
const spriteFrame = new cc.SpriteFrame(img)
if (cb) {
cb(spriteFrame);
}
})
}
getSprNodeByUrl(url, cb) {
const node = new cc.Node();
const spr = node.addComponent(cc.Sprite);
this.getSpriteFrimeByUrl(url, (sf) => {
spr.spriteFrame = sf;
if (cb) {
cb(node);
}
})
}
playAudioByUrl(audio_url, cb = null) {
if (audio_url) {
cc.assetManager.loadRemote(audio_url, (err, audioClip) => {
const audioId = cc.audioEngine.play(audioClip, false, 0.8);
if (cb) {
cc.audioEngine.setFinishCallback(audioId, () => {
cb();
});
}
});
} else {
cb && cb();
}
}
}
\ No newline at end of file
{
"ver": "1.0.8",
"uuid": "27fb1082-365d-4093-ad48-6e3d7a48f72b",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
export const defaultData =
{
"contentObj": {
"dataArray": [
{
"text": "They look the same.",
"image_url": "http://teach.cdn.ireadabc.com/f48f58e1bedc9b831e16ff3012e09fe4.png",
"option_1_isRight": true,
"option_1_text": "Yes",
"option_2_isRight": false,
"option_2_text": "No"
}
]
},
"audio_url_guide": "http://teach.cdn.ireadabc.com/be45c9c5a85f010d64b8bb66cfd33c46_l.mp3",
"audio_url_guide_2": "http://teach.cdn.ireadabc.com/3b2ce4a27af4ec60972558c2a17fb804_l.mp3",
"audio_url_end": "http://teach.cdn.ireadabc.com/51cf798ecb6d6503b568650119756323_l.mp3",
"audio_url_right": "http://teach.cdn.ireadabc.com/b9e68d339bd3c1e0847a9acd6d0819ab_l.mp3",
"audio_url_wrong": "http://teach.cdn.ireadabc.com/2b74d2c9839ab54ced958f9625a8811e_l.mp3",
"video_url": "http://teach.cdn.ireadabc.com/ae9d0fb73e5c7fe21ad1cf8b71e46b81_l.mp4"
}
{
"ver": "1.0.8",
"uuid": "4c665d49-722b-4aab-abfa-705a69149379",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
This diff is collapsed.
{
"ver": "1.0.8",
"uuid": "4167625a-9612-429e-8812-7f6fea52f4c4",
"isPlugin": true,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "e446b7fb-9b3e-4b27-b885-dfae263addbb",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
import { asyncPlayDragonBoneAnimation } from "../util_DG16";
const { ccclass, property } = cc._decorator;
@ccclass
export default class Boy extends cc.Component {
@property(cc.Node)
aniBody: cc.Node
aniNameList = ["run", "good", "cheer", "expect", "talk", "invite", "wave", "point"]
log(str) {
const node = cc.find('middleLayer');
if (node) {
node.getComponent('middleLayer').log(str);
} else {
console.log(str);
}
}
protected onLoad(): void {
// let index = 0;
// this.schedule(() => {
// index = index % this.aniNameList.length;
// asyncPlayDragonBoneAnimation(this.aniBody, this.aniNameList[index], 1);
// cc.log("play ani name :" + this.aniNameList[index]);
// index++;
// }, 3, 10000, 5)
// this.aniBody.getComponent(dragonBones.ArmatureDisplay)
}
playNormal() {
this.log("play ani name : normal");
asyncPlayDragonBoneAnimation(this.aniBody, "normal", -1,)
}
async playRun(time: number = 1) {
this.log("play ani name : run");
await asyncPlayDragonBoneAnimation(this.aniBody, "run", time);
this.playNormal();
}
async playCheer(time: number = 1) {
let localTime = time;
this.log("play ani name : cheer");
await asyncPlayDragonBoneAnimation(this.aniBody, "cheer", time);
this.playNormal();
}
async playExpect(time: number = 1) {
let localTime = time;
this.log("play ani name : expect");
await asyncPlayDragonBoneAnimation(this.aniBody, "expect", time);
this.playNormal();
}
async playtalk(time: number = 1) {
let localTime = time;
this.log("play ani name : talk");
await asyncPlayDragonBoneAnimation(this.aniBody, "talk", time,)
this.playNormal();
}
async playGood(time: number = 1) {
let localTime = time;
this.log("play ani name : good");
await asyncPlayDragonBoneAnimation(this.aniBody, "good", time)
this.playNormal();
}
async playWave(time: number = 1) {
let localTime = time;
this.log("play ani name : wave");
await asyncPlayDragonBoneAnimation(this.aniBody, "wave", time)
this.playNormal();
}
async playPoint(time: number = 1) {
let localTime = time;
this.log("play ani name : point");
await asyncPlayDragonBoneAnimation(this.aniBody, "point", time)
this.playNormal();
}
async playInvite(time: number = 1) {
let localTime = time;
this.log("play ani name : invite");
await asyncPlayDragonBoneAnimation(this.aniBody, "invite", time)
this.playNormal();
}
// update (dt) {}
}
{
"ver": "1.0.8",
"uuid": "d8587936-a443-49b6-bc5e-3b4c1ed58686",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
import { getSpriteFrimeByUrl } from "../util_DG16";
const { ccclass, property } = cc._decorator;
@ccclass
export default class QuestionView extends cc.Component {
@property(cc.Label)
lb_info: cc.Label = null;
@property(cc.Label)
lb_pro: cc.Label = null;
@property(cc.Sprite)
icon: cc.Sprite = null;
@property(cc.Node)
leftRoot: cc.Node = null;
@property(cc.Node)
rightRoot: cc.Node = null;
@property(cc.Node)
cover: cc.Node = null;
callback: Function;
isRight: any;
_choseIndex: any;
root: cc.Node;
onLoad() {
this.leftRoot.off("click")
this.rightRoot.off("click")
this.leftRoot.on("click", this.onClickLeft, this)
this.rightRoot.on("click", this.onClickRight, this)
this.root = this.node.getChildByName("root");
this.root.y = 1000;
}
init(data, choseIndex, index, total, callback: Function) {
this.leftRoot.getChildByName("right").active = false;
this.leftRoot.getChildByName("wrong").active = false;
this.leftRoot.getChildByName("lb").getComponent(cc.Label).string = data.option_1_text;
this.rightRoot.getChildByName("right").active = false;
this.rightRoot.getChildByName("wrong").active = false;
this.rightRoot.getChildByName("lb").getComponent(cc.Label).string = data.option_2_text;
this.cover.active = false;
this.callback = callback;
this.lb_pro.string = `${index}/${total}`
this.lb_info.string = data.text;
this.icon.spriteFrame = null;
this._choseIndex = choseIndex;
getSpriteFrimeByUrl(data.image_url, (sf) => {
this.icon.spriteFrame = sf;
this.icon.node.scale = Math.min(800 / this.node.width, 500 / this.node.height)
})
}
hide() {
cc.tween(this.root).to(1, { y: 1000 }).start();
}
show() {
cc.tween(this.root).to(1, { y: 0 }).start();
}
onClickRight() {
this.cover.active = true;
this.rightRoot.getChildByName("right").active = 1 == this._choseIndex;
this.rightRoot.getChildByName("wrong").active = 1 != this._choseIndex;
this.callback && this.callback(1 == this._choseIndex)
}
onClickLeft() {
this.cover.active = true;
this.leftRoot.getChildByName("right").active = 0 == this._choseIndex;
this.leftRoot.getChildByName("wrong").active = 0 != this._choseIndex;
this.callback && this.callback(0 == this._choseIndex)
}
}
{
"ver": "1.0.8",
"uuid": "d2d2a739-2364-4689-9659-2a92259b705e",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
cc.macro.ENABLE_TRANSPARENT_CANVAS = true;
const { ccclass, property } = cc._decorator;
@ccclass
export default class videoCtrl extends cc.Component {
@property(cc.Node)
btn_vido: cc.Node = null;
@property(cc.Node)
vidoStateIcon: cc.Node = null;
@property(cc.Slider)
vidoSlider: cc.Slider = null;
@property(cc.Node)
playbar: cc.Node = null;
@property(cc.Label)
nowTime: cc.Label = null;
@property(cc.Label)
totalTime: cc.Label = null;
private _videoCom: cc.VideoPlayer;
_check: any;
private _lastTouch: number;
onLoad() {
this._lastTouch = -1;
this.btn_vido.on("click", this.onClickBtn, this);
this.node.on(cc.Node.EventType.TOUCH_END, this.showBtns, this)
this.node.on(cc.Node.EventType.TOUCH_START, this.touchVideoLayer, this)
}
touchVideoLayer() {
let nowTouch = Date.now();
if (nowTouch - this._lastTouch < 300) {
this.onClickBtn();
}
this._lastTouch = nowTouch;
}
showBtns() {
this.node.opacity = 255;
if (this._videoCom.isPlaying()) {
this.unschedule(this.scheduleHide)
this.scheduleOnce(this.scheduleHide, 3);
}
}
scheduleHide() {
this.node.opacity = 0;
}
setVideCom(videoCom) {
this._check = false;
this._videoCom = videoCom;
this.unschedule(this.scheduleHide)
this.scheduleOnce(this.scheduleHide, 3);
}
setCanPlay() {
this.btn_vido.getChildByName("stop").active = false;
this.vidoStateIcon.getChildByName("stop").active = false;
}
setCanStop() {
this.btn_vido.getChildByName("stop").active = true
this.vidoStateIcon.getChildByName("stop").active = true;
}
onClickBtn() {
this.unschedule(this.scheduleHide)
let key = this._videoCom.isPlaying()
this.log("video is playing = " + key)
if (this._videoCom.isPlaying()) {
this._videoCom.pause();
this.setCanPlay();
this.node.opacity = 255;
} else {
this.log("video is resume ")
this._videoCom.play();
this.setCanStop()
this.scheduleOnce(this.scheduleHide, 3);
}
}
log(str) {
const node = cc.find('middleLayer');
if (node) {
node.getComponent('middleLayer').log(str);
} else {
console.log(str);
}
}
update() {
if (this._videoCom?.currentTime >= 0) {
if (!this._check) {
this._check = true;
// this._videoCom.pause();
// this.scheduleOnce(() => {
// this._videoCom.resume();
// }, 0)
}
let now = Math.ceil(this._videoCom?.currentTime)
let total = Math.ceil(this._videoCom.getDuration());
this.nowTime.string = this.makeTimeStr(now)
this.totalTime.string = this.makeTimeStr(total)
this.vidoSlider.progress = now / total;
}
}
makeTimeStr(time) {
let min = Math.floor(time / 60);
let sec = Math.floor(time % 60);
return `${min < 10 ? "0" + min : min}:${sec < 10 ? "0" + sec : sec}`
}
}
{
"ver": "1.0.8",
"uuid": "9de248ba-420d-4c65-b4a2-55facbeb6822",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
export enum gameState {
}
export function getPosByAngle(angle, len) {
const radian = angle * Math.PI / 180;
const x = Math.sin(radian) * len;
const y = Math.cos(radian) * len;
return { x, y };
}
export function getAngleByPos(px, py, mx, my) {
const x = Math.abs(px - mx);
const y = Math.abs(py - my);
const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
const cos = y / z;
const radina = Math.acos(cos); // 用反三角函数求弧度
let angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度
if (mx > px && my > py) {// 鼠标在第四象限
angle = 180 - angle;
}
if (mx === px && my > py) {// 鼠标在y轴负方向上
angle = 180;
}
if (mx > px && my === py) {// 鼠标在x轴正方向上
angle = 90;
}
if (mx < px && my > py) {// 鼠标在第三象限
angle = 180 + angle;
}
if (mx < px && my === py) {// 鼠标在x轴负方向
angle = 270;
}
if (mx < px && my < py) {// 鼠标在第二象限
angle = 360 - angle;
}
// console.log('angle: ', angle);
return angle;
}
export function exchangeNodePos(baseNode, targetNode) {
return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));
}
export function RandomInt(a, b = 0) {
let max = Math.max(a, b);
let min = Math.min(a, b);
return Math.floor(Math.random() * (max - min) + min);
}
export function randomSortByArr(arr) {
const newArr = [];
const tmpArr = arr.concat();
while (tmpArr.length > 0) {
const randomIndex = Math.floor(tmpArr.length * Math.random());
newArr.push(tmpArr[randomIndex]);
tmpArr.splice(randomIndex, 1);
}
return newArr;
}
export function setSprNodeMaxLen(sprNode, maxW, maxH) {
const sx = maxW / sprNode.width;
const sy = maxH / sprNode.height;
const s = Math.min(sx, sy);
sprNode.scale = Math.round(s * 1000) / 1000;
}
export function localPosTolocalPos(baseNode, targetNode) {
const worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));
const localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
return localPos;
}
export function worldPosToLocalPos(worldPos, baseNode) {
const localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
return localPos;
}
export function getScaleRateBy2Node(baseNode, targetNode, maxFlag = true) {
const worldRect1 = targetNode.getBoundingBoxToWorld();
const worldRect2 = baseNode.getBoundingBoxToWorld();
const sx = worldRect1.width / worldRect2.width;
const sy = worldRect1.height / worldRect2.height;
if (maxFlag) {
return Math.max(sx, sy);
} else {
return Math.min(sx, sy);
}
}
export function getDistance(start, end) {
var pos = cc.v2(start.x - end.x, start.y - end.y);
var dis = Math.sqrt(pos.x * pos.x + pos.y * pos.y);
return dis;
}
export function playAudioByUrl(audio_url, cb = null) {
if (audio_url) {
cc.assetManager.loadRemote(audio_url, (err, audioClip: any) => {
const audioId = cc.audioEngine.play(audioClip, false, 0.8);
if (cb) {
cc.audioEngine.setFinishCallback(audioId, () => {
cb();
});
}
});
}
}
export function btnClickAnima(btn, time = 0.15, rate = 1.05) {
btn.tmpScale = btn.scale;
btn.on(cc.Node.EventType.TOUCH_START, () => {
cc.tween(btn)
.to(time / 2, { scale: btn.scale * rate })
.start()
})
btn.on(cc.Node.EventType.TOUCH_CANCEL, () => {
cc.tween(btn)
.to(time / 2, { scale: btn.tmpScale })
.start()
})
btn.on(cc.Node.EventType.TOUCH_END, () => {
cc.tween(btn)
.to(time / 2, { scale: btn.tmpScale })
.start()
})
}
export function getSpriteFrimeByUrl(url, cb) {
cc.loader.load({ url }, (err, img) => {
const spriteFrame = new cc.SpriteFrame(img)
if (cb) {
cb(spriteFrame);
}
})
}
export function getSprNode(resName) {
const sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame;
const node = new cc.Node();
node.addComponent(cc.Sprite).spriteFrame = sf;
return node;
}
export function getSprNodeByUrl(url, cb) {
const node = new cc.Node();
const spr = node.addComponent(cc.Sprite);
getSpriteFrimeByUrl(url, (sf) => {
spr.spriteFrame = sf;
if (cb) {
cb(spr);
}
})
}
export function playAudio(audioClip, cb = null) {
if (audioClip) {
const audioId = cc.audioEngine.playEffect(audioClip, false);
if (cb) {
cc.audioEngine.setFinishCallback(audioId, () => {
cb();
});
}
}
}
export async function asyncDelay(time) {
return new Promise((resolve, reject) => {
try {
const canvas = cc.find('Canvas');
cc.tween(canvas)
.delay(time)
.call(() => {
resolve(null);
})
.start();
} catch (e) {
reject(e);
}
});
}
export class FireworkSettings {
baseNode; // 父节点
nodeList; // 火花节点的array
pos; // 发射点
side; // 发射方向
range; // 扩散范围
number; // 发射数量
scalseRange; // 缩放范围
constructor(baseNode, nodeList,
pos = cc.v2(0, 0),
side = cc.v2(0, 100),
range = 50,
number = 100,
scalseRange = 0
) {
this.baseNode = baseNode;
this.nodeList = nodeList;
this.pos = pos;
this.side = side;
this.range = range;
this.number = number;
this.scalseRange = scalseRange;
}
static copy(firework) {
return new FireworkSettings(
firework.baseNode,
firework.nodeList,
firework.pos,
firework.side,
firework.range,
firework.number,
);
}
}
export async function showFireworks(fireworkSettings) {
const { baseNode, nodeList, pos, side, range, number, scalseRange } = fireworkSettings;
new Array(number).fill(' ').forEach(async (_, i) => {
let rabbonNode = new cc.Node();
rabbonNode.parent = baseNode;
rabbonNode.x = pos.x;
rabbonNode.y = pos.y;
rabbonNode.angle = 60 * Math.random() - 30;
let node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);
node.parent = rabbonNode;
node.active = true;
node.x = 0;
node.y = 0;
node.angle = 0;
node.scale = (Math.random() - 0.5) * scalseRange + 1;
const rate = Math.random();
const angle = Math.PI * (Math.random() * 2 - 1);
await asyncTweenBy(rabbonNode, 0.3, {
x: side.x * rate + Math.cos(angle) * range * rate,
y: side.y * rate + Math.sin(angle) * range * rate
}, {
easing: 'quadIn'
});
cc.tween(rabbonNode)
.by(8, { y: -2000 })
.start();
cc.tween(rabbonNode)
.to(5, { scale: (Math.random() - 0.5) * scalseRange + 1 })
.start();
rabbonFall(rabbonNode);
await asyncDelay(Math.random());
cc.tween(node)
.by(0.15, { x: -10, angle: -10 })
.by(0.3, { x: 20, angle: 20 })
.by(0.15, { x: -10, angle: -10 })
.union()
.repeatForever()
.start();
cc.tween(rabbonNode)
.delay(5)
.to(0.3, { opacity: 0 })
.call(() => {
node.stopAllActions();
node.active = false;
node.parent = null;
node = null;
})
.start();
});
}
async function rabbonFall(node) {
const time = 1 + Math.random();
const offsetX = RandomInt(-200, 200) * time;
await asyncTweenBy(node, time, { x: offsetX, angle: offsetX * 60 / 200 });
rabbonFall(node);
}
export async function asyncTweenTo(node, duration, obj, ease = undefined) {
return new Promise((resolve, reject) => {
try {
cc.tween(node)
.to(duration, obj, ease)
.call(() => {
resolve(null);
})
.start();
} catch (e) {
reject(e);
}
});
}
export async function asyncTweenBy(node, duration, obj, ease = undefined) {
return new Promise((resolve, reject) => {
try {
cc.tween(node)
.by(duration, obj, ease)
.call(() => {
resolve(null);
})
.start();
} catch (e) {
reject(e);
}
});
}
export function showTrebleFirework(baseNode, rabbonList) {
const middle = new FireworkSettings(baseNode, rabbonList);
middle.pos = cc.v2(0, -400);
middle.side = cc.v2(0, 1000);
middle.range = 200;
middle.number = 100;
middle.scalseRange = 0.4;
const left = FireworkSettings.copy(middle);
left.pos = cc.v2(-600, -400);
left.side = cc.v2(200, 1000);
const right = FireworkSettings.copy(middle);
right.pos = cc.v2(600, -400);
right.side = cc.v2(-200, 1000);
showFireworks(middle);
showFireworks(left);
showFireworks(right);
}
export function onHomeworkFinish(data: any = null) {
const middleLayer = cc.find('middleLayer');
if (middleLayer) {
const middleLayerComponent = middleLayer.getComponent('middleLayer');
if (middleLayerComponent.role == 'student') {
middleLayerComponent.onHomeworkFinish(() => { }, data);
}
} else {
console.log('onHomeworkFinish');
}
}
export async function asyncPlayDragonBoneAnimation(node, animationName, time = 1, onFrameEvent = null) {
return new Promise((resolve, reject) => {
node.getComponent(dragonBones.ArmatureDisplay)
.once(dragonBones.EventObject.COMPLETE, () => {
cc.log("once end:-----")
resolve(null);
});
node.getComponent(dragonBones.ArmatureDisplay)
.on(dragonBones.EventObject.FRAME_EVENT, ({ name }) => {
if (onFrameEvent && typeof (onFrameEvent) == 'function') {
cc.log("onFrameEvent:" + name)
onFrameEvent(name);
}
});
node.getComponent(dragonBones.ArmatureDisplay)
.playAnimation(animationName, time);
});
}
{
"ver": "1.0.8",
"uuid": "2af41412-9c03-4acc-9d8b-648b575a01a8",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.2",
"uuid": "51c1d587-56ad-4e91-8989-f627260269af",
"isBundle": false,
"bundleName": "",
"priority": 1,
"compressionType": {},
"optimizeHotUpdate": {},
"inlineSpriteFrames": {},
"isRemoteBundle": {},
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "c6575dbe-ff87-49e0-8686-f7eddeaca2c6",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1920,
"height": 1080,
"platformSettings": {},
"subMetas": {
"DG_bg": {
"ver": "1.0.4",
"uuid": "e0a54493-4a76-4a02-a0a4-a8ed8e0243e9",
"rawTextureUuid": "c6575dbe-ff87-49e0-8686-f7eddeaca2c6",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1920,
"height": 1080,
"rawWidth": 1920,
"rawHeight": 1080,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "d19b0f06-726f-4033-b078-d59957ac5e15",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1129,
"height": 1005,
"platformSettings": {},
"subMetas": {
"DG_bg_img": {
"ver": "1.0.4",
"uuid": "8a209c6f-c552-40bb-8f77-8e7f141d76a2",
"rawTextureUuid": "d19b0f06-726f-4033-b078-d59957ac5e15",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1129,
"height": 1005,
"rawWidth": 1129,
"rawHeight": 1005,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "f70d7791-f068-4830-99d6-aef409faff26",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 486,
"height": 306,
"platformSettings": {},
"subMetas": {
"DG_btn_green_empty_dg_mid": {
"ver": "1.0.4",
"uuid": "4a7d5bbc-d91d-4a48-bf4a-d8ab6a82ca23",
"rawTextureUuid": "f70d7791-f068-4830-99d6-aef409faff26",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -4.5,
"offsetY": -21.5,
"trimX": 42,
"trimY": 66,
"width": 393,
"height": 217,
"rawWidth": 486,
"rawHeight": 306,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "ce8085ac-6079-465c-88aa-a47a1d72e159",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 180,
"height": 180,
"platformSettings": {},
"subMetas": {
"DG_btn_play": {
"ver": "1.0.4",
"uuid": "d61f70de-910d-4600-bc8c-52ea9ce2060a",
"rawTextureUuid": "ce8085ac-6079-465c-88aa-a47a1d72e159",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 180,
"height": 180,
"rawWidth": 180,
"rawHeight": 180,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "4d299aa1-5baa-482e-ab94-905cf2d9b631",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 180,
"height": 180,
"platformSettings": {},
"subMetas": {
"DG_btn_restart": {
"ver": "1.0.4",
"uuid": "9d6b9df8-ae24-4c63-aabd-f1ea8f714cf4",
"rawTextureUuid": "4d299aa1-5baa-482e-ab94-905cf2d9b631",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 180,
"height": 180,
"rawWidth": 180,
"rawHeight": 180,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "cc9d1131-ade4-4d5f-9648-8fe2edfab11c",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 347,
"height": 109,
"platformSettings": {},
"subMetas": {
"DG_btn_right_green": {
"ver": "1.0.4",
"uuid": "08cff0f6-d286-455a-a734-5e677dcf7fc1",
"rawTextureUuid": "cc9d1131-ade4-4d5f-9648-8fe2edfab11c",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 347,
"height": 109,
"rawWidth": 347,
"rawHeight": 109,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "2e806748-215d-436d-b1dc-c201119b4f98",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 347,
"height": 109,
"platformSettings": {},
"subMetas": {
"DG_btn_right_normal": {
"ver": "1.0.4",
"uuid": "77ee473a-fcdc-4eac-ba10-bedff36e9b82",
"rawTextureUuid": "2e806748-215d-436d-b1dc-c201119b4f98",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 347,
"height": 109,
"rawWidth": 347,
"rawHeight": 109,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "e2f94426-4ecc-4b70-93ad-c09b6c7d2604",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 347,
"height": 109,
"platformSettings": {},
"subMetas": {
"DG_btn_right_red": {
"ver": "1.0.4",
"uuid": "03862db7-8061-4ec3-bba0-623dd78515a0",
"rawTextureUuid": "e2f94426-4ecc-4b70-93ad-c09b6c7d2604",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 347,
"height": 109,
"rawWidth": 347,
"rawHeight": 109,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "09ec1627-b4a5-433c-9198-1160a1f96cd6",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 84,
"height": 84,
"platformSettings": {},
"subMetas": {
"DG_btn_slider": {
"ver": "1.0.4",
"uuid": "528767eb-f3f0-45d0-b6c9-716fbf37b40e",
"rawTextureUuid": "09ec1627-b4a5-433c-9198-1160a1f96cd6",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 84,
"height": 84,
"rawWidth": 84,
"rawHeight": 84,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "0f695c75-b541-4d58-92e6-5c8bbfb89f25",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 180,
"height": 180,
"platformSettings": {},
"subMetas": {
"DG_btn_stop": {
"ver": "1.0.4",
"uuid": "7e0682d8-5e88-4d6c-95a7-fac9849b541c",
"rawTextureUuid": "0f695c75-b541-4d58-92e6-5c8bbfb89f25",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 180,
"height": 180,
"rawWidth": 180,
"rawHeight": 180,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "d86a2735-7f38-46ab-8895-23420e79bae4",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 347,
"height": 109,
"platformSettings": {},
"subMetas": {
"DG_btn_wrong_green": {
"ver": "1.0.4",
"uuid": "5a0c6e76-7b34-4df6-b149-23714c0850b4",
"rawTextureUuid": "d86a2735-7f38-46ab-8895-23420e79bae4",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 347,
"height": 109,
"rawWidth": 347,
"rawHeight": 109,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "49cd7d7d-ffe9-469c-aee5-f245814f1af3",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 347,
"height": 109,
"platformSettings": {},
"subMetas": {
"DG_btn_wrong_normal": {
"ver": "1.0.4",
"uuid": "e61a78e9-40b4-4fac-bcc7-9b531231cd0b",
"rawTextureUuid": "49cd7d7d-ffe9-469c-aee5-f245814f1af3",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 347,
"height": 109,
"rawWidth": 347,
"rawHeight": 109,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "65014ac7-0ee8-4015-9df0-6ad9b9bb023e",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 347,
"height": 109,
"platformSettings": {},
"subMetas": {
"DG_btn_wrongt_red": {
"ver": "1.0.4",
"uuid": "97ad6738-58b8-4cee-8b1d-5c3ec1abc4c7",
"rawTextureUuid": "65014ac7-0ee8-4015-9df0-6ad9b9bb023e",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 347,
"height": 109,
"rawWidth": 347,
"rawHeight": 109,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "2feff331-c917-47d7-a168-da2701ae8d6a",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1920,
"height": 1080,
"platformSettings": {},
"subMetas": {
"DG_img_mask": {
"ver": "1.0.4",
"uuid": "80dc7d5b-237d-4929-92e2-7ebe5395438e",
"rawTextureUuid": "2feff331-c917-47d7-a168-da2701ae8d6a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1920,
"height": 1080,
"rawWidth": 1920,
"rawHeight": 1080,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "2c9d3bd8-ac91-47ad-9467-5dd8837396e9",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 287,
"height": 108,
"platformSettings": {},
"subMetas": {
"DG_img_number": {
"ver": "1.0.4",
"uuid": "cf71de4b-d8d2-4caf-88ad-fdf9db17b955",
"rawTextureUuid": "2c9d3bd8-ac91-47ad-9467-5dd8837396e9",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 287,
"height": 108,
"rawWidth": 287,
"rawHeight": 108,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "e46bb593-f412-41e4-b4a0-2044bf70b70f",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 1920,
"height": 64,
"platformSettings": {},
"subMetas": {
"DG_img_panel_top_1": {
"ver": "1.0.4",
"uuid": "49599a2c-4e0c-46e3-b119-9e8e0c062fcc",
"rawTextureUuid": "e46bb593-f412-41e4-b4a0-2044bf70b70f",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1920,
"height": 64,
"rawWidth": 1920,
"rawHeight": 64,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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