ActionScript3的:removeEventListener与功能参数参数、功能、removeEventListener

2023-09-08 14:55:42 作者:一整个雨季

如何删除事件监听器影片剪辑的动作?下面是我的示例code。

how can i remove EventListener from MovieClip in actionscript? Below is my sample code.

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));

  }

我创建了两个影片剪辑 S上的,colorChange_mc有两个事件监听器■一个用于 MOUSEDOWN ,一个是的mouseout 。当change_mc按钮为pressed我想删除事件监听器之一。我能够删除事件监听器不传递参数changeColor功能。但我真正的类此参数起着至关重要的作用。

I created two MovieClips on the stage , colorChange_mc has two EventListeners one for mouseDown and one for mouseOut. When change_mc button is pressed I want to remove one of the EventListener. I was able to remove EventListener without passing parameter to changeColor function. But in my real class this parameter plays crucial role.

推荐答案

使用一类变种,而不是 - 一个你已经在你的code。要保持挺直我创建了第二个的ColorTransform 作为一类变种 - NORMALCOLOR

Use a class-var instead - one you have already in your code. To keep straight I created a second ColorTransform as a class-var - normalColor

import flash.events.MouseEvent;
import flash.geom.ColorTransform;    
var color: ColorTransform = new ColorTransform();
color.color = 0x00CC66;
var normalColor: ColorTransform = new ColorTransform();
normalColor.color = 0x000033;
colorChange_mc.buttonMode = true;
colorChange_mc.addEventListener(MouseEvent.MOUSE_OVER, changeColor);
colorChange_mc.addEventListener(MouseEvent.MOUSE_OUT, changeColorToNormal);

function changeColor(e:MouseEvent): void{

    colorChange_mc.transform.colorTransform = color;

}

function changeColorToNormal(e:MouseEvent): void {

    colorChange_mc.transform.colorTransform = normalColor;
}


changer_mc.buttonMode = true;

changer_mc.addEventListener(MouseEvent.MOUSE_DOWN, removeEvent);
function removeEvent(e:MouseEvent): void {
    colorChange_mc.removeEventListener(MouseEvent.MOUSE_OVER,  changeColor);
}

问候。