【发布时间】:2013-07-20 00:49:06
【问题描述】:
我遇到了这个问题: 我希望每次点击前。 picA,在我点击 picB 之后像这样
trace("Clicked picB after A");
注意:单击 picB 而不单击第一个 picA,或单击 picC 之类的其他位置,然后 picB 将不起作用
【问题讨论】:
标签: actionscript-3 events mouseevent mouselistener
我遇到了这个问题: 我希望每次点击前。 picA,在我点击 picB 之后像这样
trace("Clicked picB after A");
注意:单击 picB 而不单击第一个 picA,或单击 picC 之类的其他位置,然后 picB 将不起作用
【问题讨论】:
标签: actionscript-3 events mouseevent mouselistener
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");
}
【讨论】:
在同一函数 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,就像我在默认情况下所做的那样。
我认为这应该可以解决您的问题。
【讨论】: