起始的时候,程序的事件是通过firePropertyChanged来触发的,后来想改成脚本动态配置游戏框架,显然不能在代码指定哪个键/按钮对应什么事件。因为我只接触过Eclipse的插件和对java键盘绑定的一些了解,所以我就顺着感觉,按自己的理念做了一个动态加载框架。
按键 --触发--> Action: 这个是使用了Java的按键绑定 InputMap & ActionMap
按钮 --触发--> Action: 这个关联是手工做的,通过ActionID关联具体Action,就是JButton.setAction(),当然组件的创建是在解释器ScriptLoader中完成的。
共享Actions : 建立1个全局静态ActionMap,所有事件加载的时候都添加到里面actionMap.put(id,action),后面的控件就能根据ID获得对应的Action,这个必须按加载的先后顺序,否则无法共享处理代码。
描述HotKey的XML格式:
<HotKey keycode="W" mask="alt" actionID="com.jmhxy.dialogs.人物状态"/>
描述Button的XML格式:
<Button actionID="com.jmhxy.dialogs.人物状态" x="106" y="3" was="/Resources/WindowElement/人物头像/飞燕女.was" />
描述Action的XML格式:
<Action id="com.jmhxy.dialogs.人物状态" class="com.jmhxy.actions.HotKeyActions" />
就这样通过id将事件与目标关联起来,至于解释器,就是分析XML元素和属性,通过类反射加载处理类,再获得实例。