【发布时间】:2024-01-22 17:48:01
【问题描述】:
我正在 Haxe 中创建一个用于 Flash 游戏的简单 UI 工具栏组件。 工具栏是您的通用 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);
}
}
}
我想知道这是一个好方法还是有更好的方法?
【问题讨论】:
标签: flash events event-handling haxe