【发布时间】:2015-09-11 16:23:09
【问题描述】:
如何在 actionscript 中从 MovieClip 中删除 EventListener?下面是我的示例代码。
import flash.events.MouseEvent;
import flash.geom.ColorTransform;
var color: ColorTransform = new ColorTransform();
color.color = 0x00CC66;
colorChange_mc.buttonMode = true;
colorChange_mc.addEventListener(MouseEvent.MOUSE_OVER, changeColor(color));
colorChange_mc.addEventListener(MouseEvent.MOUSE_OUT, changeColorToNormal);
function changeColor(color: ColorTransform): Function {
return function (e: MouseEvent): void {
colorChange_mc.transform.colorTransform = color;
}
}
function changeColorToNormal(e: MouseEvent): void {
var color: ColorTransform = new ColorTransform();
color.color = 0x000033;
colorChange_mc.transform.colorTransform = color;
}
changer_mc.buttonMode = true;
changer_mc.addEventListener(MouseEvent.MOUSE_DOWN, removeEvent);
function removeEvent(e: MouseEvent): void {
colorChange_mc.removeEventListener(MouseEvent.MOUSE_OVER, changeColor(color));
}
我在stage 上创建了两个MovieClips,colorChange_mc 有两个EventListeners,一个用于mouseDown,一个用于mouseOut。当按下 change_mc 按钮时,我想删除EventListener 之一。我能够在不将参数传递给 changeColor 函数的情况下删除EventListener。但在我的真实课堂中,这个参数起着至关重要的作用。
【问题讨论】:
-
如果使用类,您尝试做的所有事情都会非常容易。您的 colorChange_mc 可以是一个类的实例并在内部处理所有内容,而无需经历所有那些丑陋的黑客攻击。
标签: actionscript-3 mouseevent flash-cc