--- front: hard: 入门 time: 12分钟 --- # 输入捕获 ## 介绍 有的时候需要玩家输入一些功能 比如想点击按钮后输入某个值 然后根据这个值进行操作 TabooLib基于Kotlin的函数式编程风格写了几个工具供你使用 ## 基于告示牌捕获 ```kotlin player.inputSign(arrayOf("", "", "请在第一行输入内容")) { line -> // line 是输入完成后的内容 val name = line.getOrNull(0) println("输入的内容是 $name") } ``` ## 基于书本的内容捕获 ```kotlin /** * 向玩家发送一本书 * 并捕获该书本的编辑动作 * * @param display 展示名称 * @param disposable 编辑后销毁 * @param content 原始内容 * @param catcher 编辑动作 */ fun Player.inputBook(display: String, disposable: Boolean = true, content: List = emptyList(), catcher: (List) -> Unit) player.inputBook("书本名称", true, listOf("原始内容")) { book -> //book 是编辑后的书本 println("输出第一页内容") println(book[0]) } ``` ## 基于聊天框捕获 ```kotlin player.nextChat { // it 是玩家输入的内容 println("玩家输入了 $it") } player.nextChatInTick(20 * 5, { // it 是玩家输入的内容 println("玩家输入了 $it") }, { // 超时回调 println("超时了") }, { // 取消回调 println("取消了") }) ``` ## 拓展 - 铁砧捕获 利用了UI模块 具体实现还请自行编写 ```kotlin player.openMenu("输入内容"){ onRename { player, s, inventory -> // s 是玩家输入的内容 println("玩家输入了 $s") } } ```