加载的Flex SWF与Flash组件重叠

时间:2012-09-18 07:13:57

标签: flex flash loader stage

我正在使用Flash项目,但需要Flex的一些功能。所以我创建了一个Flex应用程序并构建它来获取.swf文件。

在Flash项目中,我使用'Loader'类来加载Flex Builder创建的.swf文件。此.swf文件已加载并在舞台上显示,但是,它与舞台上的所有其他闪存组件重叠。重叠的方向是向右和向下的。

flex mxml文件(component.mxml):

<s:Application xmlns:...
width="160" height="120">
...
</s:Application>

使用'Loader'类加载到flash:

var loader:Loader = new Loader();
loader.load(new URLRequest("component.swf"));
loader.x = COMPONENT_POS_X; //constant
loader.y = COMPONENT_POS_Y; //constant
stage.addChild(loader);

当我尝试为'loader'设置宽度时,整个flex组件消失。发生了什么事?

enter image description here

1 个答案:

答案 0 :(得分:0)

解决方案:为加载的swf添加一个遮罩。

来源:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#methodSummary

从不受信任的源(例如,Loader对象的根SWF文件的域之外的域)加载SWF文件时,您可能希望为Loader对象定义一个掩码,以防止加载的内容(这是一个Loader对象的子项)从绘图到该掩码之外的舞台部分,如下面的代码所示:

import flash.display.*;
import flash.net.URLRequest;
var rect:Shape = new Shape();
rect.graphics.beginFill(0xFFFFFF);
rect.graphics.drawRect(0, 0, 100, 100);
rect.graphics.endFill();
addChild(rect);
var ldr:Loader = new Loader();
ldr.mask = rect;
var url:String = "http://www.unknown.example.com/content.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
addChild(ldr);