我有一个我开发的自定义组件,它是仪表板的一部分。
它基于作为组件一部分的计时器进行一些轮询。
当用户离开包含此组件的视图时,我想停止计时器,从而停止轮询。
我可以在视图发生变化时触发事件并在组件中捕获它,但我希望有可能在组件中包含所有内容。
在触发的组件中是否存在事件或状态更改,甚至当前是否显示组件?
提前感谢您的任何帮助或建议!
示例:
]]>
</mx:Script>
<mx:TabBar x="10" y="10" dataProvider="viewstack1">
</mx:TabBar>
<mx:ViewStack x="0" y="0" id="viewstack1" width="675" height="315">
<mx:Canvas label="View 1" width="100%" height="100%">
<mx:Button x="74" y="69" label="Button 1" width="429" height="185" removedFromStage="removeFromStageEvent()"/>
</mx:Canvas>
<mx:Canvas label="View 2" width="100%" height="100%">
<mx:Button x="74" y="69" label="Button 2" width="429" height="185" color="red"/>
</mx:Canvas>
</mx:ViewStack>
</mx:Application>
答案 0 :(得分:3)
removedFromStage
。
在显示对象即将从显示列表中删除时调度,直接或通过删除包含显示对象的子树。 DisplayObjectContainer类的两个方法生成此事件:removeChild()和removeChildAt()。
答案 1 :(得分:0)
修改强>
如果您要确定用户何时在View 1
中View 2
和ViewStack
之间切换,您可以向viewstack1
change
添加事件监听器事件。
<fx:Script>
<![CDATA[
protected function viewstack1_changeHandler(event:IndexChangedEvent):void
{
// Do Something
}
]]>
</fx:Script>
<mx:TabBar x="10" y="10" dataProvider="viewstack1" />
<mx:ViewStack x="0" y="0" id="viewstack1" width="675" height="315" change="viewstack1_changeHandler(event);">
<mx:Canvas label="View 1" width="100%" height="100%">
<mx:Button x="74" y="69" label="Button 1" width="429" height="185" />
</mx:Canvas>
<mx:Canvas label="View 2" width="100%" height="100%">
<mx:Button x="74" y="69" label="Button 2" width="429" height="185" color="red"/>
</mx:Canvas>
</mx:ViewStack>
如果您使用组件的visible
属性来确定它是否显示,您还可以在组件中使用hide
事件处理程序。
<local:MyComponent hide="hideHandler(event)">
<fx:Script>
<![CDATA[
protected function hideHandler(event:FlexEvent):void
{
// Do something here.
}
]]>
</fx:Script>
</local:MyComponent>
答案 2 :(得分:0)
您可以将focus events与不可见精灵的命中测试结合使用,该精灵涵盖整个阶段和/或视图/组件可见性(可能需要这些精灵链)。