Uncaught TypeError: Невозможно прочитать свойство 'create' из неопределенного при написании Kotlin Wrapper для material.js - PullRequest
0 голосов
/ 11 ноября 2019

Я хочу использовать material.js в одном из моих проектов kotlin / JS. Для этого я использую оболочку с внешними ссылками на классы material.js. Тестовый файл для воспроизведения ошибки находится здесь:

package engineEmi

import org.w3c.dom.CanvasRenderingContext2D
import org.w3c.dom.HTMLElement
import kotlin.browser.document
import kotlin.browser.window

external object Matter {
    val engine : Engine
    val render : Render
    val world : World
    val bodies : Bodies
}

external class Engine{
    fun create() : Engine
    fun run(engine : Engine)
    val world : World
}

external class Render{
    fun create(body: HTMLElement?, y : Engine) : Render
    fun run(render : Render)
}

external class Bodies{
    fun rectangle(posX : Int, posY : Int, width: Int, height: Int) : Body
}

external class Body{
}

external class World{
    fun add(world: World, elements : Array<Body>)
}

object EngineEmi{
    fun main() {
        var World = Matter.world
        var Bodies = Matter.bodies

        var engine = Matter.engine.create()
        var render = Matter.render.create(document.body, engine)

        var boxA = Bodies.rectangle(400, 200, 80, 80);
        var boxB = Bodies.rectangle(450, 50, 80, 80);

        World.add(engine.world, arrayOf(boxA, boxB))

        Matter.engine.run(engine)
        Matter.render.run(render)
    }
}

Он хорошо компилируется, но выдает в браузере следующую ошибку:

Uncaught TypeError: Невозможно прочитать свойство 'create' изне определено в EngineEmi.main (engineEmi.js: 449) в main (engineEmi.js: 28) в engineEmi.js: 505 в engineEmi.js: 508 EngineEmi.main @ engineEmi.js: 449 main @ engineEmi.js: 28 (анонимный) @ engineEmi.js: 505 (анонимный) @ engineEmi.js: 508

Но я считаю, что engine четко определен и должен быть связан с внешним классом JS.

Может ли кто-нибудь помочь здесь?

РЕДАКТИРОВАТЬ:

Для справочных целей: Это реализация JS Engine с методом .create (): ССЫЛКА НА GITHUB

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