Как импортировать файл JS в kotlin / JS - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь использовать ТРИ. js с kotlin / JS. Пока он прекрасно работает, но я борюсь за то, как импортировать gLTFLoader. Документация говорит, что я должен сделать:

import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';

In kotlin

@file:JsModule("three")
@file:JsNonModule

в начале файла работает.

Это

@file:JsModule("three/examples/jsm/loaders/GLTFLoader")
@file:JsNonModule
package mypackage

import org.w3c.xhr.XMLHttpRequest

external class GLTFLoader() {
    fun load(url: String, onLoad: (GLTF) -> Unit, onProgress: (XMLHttpRequest) -> Unit = definedExternally, onError: (dynamic) -> Unit = definedExternally)
}

external class GLTF {
    val scene: Group
}

не работает. И

@file:JsModule("@three/examples/jsm/loaders/GLTFLoader")

тоже не работает. В обоих случаях я получаю

Модуль не найден: Ошибка: невозможно разрешить '@ three / examples / jsm / loaders / GLTFLoader' в '/ my_project_dir / build / js / packages / z- index / kotlin '

Требуемый файл находится в /my_project_dir/build/js/node_modules/three/examples/jsm/loaders/GLTFLoader.js основной файл для Three. js, который, по всей видимости, можно найти, находится в /my_project_dir/build/js/node_modules/three/src/Three.js.

Как мне выполнить требуемый импорт?

1 Ответ

0 голосов
/ 18 апреля 2020

Вы должны использовать require для операторов, подобных тем, что в three.kt, задайте свои определения

@file:JsModule("three")
@file:JsNonModule
package mypackage

import org.w3c.xhr.XMLHttpRequest

external interface ThreeGLTFLoader() {
    fun load(url: String, onLoad: (GLTF) -> Unit, onProgress: (XMLHttpRequest) -> Unit = definedExternally, onError: (dynamic) -> Unit = definedExternally)
}

external interface GLTF {
    val scene: Group
}

, затем в three.dsl.kt define

val GLTFLoader : ThreeGLTFLoader = require("three/examples/jsm/loaders/GLTFLoader")

теперь вы можете использовать GTFLLoader

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