#javascript #html #aframe
#javascript #HTML #aframe
Вопрос:
Я пытаюсь зарегистрировать компонент aframe в файле js, который включен из базового файла html. Компоненты регистрируются правильно, когда в html внутри тегов скрипта, но не регистрируются, когда в файле js.
пример кода в html:
<html lang="en-US">
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
<head>
<meta charset="utf-8">
<title>Gravity Puzzle</title>
<meta name="description" content="">
<script src="dist/aframe-v0.3.0.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body>
<a-scene id="scene">
<script>
AFRAME.registerComponent('mouse-click-listener', {
init: function () {
var el = this.el;
window.addEventListener('click', function () {
console.log("click");
el.emit('click', null, false);
});
}
});
</script>
<a-sky id="sky" color="#AAAACC"></a-sky>
<a-entity id="cameraRoot" mouse-click-listener position="2 0.5 2" rotation="0 225 0">
<a-entity id="myCamera" camera acceleration look-controls keyboard-controls>
</a-entity>
</a-entity>
</a-scene>
</body>
</html>
Пример кода в файле js:
function initialise()
{
AFRAME.registerComponent('mouse-click-listener', {
init: function () {
console.log("registered");
var el = this.el;
window.addEventListener('click', function () {
console.log("click");
el.emit('click', null, false);
});
}
});
}
window.onload = initialise;
Обратите внимание, что «зарегистрированный» текст не отображается в консоли браузера.
Чего мне не хватает?
Ответ №1:
Лучше всего размещать тег script после-Frame перед сценой.
<head>
<meta charset="utf-8">
<title>Gravity Puzzle</title>
<meta name="description" content="">
<script src="dist/aframe-v0.3.0.js"></script>
<script src="mycomponent.js></script>
</head>
И не нужно переносить или ждать загрузки:
AFRAME.registerComponent('mouse-click-listener', {
init: function () {
console.log("registered");
var el = this.el;
window.addEventListener('click', function () {
console.log("click");
el.emit('click', null, false);
});
}
});
}
Комментарии:
1. Спасибо! Это решение работает. У меня также был запущен webpack в моем коде. Даже если бы я удалил свой код из функции инициализации, webpack продолжил бы и остановил выполнение. Итак, я удалил всю регистрацию компонентов в отдельный файл, как показано в приведенном выше ответе, и теперь все работает правильно!