当我编译当前代码时,抛出了上述异常。而且我不知道如何解决它,这意味着什么。
我的代码:
textButton {
position(0, 128)
text = "Play"
onClick {
println("Play")
launchImmediately {
sceneContainer.changeTo<ChooseCampaign>()
}
}
}
如何解决?
最佳答案
在KorGE中使用场景时,您将间接使用korinject
依赖项注入(inject)器。
而且该注入(inject)器需要手动映射。如果使用模块,则可以在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 {
块中,您注入(inject)了Stage
单例。这是对Views
单例的引用的根 View 。因此,您可以像这样访问注入(inject)器:
this.views.injector
然后,您可以随时根据需要映射场景,尽管我建议您在应用程序开始时进行操作。