Как сослаться на библиотеку JavaScript в Haxe

Я читал о гидродинамике и наткнулся на это отличный проект. После его создания я заметил, что небольшое меню опций, которое появляется в демо, не отображается.

Итак, поскольку я новичок в Haxe, я подумал, что добавление небольшой панели параметров графического интерфейса будет большой проблемой при попытке познакомиться с Haxe. Тем не менее, я столкнулся с первым препятствием, поскольку я получаю следующую ошибку при попытке создать графический интерфейс, который находится поверх эксперимента с жидкостью, как показано в демонстрации:

Uncaught ReferenceError: dat is not defined

Внутри каталога маршрутов проектов у меня есть папка src, затем Main.hx; внутри Main.hx внизу функции init() я делаю следующее:

import dat.GUI;

function init():Void {
    //other unrelated code goes here

    var gui = new dat.GUI({autoPlace: true});
    //particle count
    var particleCountGUI = gui.add(particles, 'count').name('Particle Count').listen();
}

Когда я запускаю программу, консоль печатает указанную ошибку.

Что я сделал:

Внутри project.flow в каталоге маршрута я сделал ссылку на dat в зависимостях сборки (и, конечно же, скачал dat.gui).

Я даже пытался использовать другие фреймворки для создания графического интерфейса, но я продолжаю получать ошибки в журнале консоли, даже если сборка прошла успешно. Мне удалось добавить панель, но вместо того, чтобы сидеть поверх эксперимента с жидкостью, она опустила все это вниз, так что между панелью и экспериментом с жидкостью было пространство.

В идеале я хочу воссоздать панель параметров, показанную в демонстрации, но вместо этого сделать ее прокручиваемым списком. Однако сначала мне нужно понять, почему у меня проблемы с dat!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самое простое решение, которое я могу придумать, это добавить это в init() (при условии, что .js находится в корне проекта):

haxe.macro.Compiler.includeFile("dat.gui.min.js");

includeFile() — это макрос, который напрямую встраивает файл в .js, сгенерированный Haxe (по умолчанию в верхней части файла). Этого достаточно, чтобы пользовательский интерфейс отображался для меня:

Альтернативой может быть добавление тега <script> к файлу index.html, как задокументировано здесь. Я недостаточно знаком с инструментом построения потока, чтобы знать, что делается в этом случае, но вам нужно найти способ:

  • измените шаблон index.html, чтобы включить тег <script>
  • заставьте его скопировать min.js в каталог bin/web.

Так что да, includeFile() определенно кажется более удобным вариантом. :)

Другие вопросы по теме