【问题标题】:Actionscript 3 - Add Mouse listener inside Mouse listener?Actionscript 3 - 在鼠标监听器中添加鼠标监听器?
【发布时间】:2013-07-20 00:49:06
【问题描述】:

我遇到了这个问题: 我希望每次点击前。 picA,在我点击 picB 之后像这样

trace("Clicked picB after A");

注意:单击 picB 而不单击第一个 picA,或单击 picC 之类的其他位置,然后 picB 将不起作用

【问题讨论】:

    标签: actionscript-3 events mouseevent mouselistener


    【解决方案1】:
    stage.addEventListener(MouseEvent.CLICK,onStageClick)
    
    
    private function onStageClick(e:MouseEvent):void 
    {
        // to have only one PicB listener use removeEventListener before adding
        picB.removeEventListener(MouseEvent.CLICK,onPicBClick) 
        if(e.target === picA){
            picB.addEventListener(MouseEvent.CLICK,onPicBClick)
        }
    }
    
    private function onPicBClick(e:MouseEvent):void 
    {
        picB.removeEventListener(MouseEvent.CLICK, onPicBClick)
        trace("Clicked picB after A");
    }
    

    【讨论】:

      【解决方案2】:

      在同一函数 onClick 中为您想要的所有图片添加侦听器。像这样

        picA.addEventListener(MouseEvent.CLICK, onClick);
        picB.addEventListener(MouseEvent.CLICK, onClick);
        picC.addEventListener(MouseEvent.CLICK, onClick);
        picD.addEventListener(MouseEvent.CLICK, onClick);
      

      取一个布尔变量,定义是否最近点击了 picA

        var isAClicked:Boolean = false;
      
       function onClick(e:MouseEvent):void
      {
      switch (e.currentTarget.name)
      {
          case 'picA' :
              isAClicked = true;
              break;
          case 'picB' :
              if (isAClicked)
              {
                  trace("Clicked picB after A");
              }
              else
              {
                  isAClicked = false;
              }
              break;
          default :
              isAClicked = false;
              break;
         }
      }
      

      如果单击 picA,则将布尔值设置为 true,如果接下来单击 picB,则检查最近是否单击了 picA。如果是,那么您可以做任何您想做的事情,否则将布尔值设置为 false。如果单击任何其他图片,则只需将布尔值设置为 false,就像我在默认情况下所做的那样。

      我认为这应该可以解决您的问题。

      【讨论】:

      • 那么,如果您有数百个对象怎么办?您的 switch 语句将按比例增长.. 不是最好的解决方案
      • switch 永远不会增长,因为所有其他情况都将默认处理 case...
      猜你喜欢
      • 2014-12-13
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多