使 Event 参数可选,resizeListener(e:Event=null)
就像 walkietokyo 的答案一样,是一个完全有效且通常方便的解决方案。另一种选择是将您希望在不触发事件的情况下执行的操作放在单独的函数中,该函数可以由事件处理程序调用,也可以从其他任何地方调用。
因此,例如,假设您想要在调整大小时重新排列布局,并且您还想在初始化时或单击按钮时或任何时候进行相同的布局设置,您可以执行以下操作:
stage.addEventListener(Event.RESIZE, resizeListener);
function resizeListener(e:Event):void {
rearrangeLayout();
}
function rearrangeLayout():void {
// The actual rearrangement goes here, instead of in resizeListener. This can be called from anywhere.
}
采用哪种方法可能是个人喜好问题,也可能因情况而异,实际上,两者都可以。
将事件处理程序和另一个函数中的内容分开的一个好处是,不会出现您必须检查 e:Event 参数是否为空的情况。换句话说,您将在事件处理程序中拥有依赖于事件(如果有)的代码,并在更通用的函数(不是事件处理程序)中拥有独立于事件的代码。
因此,在更一般和示意性的情况下,结构将是这样的:
addEventListener(Event.SOME_EVENT, eventListener);
function eventListener(e:Event):void {
// Code that needs the Event parameter goes here (if any).
// Call other function(s), for the stuff that needs to be done when the event happens.
otherFunction();
}
function otherFunction():void {
// Stuff that is not dependent on the Event object goes here, an can be called from anywhere.
}