假设我有一个带有几个空帧的闪存(或者使用矩形工具在其中有矩形的帧)。
如何正确连接MOUSE_OVER侦听器,以便当鼠标悬停在 闪存的任何像素上时,即使在那些所说的空帧上 ,事件也会触发?< / p>
我是Flash的新手,并且询问其他人并查看文档我在我的问题上一无所获,
我已经尝试stage.addEventListener(MouseEvent.MOUSE_OVER, handler);
,但无济于事。是的,我正确导入了包,整个swf编译没有错误。
答案 0 :(得分:1)
鼠标事件仅触发扩展InteractiveObject
的对象。
如果要绘制一些简单的Shape
基元,如使用矩形工具绘图,则不会调度任何鼠标事件。
Shape Inheritance:DisplayObject»EventDispatcher»Object
将这些转换为符号,更改继承以扩展交互式对象,例如MovieClip
MovieClip继承:Sprite»DisplayObjectContainer»InteractiveObject»DisplayObject»EventDispatcher»Object
然后,您可以将事件侦听器附加到特定对象;或者,只是向文档根添加一个监听器将触发事件:
this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
如果你需要从没有视觉元素的区域发射事件,一个技巧是创建一个透明的影片剪辑,只是作为显示列表上的交互式对象。
删除笔划并将填充颜色设置为零alpha。
然后,绘制一个矩形 - 看起来好像艺术板上没有添加任何东西;但是,选择后,您会看到它存在。如果找不到,请选择全部:
然后,您可以通过在舞台上放置多个实例来使用零alpha的符号。
此处,该符号已添加到舞台中,实例名称为“hitArea”
您现在可以专门向该地区添加活动:
hitArea.addEventListener(MouseEvent.MOUSE_OVER, hitAreaOverHandler);
重复所需的区域,为每个区域提供唯一的实例名称。
这很难实用;但是,有一些场景,例如用户控件,比原始按钮产生更大的命中区域,或者通过在顶部添加交互并禁用所有鼠标事件到下面的子项来处理显示列表上的子项的复杂图形。