【问题标题】:Event Handling For Toolbar Using Haxe Targeting Flash使用 Haxe Targeting Flash 的工具栏事件处理
【发布时间】: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


    【解决方案1】:

    解决了。 使用了自定义事件和事件调度器。

    【讨论】:

      最近更新 更多