如何保存事件监听器

how to save event Listeners

我正在尝试使用共享对象,但我不知道 我如何保存事件侦听器(例如,如果之前已经删除了鼠标事件 保存)。 假设 "onThis" 函数删除鼠标事件

    function onThis(event:MouseEvent):void
    {
    levAll.theLev.gotoAndStop(2);
    boxAll.levHit.removeEventListener(MouseEvent.CLICK, onLevHit);
     }
    //save function
    function onSaveBtn(event:MouseEvent):void
        {
    sharedObject.data.levData = levAll.theLev.currentFrame;
    // save that boxAll.levHit mouse event removed
        }
    //load function
    function onLoadBtn(event:MouseEvent):void
        {
     levAll.theLev.gotoAndStop(sharedObject.data.levData);
    // load that boxAll.levHit mouse event removed
       } 

我不确定我是否完全理解它,但也许

var EventExists:Boolean ;
EventExists=boxAll.hasEventListener(MouseEvent.CLICK);

sharedObject.data.levData = EventExists;

您永远不需要 "save" 您的事件侦听器以您描述的方式共享对象中的某些按钮;你一定是从错误的角度来处理这个问题。

很难说你应该做什么,因为你还没有真正解释你想要完成什么,你的变量名和函数名也没有意义。但是,一般来说,您要做的是保存按钮交互的对象的状态,并根据该状态添加或删除事件侦听器。

function onThis(event:MouseEvent):void
{
    levAll.theLev.gotoAndStop(2);
    boxAll.levHit.removeEventListener(MouseEvent.CLICK, onLevHit);
    boxAll.levHit.wasClicked = true;
 }

function onSaveBtn(event:MouseEvent):void
{
    sharedObject.data.levData = levAll.theLev.currentFrame;
    sharedObject.data.clickedLevHit = boxAll.levHit.wasClicked;
}

function onLoadBtn(event:MouseEvent):void
{
    hiton = sharedObject.data.hitData;
    if (!sharedObject.data.clickedLevHit) {
        boxAll.levHit.addEventListener(MouseEvent.CLICK, onLevHit);
    }
}