mohuang521
写了一个简单的GUI界面,玩家放入物品后点击确认时候会跳到另一个GUI界面,但是这相当于之前的GUI界面关闭了,因为之前防止GUI界面吞物品所以写了一个关闭事件如果关闭了这个特定的GUI界面物品会还给玩家,有没有办法暂时保存那些物品等第二个GUI界面操作执行完了再回到第一个GUI界面
流程如下
玩家打开GUI-A放入物品,点击确定跳到GUI-B(GUI-A中的物品不会还给玩家),玩家在GUI-B中点击确认的话会执行一些东西(例如清空GUI-A物品并执行某些操作),如果点击GUI-B中的取消的话会回到GUI-A并且GUI-A中的物品完好摆放

q549365815
把这些数据放到一个Map中  任何后续操作都修改这个Map

Dante_7
都跟你说了就是不听, 创建一个类, 包含两个 Inventory 对象, 然后在这个类里单独写一个监听器, 这个监听器只关心这两个 Inv 对象的动作, 不关心别的. 然后在类中弄一个变量, 用作控制监听器的行为, 监听器通过读写这个变量来决定保存与否, 关闭还是退回上一个界面.

用箱子界面搞 GUI 最不能把 Inventory 当成界面来操作, 因为你根本无法往 inv 里添加字段, 也无法让它和其他的 inv 产生关系, 而且没有包装的类你监听器只能堆在一起, 界面多了就得 equals 一个一个判断界面名字, 可读性极差, 可维护性=0.

你要是非不愿意创建一个统一的 GUI 类也行, 弄个公共变量也能存数据. 不过就是代码看着比较烂而已

Dante_7
http://www.mcbbs.net/thread-693784-1-1.html
我在第三点说的就非常明确, 要单独的监听器, 不要统一的监听器, 好好读帖

创建一个新的类又不麻烦, 你在里面写一个数组, 保存数据, 爱怎么折腾怎么折腾, 愿意持久化保存直接在类里面些方法就行了, 这么好的解决方案你怎么就是不听呢

而且你今年二战, 别写插件了, 耽误时间. 别指望这些人能感谢你


q549365815
http://www.mcbbs.net/thread-774705-1-1.html

第一页 上一页 下一页 最后一页