设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 322|回复: 1
打印 上一主题 下一主题

[有事请教] 如何在选中道具分类的情况下直接用左右键切换分类?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4423
在线时间
1310 小时
注册时间
2022-7-25
帖子
65

极短23参与极短22参与

跳转到指定楼层
1
发表于 2024-5-18 22:37:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 Hamstachio 于 2024-5-18 22:37 编辑

◾️需求
比如道具菜单里有4个分类,每个分类中有一些道具。
正常情况下选中某个分类以后想要切换到其它分类,
必须先按取消回到上一级菜单,这样就很不方便。
理想的状态是在选中某个分类后按下左右键,取消当前的分类选择并切换到新的分类,
然后光标移动到切换后的分类中的第一个物品,自动选中该物品并显示道具信息。
(显示道具用单列,所以不存在需要左右键选择列数的情况)

◾️尝试过的方法(未使用插件,直接在源代码上试的)
・方法A:在选中道具分类后按下左右键时,先执行取消选择然后再移动
・方法A的问题:
 1. 移动到新分类时,道具虽然是选择状态,但是不显示道具信息,按OK键后会有一瞬间显示道具信息,然后直接使用道具
 2. 移动到新分类时,选项框不会重置到开始的位置,如果从道具多的分类移动到道具少的分类,就会出现选项框停在空白处的情况这两个问题都是按一下上下键就能解决的,但还是不太舒服。

・方法B:在A的基础上最后强制执行一下OK键
・方法B的问题:
 解决的选项框不重置的问题,也显示道具信息了,但——
 切换至新分类后显示的道具信息不是选中的道具,而是旧分类中的第一个物品,
 似乎是分类没有刷新的关系,但是目前还没研究出怎么刷新分类。

◾️希望得到的帮助:
1. 有能直接实现需求的插件是最好的,希望能推荐一下
2. 在代码层面帮忙解答一下问题,比如该调用什么方法,或者问题出在哪之类的
3. 愿意直接动手帮我实现功能的话请私信联系(有偿)
4. 求推荐个RMMZ的技术群

Lv4.逐梦者

梦石
0
星屑
7289
在线时间
475 小时
注册时间
2021-12-4
帖子
514
2
发表于 2024-5-19 22:31:21 | 只看该作者
试着写了一下楼主说的功能,虽然只用了几行但是遇到了和楼主一样的问题……
Window_ItemList.prototype.maxCols = () => 1;
Window_ItemList.prototype.cursorLeft = function(wrap) {
    let w = SceneManager._scene._itemWindow.parent.children[2];
    w._index = (w._index + w._list.length - 1) % w._list.length;
    SceneManager._scene._itemWindow._index = 0;
}
Window_ItemList.prototype.cursorRight = function(wrap) {
    let w = SceneManager._scene._itemWindow.parent.children[2];
    w._index = (w._index + 1) % w._list.length;
    SceneManager._scene._itemWindow._index = 0;
}
这样写的话按方向键切换分类以后有三个问题:
一是对于不持有任何道具的分类不生效(比如说一开始没有重要物品的话在重要物品分类下按左右方向键没有反应,从其他分类切换过去也不能再继续切换)
二是上方四个按钮里亮着的依然是旧分类(但是按ESC取消以后是正常的)
三是新分类中光标在逻辑上虽然指向的是新分类的第一个道具(按一下down键后会指向第二个),但光标的显示位置以及底部的帮助窗口都没有立即刷新
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 09:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表