我正在尝试在使用Swiz进行依赖注入的AIR 2.7应用程序中实现弹出窗口(NativeWindowType.UTILITY)。
我遵循了Swiz的指导方针,我已经能够找到,并在创建窗口的类上实现了ISwizAware,我在打开窗口之前调用_swiz.registerWindow(),在此之后依赖注入在窗口本身上工作得很好。
然而,我遇到的问题是,我在该窗口内有一个子视图,并且我有一个使用[ViewAdded]和[ViewRemoved]标签的中介。添加视图和删除视图的函数都没有触发。我认为问题是:
- 子视图没有正确注册Swiz。
- swiz实例不知道bean(我尝试手动添加bean,但是没有任何效果)。
- ViewAdded和ViewRemoved元数据标签根本不起作用,因为每个NativeWindow对象都有自己的stage instance。
有人知道更多关于这个吗?
弹出窗口是一种特殊情况,因为它们不会被添加到与应用程序相同的显示树下。在Stage (Flash Player的主要包装器)下,您将有应用程序,其中您的代码驻留在Swiz,但Popup是在应用程序之上的一个单独的层。因为他们是兄弟姐妹,当弹出窗口被添加到舞台时,Swiz无法监听。
解决这个问题的方法是手动设置弹出窗口的属性(这通常是最简单的方法)或手动将弹出窗口添加到Swiz的感知。关于这一点,您必须查看文档,因为我已经很长时间没有接触Swiz了。