是否有任何方法检测用户是否在MovieClip?之外单击?
例如,我需要检测它来关闭先前打开的菜单(如菜单栏样式:文件、版本、工具、帮助等)。

我怎样才能发现这类事件?谢谢!
发布于 2011-09-30 17:50:07
添加一个侦听器到舞台,并检查stage是否是事件的目标。
这里的代码示例:http://wonderfl.net/c/eFao
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class FlashTest extends Sprite
{
private var _menu : Sprite;
public function FlashTest()
{
_menu = new Sprite();
_menu.x = 100;
_menu.y = 100;
_menu.alpha = 0.5;
with(_menu.graphics)
{
beginFill(0xFF0000, 1);
drawRect(0, 0, 300, 300);
endFill();
}
addChild(_menu);
_menu.addEventListener(MouseEvent.CLICK, onClickHandler);
stage.addEventListener(MouseEvent.CLICK, onClickHandler);
}
private function onClickHandler(event : MouseEvent) : void
{
switch(event.target)
{
case _menu:
_menu.alpha = 0.5;
break;
case stage:
_menu.alpha = 1;
break;
}
}
}
}发布于 2011-09-30 17:44:38
可以将侦听器添加到根元素的click事件:
MovieClip(root).addEventListener(MouseEvent.CLICK, clickObject);然后,在函数clickObject中,您可以检查所单击的内容。
function clickObject(e:Event):void
{
var hoverArray:Array = MovieClip(root).getObjectsUnderPoint(new Point(stage.mouseX, stage.mouseY));
var hoverOverObject:* = hoverArray[hoverArray.length - 1];
}hoverOverObject引用您要单击的元素。通常这将是电影剪辑中的形状,所以您需要查看它的父母,然后将其与您的电影剪辑进行比较。如果单击没有在下拉电影剪辑上,则触发关闭。
发布于 2011-10-01 10:01:56
var container:MovieClip = new MovieClip();
var mc:MovieClip = new MovieClip();
with(mc.graphics){
beginFill(0xff0000,1);
drawCircle(0,0,30);
endFill();
}
mc.name = "my_mc";
container.addChild(mc);
addChild(container);
stage.addEventListener(MouseEvent.CLICK, action);
function action (e:MouseEvent):void
{
if(e.target.name != "my_mc"){
if(container.numChildren != 0)
{
container.removeChild(container.getChildByName("my_mc"));
}
}
}https://stackoverflow.com/questions/7613968
复制相似问题