Actionscript 3 - 在Mouse侦听器中添加鼠标侦听器?

时间:2013-07-21 00:35:50

标签: actionscript-3 events mouseevent mouselistener

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

trace("Clicked picB after A");

注意:点击picB而不点击第一张picA,或点击其他地方如picC,然后picB将无效

2 个答案:

答案 0 :(得分: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");
}

答案 1 :(得分:0)

在同一个函数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,则将boolean值设置为true,如果单击picB,则检查最近是否单击了picA。如果是,则执行任何操作,否则将布尔值设置为false。如果单击任何其他图片,那么您只需将布尔值设置为false,就像我在默认情况下那样。

我认为这可以解决你的问题。