我有一个Flash浏览器应用程序,它使用Loader对象加载到子swf中。
子swf有一个鼠标点击监听器,可以调用nativateToUrl,并打开一个新的网页。它还包含鼠标悬停事件,使swf中的东西四处移动。
执行加载的应用程序就像是子swf的容器,并且在单击时应打开不同的网页。所以基本上我想要压缩子swf mouseEvent并监听容器swf上的鼠标单击,打开新的URL。
我听说过其他人在原始内容上放置一个看不见的精灵,这样孩子swf实际上并没有抓住鼠标点击事件。但是,在我的情况下,这不会起作用,因为它也没有获得鼠标悬停事件。我希望mousehover事件通过并使子swf中的内容移动,但也抑制click事件。
所以,对于所有的闪存主谋......这可能吗?我怎么能这样做?
:)谢谢。
答案 0 :(得分:1)
如果要阻止所有MouseEvent.CLICK
事件到达加载的SWF,您可以执行以下操作:
我们假设您有以下设置:
var loader:Loader = new Loader();
loader.load(new URLRequest("child.swf"));
addChild(loader);
您可以做的是,在加载器上的点击事件的捕获阶段进行监听:
loader.addEventListener(MouseEvent.CLICK, handler, true);//the third parameter (true) tells flash to listen on the capture phase of an event's lifecycle
然后在该点击处理程序中,取消该事件,使其不会传播到加载的SWF:
function handler(e:Event):void {
e.stopImmediatePropagation();
}
如果您不了解事件的各个阶段,Adobe的此图表可能有所帮助:
顺便说一句,如果你想要从SWF中抑制所有鼠标内容,一个更好的方法(而不是添加一个不可见的精灵)就是这样做:
loader.mouseChildren = false;