我有一个外部SWF ,我加载到 Loader 对象。
我将这个Loader对象作为子项添加到MovieClip中,并将此MovieClip添加到我的舞台上。
我现在想要在Loader对象的顶部上绘制一个透明矩形Sprite,这只是捕获鼠标事件所必需的。
(我需要知道鼠标何时滚动并从透明层中滚出)。
如果你问自己 - 为什么我需要这个透明层而不仅仅是抓住Loader本身的事件?好吧,这有很多原因,其中大部分都与客户端请求有关,但是 - 因为某些外部加载的SWF由于某种原因没有响应鼠标事件 - 所以我需要“欺骗”它并在顶部添加我自己的透明图层。
我的问题是 - 如果我把透明层作为持有Loader的MovieClip的子节点,那么我得到这个hirarchy:
问题是 - 鼠标事件被最顶层(透明层)捕获并传递给MovieClip和舞台。 事件不会在Loader对象中触发,因此 - SWF变为非交互式。
另一个解决方案是 -
以某种方式将透明层添加为Loader对象的子级,如下所示:
然后事件将冒泡到Loader和SWF。 问题是 - Loader类不允许您向其添加子元素(加载的SWF除外)。
那么有人可以提供建议我如何在SWF顶部添加透明层,并且仍然可以与透明层和SWF层进行鼠标交互?
答案 0 :(得分:2)
透明图层阻止加载的swf文件的事件。您需要为此图层使用mouseEnabled
属性false
。
我不知道这对你有用,但我认为这可能有用。在主swf中添加以下代码。
import flash.display.Loader;
import flash.events.Event;
import flash.events.MouseEvent;
import fl.transitions.Tween;
import fl.motion.easing.Linear;
// Disables the mouse interations
transparentLayer.mouseEnabled = false;
// Initialize with alpha 0
transparentLayer.alpha = 0;
// Cretes the loader
var loader:Loader = new Loader();
// Listen the complete event
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
// Loads the external swf files
loader.load(new URLRequest("swf.swf"));
// Add in the background
addChildAt(loader, 0);
// Listen the complete event
function loadComplete (event:Event) {
// Add the mouse events to the loaded content
loader.contentLoaderInfo.content.addEventListener(MouseEvent.ROLL_OVER, mouseHandler);
loader.contentLoaderInfo.content.addEventListener(MouseEvent.ROLL_OUT, mouseHandler);
}
// Handles de mouse events of the loaded swf
function mouseHandler (event:MouseEvent)
{
switch (event.type)
{
case MouseEvent.ROLL_OVER :
// Shows the transparentLayer from the current alpha value to 1 in 1 second
new Tween(transparentLayer, "alpha", Linear.easeNone, transparentLayer.alpha, 1, 1, true);
break;
case MouseEvent.ROLL_OUT :
// Shows the transparentLayer from the current alpha value to 0 in 1 second
new Tween(transparentLayer, "alpha", Linear.easeNone, transparentLayer.alpha, 0, 1, true);
break;
}
}
透明层失去了所有的交互作用,因此您需要在外部应用运动效果。在这里,您可以下载运行http://cl.ly/LtfA
的项目