我正在 Haxe 中创建一个简单的 UI 工具栏组件,用于 Flash 游戏。工具栏是您的通用 UI 样式工具栏,它有一个背景和几个按钮。单击按钮时,会发生一些游戏动作。
我有一个关于为工具栏按钮实现事件的最佳方法的问题。父类将创建一个工具栏,然后在单击事件的按钮上注册它想要的任何功能。
我目前的解决方案如下所示:
- 工具栏扩展了精灵类。
- 工具栏类的每个按钮都有一个子精灵。
- 每个按钮都有一个 MouseEvent.Click 事件的事件监听器。
- MouseEvent.Click 由工具栏上的函数处理,该函数检查动态类型数组并执行数组中包含的每个函数。
- 动态类型数组是公共的,因此任何想要在单击事件上注册到工具栏按钮的类都可以将它们的回调函数添加到数组中。
具有工具栏的场景的代码片段
this.toolbar = new ToolBar();
this.toolbar.OnAttackButtonClicked.push(OnAttackButtonClicked);
用于在工具栏中创建按钮的代码片段
this.attackButton = new Sprite();
this.attackButton.addEventListener(MouseEvent.CLICK, this.OnAttackButtonClickListener);
工具栏中按钮单击处理程序的代码片段
private function OnAttackButtonClickListener(event : MouseEvent) : Void
{
if (this.OnAttackButtonCallbacks != null)
{
var index:Int = this.OnAttackButtonCallbacks.length;
while (index-- > 0)
{
this.OnAttackButtonCallbacks[index](event);
}
}
}
我想知道这是否是一个好方法或者是否有更好的方法来做到这一点?