Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex自定义组件、事件和范围_Apache Flex_Events_Scope - Fatal编程技术网

Apache flex Flex自定义组件、事件和范围

Apache flex Flex自定义组件、事件和范围,apache-flex,events,scope,Apache Flex,Events,Scope,我开始放弃Flex论坛,所以我会在这里重新发布,看看事情进展如何。长期潜伏者,第一次海报;-) 我在舞台上捕捉键盘事件,并通过一个框架发送自定义事件(Mate,虽然我不知道这是一个重要的问题),但我对范围感到非常困惑。结构如下: --应用程序(捕获键盘事件并分派自定义事件) -- mainPanel (receives dispatched events but mainCalendar (a child element) is null on debugging. Obviou

我开始放弃Flex论坛,所以我会在这里重新发布,看看事情进展如何。长期潜伏者,第一次海报;-)

我在舞台上捕捉键盘事件,并通过一个框架发送自定义事件(Mate,虽然我不知道这是一个重要的问题),但我对范围感到非常困惑。结构如下:

--应用程序(捕获键盘事件并分派自定义事件)

 --  mainPanel (receives dispatched events but mainCalendar (a child element) 
     is null on debugging. Obviously if I try to call a public method on 
     mainCalendar it errors out, even though it's a child of mainPanel. 
     However, mainCalendar is NOT null IF I use 
     FlexGlobals.topLevelApplication.mainPanel.mainCalendar.
     Outerdocument and parentDocument do not expose mainCalendar either, BTW

     --  mainCalendar (a custom component inside mainPanel with public methods. 
         Creation policy is 'all' and it's visible and exists long before I 
         trap any keystrokes at the top level)
有人能花点时间解释一下为什么mainPanel接收到自定义事件时mainCalendar不在范围内,即使mainCalendar是mainPanel的子级。有没有更好的方法来管理事件,这样我就不必总是通过topLevelApplication对组件进行寻址

谢谢

(创建答案以便将此问题标记为已回答)
通常,当对组件的引用为空且不应为空时,这意味着尚未创建组件。这可能在应用程序
初始化
事件之前发生,或者组件的父级不可见且未验证。

(创建答案以便将此问题标记为已回答)

通常,当对组件的引用为null且不应为null时,这意味着尚未创建组件。这可能在应用程序
初始化
事件之前发生,或者如果组件的父级不可见且未经验证。

看起来不像范围问题,更多的是时间问题。当组件为null时,您使用哪个事件?(是在
initialize
event之前还是之后?)alxx是正确的;可能是当您第一次尝试访问mainCalendar时,mainCalendar尚未创建。即使触发initialize,也可能是Flex尚未创建它(例如,如果组件不可见)你说你不应该访问topLevelApplication是对的。这正是事件的用途:任何组件都可以侦听任何事件。但是,由于我不知道你到底想做什么,我只能向你指出。另外,由于你使用的是Mate,我猜它也有一些事件处理功能,因此你可能ant也可以阅读上面的内容。感谢您的建议。激发的事件是通过Mate eventmap从另一个组件发送的自定义事件,目标组件可以很好地接收到它。如果是时间问题,我希望这在组件生命周期的早期是个问题,但是这会在使用whi的日历之后很久发生ch I'm working已被使用,包括拖放。因此我知道主日历是创建的,因为我在捕捉击键之前很久就与它进行了一些交互,试图模仿我已经在使用上下文菜单进行的操作。不过,我很欣赏这些评论。从技术上讲,
mainPanel.mainCalendar
mainPanel的一个属性,不一定是子项。是否已初始化?是否在某个时刻将其覆盖为null?自定义事件本身不应导致引用丢失。这看起来不像范围问题,更多的是计时问题。当组件为null时,您使用哪个事件?(是在
初始化
事件之前还是之后?)alxx是正确的;可能是当您第一次尝试访问mainCalendar时,它尚未创建。即使在触发initialize之后,也可能是Flex尚未创建它(例如,如果组件不可见)你说你不应该访问topLevelApplication是对的。这正是事件的用途:任何组件都可以侦听任何事件。但是,由于我不知道你到底想做什么,我只能向你指出。另外,由于你使用的是Mate,我猜它也有一些事件处理功能,因此你可能ant也可以阅读上面的内容。感谢您的建议。激发的事件是通过Mate eventmap从另一个组件发送的自定义事件,目标组件可以很好地接收到它。如果是时间问题,我希望这在组件生命周期的早期是个问题,但是这会在使用whi的日历之后很久发生ch I'm working已被使用,包括拖放。因此我知道主日历是创建的,因为我在捕捉击键之前很久就与它进行了一些交互,试图模仿我已经在使用上下文菜单进行的操作。不过,我很欣赏这些评论。从技术上讲,
mainPanel.mainCalendar
mainPanel的一个属性,不一定是子项。它是否已初始化?是否在某个时刻被覆盖为null?自定义事件本身不应导致引用丢失。我同意,并且,暗示我,在调用问题函数之前,我与之进行可视化交互的日历实例必须是(我在想)与原始日历不同的日历实例,但这是另一个问题的主题。谢谢。我同意,并且,暗示我,在调用问题函数之前,我与之进行可视化交互的日历实例必须是(我在想)与原始日历不同的日历实例,但这是另一个问题的主题。谢谢。