Commit 1c664a11 authored by liujiangnan's avatar liujiangnan

feat:

parent 176641f3
...@@ -560,9 +560,7 @@ ...@@ -560,9 +560,7 @@
], ],
"_srcBlendFactor": 770, "_srcBlendFactor": 770,
"_dstBlendFactor": 771, "_dstBlendFactor": 771,
"_spriteFrame": { "_spriteFrame": null,
"__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
},
"_type": 0, "_type": 0,
"_sizeMode": 0, "_sizeMode": 0,
"_fillType": 0, "_fillType": 0,
...@@ -844,9 +842,7 @@ ...@@ -844,9 +842,7 @@
], ],
"_srcBlendFactor": 770, "_srcBlendFactor": 770,
"_dstBlendFactor": 771, "_dstBlendFactor": 771,
"_spriteFrame": { "_spriteFrame": null,
"__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
},
"_type": 0, "_type": 0,
"_sizeMode": 0, "_sizeMode": 0,
"_fillType": 0, "_fillType": 0,
...@@ -1128,9 +1124,7 @@ ...@@ -1128,9 +1124,7 @@
], ],
"_srcBlendFactor": 770, "_srcBlendFactor": 770,
"_dstBlendFactor": 771, "_dstBlendFactor": 771,
"_spriteFrame": { "_spriteFrame": null,
"__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
},
"_type": 0, "_type": 0,
"_sizeMode": 0, "_sizeMode": 0,
"_fillType": 0, "_fillType": 0,
...@@ -1412,9 +1406,7 @@ ...@@ -1412,9 +1406,7 @@
], ],
"_srcBlendFactor": 770, "_srcBlendFactor": 770,
"_dstBlendFactor": 771, "_dstBlendFactor": 771,
"_spriteFrame": { "_spriteFrame": null,
"__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
},
"_type": 0, "_type": 0,
"_sizeMode": 0, "_sizeMode": 0,
"_fillType": 0, "_fillType": 0,
...@@ -1696,9 +1688,7 @@ ...@@ -1696,9 +1688,7 @@
], ],
"_srcBlendFactor": 770, "_srcBlendFactor": 770,
"_dstBlendFactor": 771, "_dstBlendFactor": 771,
"_spriteFrame": { "_spriteFrame": null,
"__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
},
"_type": 0, "_type": 0,
"_sizeMode": 0, "_sizeMode": 0,
"_fillType": 0, "_fillType": 0,
......
import { asyncDelay, onHomeworkFinish } from "../script/util"; import { asyncCallNetworkApiGet, buttonOnClick, asyncGetSpriteFrimeByUrl, jumpToCourseWare } from "../script/util";
import { MyCocosSceneComponent } from "../script/MyCocosSceneComponent"; import { MyCocosSceneComponent } from "../script/MyCocosSceneComponent";
const { ccclass, property } = cc._decorator; const { ccclass, property } = cc._decorator;
...@@ -17,14 +17,46 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -17,14 +17,46 @@ export default class SceneComponent extends MyCocosSceneComponent {
} }
async onLoadEnd() { async onLoadEnd() {
// TODO 加载完成后的逻辑写在这里, 下面的代码仅供参考 this.initBg();
this.initView(); await this.initView();
this.initListener(); this.initListener();
} }
rows: any;
level: any;
async initView() {
const middleLayer = cc.find('middleLayer');
if (!middleLayer) {
const levelNode = cc.find(`Canvas/L1`);
levelNode.active = true;
this.level = 'L1';
return;
}
const middleLayerComponent = middleLayer.getComponent('middleLayer');
const folderId = middleLayerComponent.getData('NJ_MoreGames_CourseList').folderId;
console.log('folderId = ' + folderId);
const level = middleLayerComponent.getData('NJ_MoreGames').Level || 'L1';
this.level = level;
initView() { const levelNode = cc.find(`Canvas/${level}`);
this.initBg(); levelNode.active = true;
const resStr = await asyncCallNetworkApiGet('/api/syllabus/v1/list', {
pid: folderId
});
const res = JSON.parse(resStr);
this.rows = res.rows;
for (let i=1; i<=5; i++) {
const row = this.rows[i-1];
if (!row) {
continue;
}
const item = cc.find(`item${i}`, levelNode);
item.attr({syllabusId: row.id});
const coverFrame: any = await asyncGetSpriteFrimeByUrl(row.cover);
cc.find(`cover`, item).getComponent(cc.Sprite).spriteFrame = coverFrame;
}
} }
initBg() { initBg() {
...@@ -36,8 +68,26 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -36,8 +68,26 @@ export default class SceneComponent extends MyCocosSceneComponent {
bg3.scale = this._mapScaleMax; bg3.scale = this._mapScaleMax;
} }
initListener() { initListener() {
const levelNode = cc.find(`Canvas/${this.level}`);
for (let i = 1; i <= 5; i++) {
const item = cc.find(`item${i}`, levelNode);
buttonOnClick(item, () => {
const syllabusId = item["syllabusId"];
const middleLayer = cc.find('middleLayer');
if (!middleLayer) {
return;
}
const middleLayerComponent = middleLayer.getComponent('middleLayer');
if (!syllabusId) {
middleLayerComponent.showTips("未解锁 [101]");
return;
}
middleLayerComponent.setData('NJ_MoreGames_CourseList', {
syllabusId,
});
jumpToCourseWare(syllabusId);
});
}
} }
} }
...@@ -143,6 +143,19 @@ export function getSpriteFrimeByUrl(url, cb) { ...@@ -143,6 +143,19 @@ export function getSpriteFrimeByUrl(url, cb) {
}) })
} }
export function asyncGetSpriteFrimeByUrl(url) {
return new Promise((resolve, reject) => {
cc.loader.load({ url }, (err, img) => {
if (err) {
reject(err);
return;
}
const spriteFrame = new cc.SpriteFrame(img);
resolve(spriteFrame);
})
});
}
export function getSprNode(resName) { export function getSprNode(resName) {
const sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame; const sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame;
const node = new cc.Node(); const node = new cc.Node();
...@@ -464,3 +477,113 @@ export function callMiddleLayerFunction(apiName: string, data: any, callback: Fu ...@@ -464,3 +477,113 @@ export function callMiddleLayerFunction(apiName: string, data: any, callback: Fu
} }
} }
export function onHomeworkFinish() {
const middleLayer = cc.find('middleLayer');
if (middleLayer) {
const middleLayerComponent = middleLayer.getComponent('middleLayer');
if (middleLayerComponent.role == 'student') {
middleLayerComponent.onHomeworkFinish(() => { });
}
} else {
console.log('onHomeworkFinish');
}
}
export function asyncCallNetworkApiGet(apiName, data): Promise<any> {
return new Promise((resolve, reject) => {
callNetworkApiGet(apiName, data, (res => {
resolve(res);
}));
});
}
export function asyncCallNetworkApiPost(uri, data): Promise<any> {
return new Promise((resolve, reject) => {
callNetworkApiPost(uri, data, (res) => {
resolve(res);
});
});
}
export function callNetworkApiPost(uri, data, callBack) {
const middleLayer = cc.find('middleLayer')?.getComponent('middleLayer');
if (middleLayer) {
middleLayer.callNetworkApiPost(uri, data, callBack);
return;
}
const baseUrl = 'http://staging-openapi.iteachabc.com';
const xhr = new XMLHttpRequest();
const url = `${baseUrl}${uri}`;
xhr.open("POST", url, true);
xhr.setRequestHeader('content-type', 'application/json');
xhr.onreadystatechange = () => {
if (xhr.readyState == 4) {
callBack(JSON.parse(xhr.responseText));
}
}
xhr.send(JSON.stringify(data));
}
export function callNetworkApiGet(uri, data, callBack) {
const middleLayer = cc.find('middleLayer')?.getComponent('middleLayer');
if (middleLayer) {
middleLayer.callNetworkApiGet(uri, data, callBack);
return;
}
const baseUrl = 'http://staging-openapi.iteachabc.com';
let queryStr = '?';
const params = [];
for (const key in data) {
if (Object.hasOwnProperty.call(data, key)) {
params.push(`${key}=${data[key]}`);
}
}
queryStr += params.join("&");
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = () => {
if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
callBack(xhr.responseText);
}
};
const url = `${baseUrl}${uri}${queryStr}`;
console.log('url = ' + url);
xhr.open('GET', url, true);
xhr.send();
}
export function jumpToBundle(bundleName: string) {
const middleLayer = cc.find('middleLayer');
if (middleLayer) {
const middleLayerComponent = middleLayer.getComponent('middleLayer');
middleLayerComponent.loadOnlineBundle(bundleName);
} else {
console.log('jump to bundle: ' + bundleName);
}
}
export function jumpToCourseWare(courseWareId: number) {
const middleLayer = cc.find('middleLayer');
if (middleLayer) {
const middleLayerComponent = middleLayer.getComponent('middleLayer');
middleLayerComponent.loadOnlineCourseWare(courseWareId);
} else {
console.log('jump to CourseWare: ' + courseWareId);
}
}
export function buttonOnClick(button: cc.Node, callback: Function, scale = 1.0) {
button.on('click', () => {
if (button['cantClick']) {
return;
}
button['cantClick'] = true;
cc.tween(button)
.to(0.1, { scale: scale * 1.1 })
.to(0.1, { scale: scale })
.call(() => {
button['cantClick'] = false;
callback && callback();
})
.start();
});
}
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