【问题标题】:MouseEvent.CLICK in transparent areaMouseEvent.CLICK 在透明区域
【发布时间】:2015-08-29 07:11:12
【问题描述】:

我有一个movieClip,我想在它上面获得鼠标点击事件, 它工作正常,但是当我单击透明区域时它不会触发此事件。 除了将矩形定义为 hitArea 之外,还有其他解决方案吗?

mc.addEventListener(MouseEvent.CLICK, onMouseClickEvent);

function onMouseClickEvent(event:Event) {

    trace("on clicked");
}

【问题讨论】:

  • 是的,据我所知,您必须用透明矩形填充该区域或使用具有透明度的 png 图像。
  • 实际上,我的理解是,MovieClip 在其边界框中注册了任何地方的点击。 Sprite 不会在其边界框内的未渲染区域中注册点击,但 MovieClip 会。 @Maryam,如果 Gurtej 的建议不起作用,你能发布你的完整代码吗?编辑 - 当然 Gurtej 会起作用,因为你正在覆盖该区域!无论如何,您可以发布代码吗,因为不管怎样,MovieClip 都应该注册。
  • 没关系!我对 MovieClips 的理解是错误的!

标签: actionscript-3


【解决方案1】:

您确实无法点击透明区域,但是,这里有一个替代解决方案。

如果您可以使用全局监听器监控鼠标状态,例如:

stage.addEventListener( MouseEvent.CLICK, onStageClicked );

然后您可以编写另一个对您的显示对象进行命中测试的函数:

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

最后来自您的 onStageClicked() 处理程序:

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

对于透明区域应该足够了。

【讨论】:

    猜你喜欢
    • 2012-06-20
    • 2013-04-28
    • 1970-01-01
    • 2014-10-24
    • 2017-02-09
    • 2011-08-20
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多