1

com.soywiz.korinject.AsyncInjector$NotMappedException: 类 'class ChooseCampaign (Kotlin 反射不可用)' 没有构造函数 RequestContext(initialClazz=class ChooseCampaign (Kotlin 反射不可用))

当我编译当前代码时抛出了上述异常。而且我不知道如何修复它以及它意味着什么。
我的代码:

textButton {
            position(0, 128)
            text = "Play"
            onClick {
                println("Play")
                launchImmediately {
                    sceneContainer.changeTo<ChooseCampaign>()
                }
            }
        }

它是如何修复的?

4

1 回答 1

2

在 KorGE 中使用场景时,您是在korinject间接使用依赖注入器。

而且那个喷油器需要手动映射。如果您使用的是模块,则可以在Module.init方法中配置这些映射。

检查此示例:https ://github.com/korlibs/korge-samples/blob/1771b7ca7f4440e1a368ff4b441e97bf62e08b8d/sample-scenes/src/commonMain/kotlin/main.kt#L15-L23

就您而言,一旦获得Injector实例,就可以像这样映射场景:

mapPrototype { ChooseCampaign(get()) }

您必须放置与构造函数一样多get()的参数ChooseCampaign

在不使用模块的情况下,放置映射的位置不同,需要获取Injector实例。

在您的suspend fun main() = Korge {块中,您Stage注入了单例。这是引用Views单例的根视图。

所以你可以像这样访问注入器:this.views.injector

然后,您可以随时映射您的场景,但我建议您在应用程序开始时进行映射。

于 2020-06-03T20:45:08.230 回答