Xml 不同高度AS3的空间外荷载SWF

Xml 不同高度AS3的空间外荷载SWF,xml,flash,actionscript-3,Xml,Flash,Actionscript 3,我已经为此奋斗了一段时间,我正在将swf文件加载到一个固定swf中,并希望将每个加载的swf以10px的边距放置在彼此下面 这就是我到目前为止所做的,它正确地提取了所有数据,现在只想定位加载的主权财富基金 非常感谢您的帮助 导入flash.display.LoaderInfo; var swfLoader:装载机; var-xml:xml; var-xmlList:xmlList; var xmlLoader:URLLoader=新的URLLoader(); load(新的URLRequest

我已经为此奋斗了一段时间,我正在将swf文件加载到一个固定swf中,并希望将每个加载的swf以10px的边距放置在彼此下面

这就是我到目前为止所做的,它正确地提取了所有数据,现在只想定位加载的主权财富基金

非常感谢您的帮助


导入flash.display.LoaderInfo;
var swfLoader:装载机;
var-xml:xml;
var-xmlList:xmlList;
var xmlLoader:URLLoader=新的URLLoader();
load(新的URLRequest(“components.xml”);
addEventListener(Event.COMPLETE,xmlLoaded);
函数xmlLoaded(事件:事件):void
{
xml=xml(event.target.data);
xmlList=xml.children();
for(var i:int=0;i
使用swfLoader成员变量时会遇到如下问题:将每个加载程序添加到stage,但swfLoader引用始终只指向一个对象(最后添加的对象)

这样定位剪辑也有问题,因为一次只能获取一个加载程序引用,因此无法计算相对于其他加载程序的位置

如果舞台上只放置了加载程序,则可以迭代主对象的子对象,但我强烈建议将片段存储在数组中。您的代码将如下所示:

var loaders:Array = []; // an Array of loaders instead of a single loader
var xml:XML;
var xmlList:XMLList;
var xmlLoader:URLLoader = new URLLoader();

xmlLoader.load(new URLRequest("components.xml"));
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event:Event):void
{
    xml = XML(event.target.data);
    xmlList = xml.children();
    for (var i:int = 0; i < xmlList.length(); i++)
    {
        var swfLoader:Loader = new Loader(); // local instead of member variable
        swfLoader.load(new URLRequest(xmlList[i].@SWFsource));
        swfLoader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitHandler);
    }
}

function loaderInitHandler(event:Event):void
{
    var swfInfo:LoaderInfo = event.target as LoaderInfo;
    var swfLoader:Loader = swfInfo.loader; 
    if (loaders.length > 0) {
        var lastLoader : Loader = loaders[loaders.length-1]; 
        swfLoader.y = lastLoader.y + lastLoader.height + 10; // positioning happens here
    }
    addChild(swfLoader);
    loaders.push(swfLoader);
}
var加载程序:数组=[];//一组装入器而不是单个装入器
var-xml:xml;
var-xmlList:xmlList;
var xmlLoader:URLLoader=新的URLLoader();
load(新的URLRequest(“components.xml”);
addEventListener(Event.COMPLETE,xmlLoaded);
函数xmlLoaded(事件:事件):void
{
xml=xml(event.target.data);
xmlList=xml.children();
for(var i:int=0;i0){
var lastLoader:Loader=loaders[loaders.length-1];
swfLoader.y=lastLoader.y+lastLoader.height+10;//此处进行定位
}
addChild(swfLoader);
装载机.推式(swfLoader);
}
加载程序仅在完全加载时添加到舞台并推送到阵列上,因此您可以确保lastLoader始终是放置在舞台上的最后一个最近的项目。以后可以使用loaders阵列删除或重新定位图像

var loaders:Array = []; // an Array of loaders instead of a single loader
var xml:XML;
var xmlList:XMLList;
var xmlLoader:URLLoader = new URLLoader();

xmlLoader.load(new URLRequest("components.xml"));
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event:Event):void
{
    xml = XML(event.target.data);
    xmlList = xml.children();
    for (var i:int = 0; i < xmlList.length(); i++)
    {
        var swfLoader:Loader = new Loader(); // local instead of member variable
        swfLoader.load(new URLRequest(xmlList[i].@SWFsource));
        swfLoader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitHandler);
    }
}

function loaderInitHandler(event:Event):void
{
    var swfInfo:LoaderInfo = event.target as LoaderInfo;
    var swfLoader:Loader = swfInfo.loader; 
    if (loaders.length > 0) {
        var lastLoader : Loader = loaders[loaders.length-1]; 
        swfLoader.y = lastLoader.y + lastLoader.height + 10; // positioning happens here
    }
    addChild(swfLoader);
    loaders.push(swfLoader);
}