如何保存事件监听器

时间:2017-07-09 16:58:06

标签: actionscript-3

我试图使用共享对象,但我不知道 我如何保存事件监听器(例如,如果之前已经删除了鼠标事件) 保存)。          让我们说" 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
       } 
  • 阿米尔,对不起,我刚看到你的答案,但我不知道如何使用 完整项目中的代码示例。我尝试了以下代码(请参阅编辑)。虽然看起来不是很优雅,但它确实很有用,特别是如果我将它用于我拥有的所有听众。你能举个例子吗?谢谢!*

        EDIT
    //public class
     var hiton:Boolean;
       //initialization
       hiton = true;
    
       boxHit.panel.addEventListener(MouseEvent.CLICK, onBoxPanel);
      boxHit.addEventListener(MouseEvent.CLICK, onBoxHit);
      saveBtn.addEventListener(MouseEvent.MOUSE_DOWN, onSaveBtn);
      loadBtn.addEventListener(MouseEvent.MOUSE_DOWN, onLoadBtn);
    
           // functions
       function onBoxPanel(event:MouseEvent):void
           {
         hiton = false;
                   }
    
       function onBoxHit(event:MouseEvent):void
           {
          if(hiton){
          //do something
                   }
               }
    
     function onSaveBtn(event:MouseEvent):void
           {
          sharedObject.data.hitData = hiton;
            }
    
       function onLoadBtn(event:MouseEvent):void
          {
         hiton = sharedObject.data.hitData;
            }
    

2 个答案:

答案 0 :(得分:1)

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

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

sharedObject.data.levData = EventExists;

答案 1 :(得分:0)

您不应该以您描述的方式为共享对象中的某些按钮“保存”您的事件侦听器;你必须从错误的角度接近这个。

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

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