123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- function __initApp () { // init app
- require('./libs/wrapper/builtin/index');
- const firstScreen = require('./first-screen');
- window.DOMParser = require('./libs/common/xmldom/dom-parser').DOMParser;
- window.__globalAdapter = {};
- require('./libs/wrapper/unify');
- require('./libs/wrapper/fs-utils');
- <%- include(cocosTemplate, {}) %>
- // Adapt for IOS, swap if opposite
- if (canvas){
- var _w = canvas.width;
- var _h = canvas.height;
- if (screen.width < screen.height) {
- if (canvas.width > canvas.height) {
- _w = canvas.height;
- _h = canvas.width;
- }
- } else {
- if (canvas.width < canvas.height) {
- _w = canvas.height;
- _h = canvas.width;
- }
- }
- canvas.width = _w;
- canvas.height = _h;
- }
- // Adjust initial canvas size
- if (canvas && window.devicePixelRatio >= 2) {canvas.width *= 2; canvas.height *= 2;}
- const importMap = require("<%= importMapFile%>").default;
- System.warmup({
- importMap,
- importMapUrl: '<%= importMapFile%>',
- defaultHandler: (urlNoSchema) => {
- require('.' + urlNoSchema);
- },
- handlers: {
- 'plugin:': (urlNoSchema) => {
- requirePlugin(urlNoSchema);
- },
- },
- });
- /**
- * Fetch WebAssembly binaries.
- *
- * Whereas WeChat expects the argument passed to `WebAssembly.instantiate`
- * to be file path and the path should be relative from project's root dir,
- * we do the path conversion and directly return the converted path.
- *
- * @param path The path to `.wasm` file **relative from engine's out dir**(no leading `./`).
- * See 'assetURLFormat' field of build engine options.
- */
- function fetchWasm(path) {
- const engineDir = '<%-engineDir%>'; // Relative from project out
- return `${engineDir}/${path}`;
- }
- firstScreen.start('<%= alpha %>', '<%= antialias %>', '<%= useWebgl2 %>').then(() => {
- return System.import('<%= applicationJs %>');
- }).then((module) => {
- return firstScreen.setProgress(0.2).then(() => Promise.resolve(module));
- }).then(({ createApplication }) => {
- return createApplication({
- loadJsListFile: (url) => require(url),
- fetchWasm,
- });
- }).then((application) => {
- return firstScreen.setProgress(0.4).then(() => Promise.resolve(application));
- }).then((application) => {
- return onApplicationCreated(application);
- }).catch((err) => {
- console.error(err);
- });
- function onApplicationCreated(application) {
- return application.import('cc').then((module) => {
- return firstScreen.setProgress(0.6).then(() => Promise.resolve(module));
- }).then((cc) => {
- require('./libs/common/engine/index.js');
- require('./libs/wrapper/engine/index');
- require('./libs/common/cache-manager.js');
- // Adjust devicePixelRatio
- cc.view._maxPixelRatio = 4;
- // Release Image objects after uploaded gl texture
- cc.macro.CLEANUP_IMAGE_CACHE = false;
- return firstScreen.end().then(() => application.start({
- findCanvas: () => {
- var container = document.createElement('div');
- return { frame: container, canvas: window.canvas, container };
- },
- }));
- });
- }
- } // init app
- // NOTE: on WeChat Android end, we can only get the correct screen size at the second tick of game.
- var sysInfo = wx.getSystemInfoSync();
- if (sysInfo.platform.toLocaleLowerCase() === 'android') {
- GameGlobal.requestAnimationFrame (__initApp);
- } else {
- __initApp();
- }
|