Я читал о гидродинамике и наткнулся на это отличный проект. После его создания я заметил, что небольшое меню опций, которое появляется в демо, не отображается.
Итак, поскольку я новичок в 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!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Самое простое решение, которое я могу придумать, это добавить это в init() (при условии, что .js находится в корне проекта):
haxe.macro.Compiler.includeFile("dat.gui.min.js");
includeFile() — это макрос, который напрямую встраивает файл в .js, сгенерированный Haxe (по умолчанию в верхней части файла). Этого достаточно, чтобы пользовательский интерфейс отображался для меня:

Альтернативой может быть добавление тега <script> к файлу index.html, как задокументировано здесь. Я недостаточно знаком с инструментом построения потока, чтобы знать, что делается в этом случае, но вам нужно найти способ:
index.html, чтобы включить тег <script>min.js в каталог bin/web.Так что да, includeFile() определенно кажется более удобным вариантом. :)