Переписать скрипты модуля в классические скрипты на JavaScript - PullRequest
0 голосов
/ 07 сентября 2018

Я разработал игру, используя скрипты модуля на JavaScript. В основном импорт и экспорт заявления внутри моего кода. Игра доступна только на локальном сервере, но я хочу, чтобы она была доступна через index.html. Если я открою его с помощью index.html, он выдаст

Доступ к сценарию по пути от источника 'null' был заблокирован политикой CORS: неверный ответ. Исходный объект 'null', следовательно, не имеет доступа.

<!DOCTYPE html>
<html>
<head>
<title>My Game</title>
<style>
    body{
        margin: 0;
        height: 100%;
        width: 100%;
    }
    #screen {
        display: block;
        height: 100vh;
        width: 100vw;
        margin: 0;
        image-rendering: pixelated;
    }
</style>
<script type="module" src="js/main.js"></script>
</head>
<body>
   <canvas id="screen" width="250" height="330"></canvas>
</body>
</html>

Я думаю, что мне нужно переписать мои JS-скрипты в классические.

Main.js

import Camera from './Camera.js';
import Entity from './Entity.js';
import PlayerController from './traits/PlayerController.js';
import Timer from './Timer.js';
import { loadFont } from './loaders/font.js';
import { loadEntities } from './entities.js';  
import { createLevelLoader, createRandomEntity } from './loaders/level.js';
import { setupKeyboard } from './input.js';
import { createCollisionLayer } from './layers/collision.js';
import { createDashboardLayer } from './layers/dashboard.js';
import { createGameOverLayer } from './layers/gameover.js';

function createPlayerEnv(playerEntity) {
   const playerEnv = new Entity();
   const playerControl = new PlayerController();
   playerControl.checkpoint.set(64, 64);
   playerControl.setPlayer(playerEntity);
   playerEnv.addTrait(playerControl);
   return playerEnv;
 }

 async function main(canvas) {
 const context = canvas.getContext('2d');

  const [entityFactory, font] = await Promise.all([loadEntities(), loadFont()]);

 const loadLevel = await createLevelLoader(entityFactory);

 const level = await loadLevel('level');

const camera = new Camera();

const user = entityFactory.user();

const playerEnv = new createPlayerEnv(user);
level.entities.add(playerEnv);

//Bounding Box:
level.comp.layers.push(createCollisionLayer(level));
level.comp.layers.push(createDashboardLayer(font, playerEnv));

timer.start();
}

const canvas = document.getElementById('screen');
main(canvas);

Скрипт с экспортом

import Keyboard from './KeyboardState.js';

export function setupKeyboard(pacman) {
const input = new Keyboard();

input.addMapping('KeyP', keyState => {
    if (keyState) {
        pacman.jump.start();
    } else {
        pacman.jump.cancel();
    }
});

input.addMapping('KeyO', keyState => {
    pacman.turbo(keyState);
});

input.addMapping('KeyD', keyState => {
    pacman.go.dir += keyState ? 1 : -1;
});

input.addMapping('KeyA', keyState => {
    pacman.go.dir += keyState ? -1 : 1;
});

return input;
}

Не могли бы вы привести пример того, как переписать скрипты модуля в классические скрипты? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...