Commit f2032c4e authored by liujiangnan's avatar liujiangnan

feat: 初始化

parent f8f29464
{"frameRate":30,"name":"loading","version":"5.5","compatibleVersion":"5.5","armature":[{"type":"Armature","frameRate":30,"name":"Armature","aabb":{"x":-128,"y":-129,"width":256,"height":258},"bone":[{"name":"root","transform":{"skX":77.5101,"skY":77.5101}}],"slot":[{"name":"IP小星星","parent":"root"}],"skin":[{"slot":[{"name":"IP小星星","display":[{"name":"IP小星星","transform":{"scX":0.2266,"scY":0.2266}}]}]}],"animation":[{"duration":48,"playTimes":0,"name":"newAnimation","bone":[{"name":"root","rotateFrame":[{"duration":24,"tweenEasing":0,"rotate":-77.51},{"tweenEasing":0,"rotate":102.49},{"duration":23,"tweenEasing":0,"rotate":106.76},{"duration":0,"rotate":-77.51}]}]}],"defaultActions":[{"gotoAndPlay":"newAnimation"}]}]}
\ No newline at end of file
{
"ver": "1.0.1",
"uuid": "32d4c07d-d14c-472e-9982-d77b5f99f84a",
"subMetas": {}
}
\ No newline at end of file
{"name":"loading","SubTexture":[{"name":"IP小星星","x":1,"height":249,"frameY":-4,"y":1,"frameHeight":258,"frameX":-2,"frameWidth":256,"width":252}],"imagePath":"loading_tex.png","height":256,"width":256}
\ No newline at end of file
{
"ver": "1.0.1",
"uuid": "3cf68978-c51e-4094-8539-c768bbfaf05a",
"subMetas": {}
}
\ No newline at end of file
{
"ver": "2.3.5",
"uuid": "daad9123-eef3-4934-8ddb-6a181b8f358a",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 256,
"height": 256,
"platformSettings": {},
"subMetas": {
"loading_tex": {
"ver": "1.0.4",
"uuid": "f6082448-b4d2-48c4-9132-422baa8ee7be",
"rawTextureUuid": "daad9123-eef3-4934-8ddb-6a181b8f358a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -1,
"offsetY": 2.5,
"trimX": 1,
"trimY": 1,
"width": 252,
"height": 249,
"rawWidth": 256,
"rawHeight": 256,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
cc.Class({
extends: cc.Component,
start() {
this.middleLayer = cc.find('middleLayer').getComponent('middleLayer');
},
onDestroy() {
console.log('喵喵喵: destroyer onDestroy');
this.middleLayer.clearDragonDisplayAssetList();
}
});
{
"ver": "1.0.8",
"uuid": "8de31fd0-466b-4907-bd2e-c40e89098c7d",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
const testMockData = {"file":"/storage/emulated/0/Android/data/com.example.oxford/cache/shengtong/gradeVoice.mp3","audioUrl":"https://staging-teach.cdn.ireadabc.com/9bee787cf2a1934ccaf7dd596ede9c91.mp3","version":"2.3.9","eof":1,"tokenId":"629f0fe93327936c0b000001","result":{"duration":"3.620","fluency":91,"integrity":100,"kernel_version":"3.7.1","overall":92,"pronunciation":95,"resource_version":"2.3.6","rhythm":74,"sentences":[{"details":[{"overall":94,"word":"what"},{"overall":98,"word":"can"},{"overall":99,"word":"i"},{"overall":77,"word":"do"},{"overall":100,"word":"for"},{"overall":100,"word":"you"}],"overall":88,"sentence":"what can i do for you"}],"speed":162}}; const testMockData = {"eof":1,"file":"/storage/emulated/0/Android/data/com.example.oxford/cache/shengtong/gradeVoice.mp3","audioUrl":"https://staging-teach.cdn.ireadabc.com/db48d49e122ba65aa7c5ee56963418a6.mp3","result":{"duration":"2.470","fluency":100,"integrity":100,"kernel_version":"3.6.7","overall":99,"pronunciation":99,"resource_version":"2.3.6","rhythm":0,"speed":78},"tokenId":"621c32543327932cfc000002"};
const recordMockData = {"text":"what can i do for you","audioUrl":"https://staging-teach.cdn.ireadabc.com/368ad56174f85e2ff1f39f12bac5c693.mp3"}; const recordMockData = {"text":"what can i do for you","audioUrl":"https://staging-teach.cdn.ireadabc.com/368ad56174f85e2ff1f39f12bac5c693.mp3"};
export function initAir(_this) { export function initAir(_this) {
...@@ -25,6 +25,9 @@ export function initAir(_this) { ...@@ -25,6 +25,9 @@ export function initAir(_this) {
osmoFingerReadCallback: function (res) { osmoFingerReadCallback: function (res) {
_this.log(`***成功调用osmoFingerReadCallback***参数==${res}`); _this.log(`***成功调用osmoFingerReadCallback***参数==${res}`);
}, },
dialogStatus: function (res) {
_this.log(`***成功调用dialogStatus***参数==${res}`);
},
startScanCodeCallback: null, startScanCodeCallback: null,
needUpdateCallback: null, needUpdateCallback: null,
getEngineInfoCallback: null, getEngineInfoCallback: null,
...@@ -193,6 +196,18 @@ export function initAir(_this) { ...@@ -193,6 +196,18 @@ export function initAir(_this) {
}; };
window.courseware.callOcMethod("getEngineInfo", {}); window.courseware.callOcMethod("getEngineInfo", {});
}, },
exitApp() {
_this.log(`===成功调用exitApp===`);
window.courseware.callOcMethod("exitApp", {});
},
changeHost() {
_this.log(`===成功调用changeHost===`);
// 调用原生获取机器信息
if (window.air.engineInfo) {
const engineInfo = JSON.parse(window.air.engineInfo);
window.courseware.callOcMethod("changeHost", {isStagingEnv: engineInfo.isDev != 1});
}
},
needUpdate(label, url, callback) { needUpdate(label, url, callback) {
_this.log(`===成功调用needUpdate===`); _this.log(`===成功调用needUpdate===`);
// 调用原生获取机器信息 // 调用原生获取机器信息
......
...@@ -5,34 +5,10 @@ const { ccclass, property } = cc._decorator; ...@@ -5,34 +5,10 @@ const { ccclass, property } = cc._decorator;
@ccclass @ccclass
export default class NewClass extends middleLayerBase { export default class NewClass extends middleLayerBase {
showMask() {
}
hideMask() {
}
onCourseWareLoaded() {
// 课件加载完成的钩子
const process = cc.find(`middleLayer/pageProgress`);
const bar = cc.find(`bar`, process);
const barWidth = process.width * 1 / this.courses.length;
cc.tween(bar).to(0.5, { width: barWidth }).start();
const page = cc.find(`page`, process);
page.getComponent(cc.Label).string = `${this.courseIndex+1}/${this.courses.length}`;
}
// 需要预加载的数量
preloadCount = null;
// 统计已加载的数量
loadedCount = null;
role; role;
// 统一释放异步资源的方法 // 统一释放异步资源的方法
async onLoad() { async onLoad() {
this.preloadCount = 0;
this.loadedCount = 0;
initAir(this); initAir(this);
this.reWriteAir(); this.reWriteAir();
this.role = 'student'; this.role = 'student';
...@@ -46,184 +22,19 @@ export default class NewClass extends middleLayerBase { ...@@ -46,184 +22,19 @@ export default class NewClass extends middleLayerBase {
global.middleLayer = cc.find('middleLayer').getComponent('middleLayer'); global.middleLayer = cc.find('middleLayer').getComponent('middleLayer');
// 预加载 // 预加载
// await this.preloadAll();
cc.find(`middleLayer/preload`).active = false; cc.find(`middleLayer/preload`).active = false;
this.loadOnlineCourseWare(23751); this.loadOnlineCourseWare(23751);
} }
async preloadAll() {
if ((<any>window).preloadBundleAndSourcesFlag) {
// 只加载一次就行了
return;
}
(<any>window).preloadBundleAndSourcesFlag = true;
let platform = "web_desktop";
if (cc.sys.os == cc.sys.OS_IOS) {
platform = "ios";
} else if (cc.sys.os == cc.sys.OS_ANDROID) {
platform = "android";
}
const datastr:any = await this.asyncCallNetworkApiGet(`/api/syllabus/v1/allbundles`, { orgid: 512, platform });
const data = JSON.parse(datastr);
if (data.rows && data.rows.length > 0) {
this.preloadCount += data.rows.length;
}
const datastr1:any = await this.asyncCallNetworkApiGet(`/api/syllabus/v1/allresources`, { orgid: 512 });
const data1 = JSON.parse(datastr1);
if (data1.rows && data1.rows.length > 0) {
this.preloadCount += data1.rows.length;
}
console.log('data.rows = ' + JSON.stringify(data.rows));
await this.preloadSceneAndSource(data, data1);
}
preloadSceneAndSource(scenes, sources) {
const p1 = this.batchPreloadScene(scenes.rows);
const p2 = this.preloadSource(sources.rows);
return Promise.all([p1, p2]);
}
batchPreloadScene(scenes = []) {
return new Promise((resolve) => {
const expects = [
// 'op_03_2',
// 'OP10_online',
];
const _this = this;
let i = 0;
const load = function () {
const scene = scenes[i];
if (expects.includes(scene.sceneName)) {
_this.loadedCount++;
_this.updateProcessBar();
i++;
if (i < scenes.length) {
setTimeout(() => {
load();
}, 1);
} else {
resolve();
}
return;
}
try {
cc.assetManager.loadBundle(scene.bondleUrl, { version: scene.version }, (err, bundle) => {
console.log(`${scene.bondleUrl}---场景开始loadBundle----`);
if (!bundle) {
_this.loadedCount++;
_this.updateProcessBar();
i++;
if (i < scenes.length) {
setTimeout(() => {
load();
}, 1);
} else {
resolve();
}
return;
}
try {
bundle.preloadScene(scene.sceneName, () => { }, () => {
console.log(`${scene.sceneName}场景预加载结束`);
_this.loadedCount++;
_this.updateProcessBar();
i++;
if (i < scenes.length) {
setTimeout(() => {
load();
}, 1);
} else {
resolve();
}
});
} catch (error) {}
});
} catch(e) {}
}
if (scenes && scenes.length > 0) {
load();
} else {
resolve();
}
});
}
preloadSource(array) {
return new Promise((resolve) => {
const rows = array || [];
let loadFlag = 0;
const batchLoad = () => {
let tempArr = rows.splice(0, 10);
let len = tempArr.length;
for (let i = 0; i < tempArr.length; i++) {
cc.assetManager.loadRemote(tempArr[i], (err, texture) => {
if (err) {
console.log(err)
}
this.loadedCount++;
this.updateProcessBar();
if (i === len - 1) {
batchLoad();
}
loadFlag ++;
if (loadFlag == rows.length) {
resolve();
}
});
}
}
batchLoad();
});
}
updateProcessBar() {
const label = cc.find("middleLayer/preload/progress/page").getComponent(cc.Label);
label.string = `${Math.floor(this.loadedCount/this.preloadCount*100)}%`;
// 课件加载完成的钩子
const process = cc.find(`middleLayer/preload/progress`);
const bar = cc.find(`bar`, process);
const barWidth = process.width / this.preloadCount * this.loadedCount;
bar.width = barWidth;
}
onHomeworkFinish(callBack, data = null) { onHomeworkFinish(callBack, data = null) {
// TODO 上报总成绩
const loadingBg = cc.find('middleLayer/loadingBg');
loadingBg.opacity = 50;
this.goNextPage();
const process = cc.find(`middleLayer/pageProgress`);
const bar = cc.find(`bar`, process);
let barWidth = process.width / this.courses.length * (this.courseIndex+1);
barWidth = barWidth>process.width?process.width:barWidth;
cc.tween(bar).to(0.5, { width: barWidth }).start();
const page = cc.find(`page`, process);
page.getComponent(cc.Label).string = `${this.courseIndex+1}/${this.courses.length}`;
}
localMode = false;
asyncDelayLog(str) {
console.log(str);
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(null);
}, 1);
});
} }
initListener() { initListener() {
} }
log(str) {
console.log(str);
}
reWriteAir() { reWriteAir() {
(<any>window).courseware.getData = (callback) => { (<any>window).courseware.getData = (callback) => {
let data = null; let data = null;
...@@ -233,22 +44,15 @@ export default class NewClass extends middleLayerBase { ...@@ -233,22 +44,15 @@ export default class NewClass extends middleLayerBase {
this.log("===成功调用getData===" + JSON.stringify(data)); this.log("===成功调用getData===" + JSON.stringify(data));
callback && callback(data); callback && callback(data);
} }
(<any>window).courseware.nextPage = () => {
this.goNextPage();
}
(<any>window).courseware.beforePage = () => {
this.goPrePage();
}
(<any>window).courseware.sendAnswer = (answerObj) => { (<any>window).courseware.sendAnswer = (answerObj) => {
this.log("===成功调用sendAnswer===" + JSON.stringify(answerObj)); this.log("===成功调用sendAnswer===" + JSON.stringify(answerObj));
this.callNetworkApiPost(`/api/oxford/courseware/v1/${this.courseItem.id}/saveanswer`, answerObj, (data) => { this.callNetworkApiPost(`/api/dige/courseware/v1/${this.courseItem.id}/saveanswer`, answerObj, (data) => {
answerObj.callback && answerObj.callback(JSON.stringify(data.row)); answerObj.callback && answerObj.callback(JSON.stringify(data.row));
}); });
} }
(<any>window).courseware.getAnswer = (queryObj, callback) => { (<any>window).courseware.getAnswer = (queryObj, callback) => {
this.log("===成功调用getAnswer===" + JSON.stringify(queryObj)); this.log("===成功调用getAnswer===" + JSON.stringify(queryObj));
this.callNetworkApiGet(`/api/oxford/courseware/v1/${this.courseItem.id}/getanswer`, queryObj, (datastr) => { this.callNetworkApiGet(`/api/dige/courseware/v1/${this.courseItem.id}/getanswer`, queryObj, (datastr) => {
const data = JSON.parse(datastr); const data = JSON.parse(datastr);
callback && callback(JSON.stringify(data.rows)); callback && callback(JSON.stringify(data.rows));
}); });
...@@ -263,68 +67,9 @@ export default class NewClass extends middleLayerBase { ...@@ -263,68 +67,9 @@ export default class NewClass extends middleLayerBase {
(<any>window).air.onCourseInScreen = null; (<any>window).air.onCourseInScreen = null;
}); });
this.hideWaitingLetters(); this.hideWaitingLetters();
this.hideMask();
} }
} }
callNativeFunction(param) {
const paramStr = JSON.stringify(param);
if (cc.sys.isNative && cc.sys.os == cc.sys.OS_IOS) {
return jsb.reflection.callStaticMethod('CocosMng', 'cocosWithNativeProtocol:', paramStr);
} else if (cc.sys.isNative && cc.sys.os == cc.sys.OS_ANDROID) {
return jsb.reflection.callStaticMethod('com/iplayabc/cocos/AppActivity', 'cocosWithNativeProtocol', '(Ljava/lang/String;)Ljava/lang/String;', paramStr);
} else if (cc.sys.isNative && cc.sys.os == cc.sys.OS_WINDOWS) {
console.log('汪汪汪')
} else {
console.error('非源生环境11');
}
}
isShowWaiting = false;
showWaitingLetters() {
if (this.isShowWaiting) {
return;
}
this.isShowWaiting = true;
const laodingLayer = cc.find('middleLayer/loadingLayer');
laodingLayer.active = true;
const loadingBg = cc.find('middleLayer/loadingBg');
loadingBg.active = true;
}
hideWaitingLetters() {
const loadingBg = cc.find('middleLayer/loadingBg');
loadingBg.active = false;
const laodingLayer = cc.find('middleLayer/loadingLayer');
laodingLayer.active = false;
this.isShowWaiting = false;
}
getRainbowColorList() {
return [
cc.color(255, 255, 0),
cc.color(128, 255, 0),
cc.color(0, 255, 0),
cc.color(0, 0, 0),
cc.color(0, 255, 128),
cc.color(0, 255, 255),
cc.color(0, 128, 255),
cc.color(0, 0, 255),
cc.color(128, 0, 255),
cc.color(255, 0, 255),
cc.color(255, 0, 128),
cc.color(255, 0, 0),
cc.color(255, 128, 0),
cc.color(255, 255, 0),
];
}
onMiddleLayerLoadingFinish() { onMiddleLayerLoadingFinish() {
if (cc.sys.isNative && cc.sys.os == cc.sys.OS_IOS) { if (cc.sys.isNative && cc.sys.os == cc.sys.OS_IOS) {
jsb.reflection.callStaticMethod( jsb.reflection.callStaticMethod(
......
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