简体   繁体   English

透明区域中的MouseEvent.CLICK

[英]MouseEvent.CLICK in transparent area

I have a movieClip that i want to get mouse click event on it, it works fine but it doesn't fire this event when i click on transparent area. 我有一个movieClip,我想在上面获得鼠标单击事件,它工作正常,但是当我单击透明区域时,它不会触发此事件。 is there any solution except to define a rectangle as hitArea? 除了将矩形定义为hitArea之外,还有什么解决方法吗?

mc.addEventListener(MouseEvent.CLICK, onMouseClickEvent);

function onMouseClickEvent(event:Event) {

    trace("on clicked");
}

It's true that you won't be able to click the transparent area, however, here is an alternate solution. 的确,您将无法单击透明区域,但是,这是另一种解决方案。

If you can monitor your mouse state with a global listener like: 如果您可以使用全局侦听器来监视鼠标状态,例如:

stage.addEventListener( MouseEvent.CLICK, onStageClicked );

Then you can write another function that does a hit test against your display object: 然后,您可以编写另一个对显示对象进行点击测试的函数:

public function mouseTest( someAsset:DisplayObject ):Boolean
{
    return someAsset.hitTestPoint( stage.mouseX, stage.mouseY );
}

Last from your onStageClicked() handler: 最后来自onStageClicked()处理函数:

private function onStageClicked( e:Event ):void
{
    if ( mouseTest( mc ) )
    {
        //do something
    }
}

That should suffice for the transparent area. 这对于透明区域就足够了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM