1

我需要将大量位图文件从不同的文件夹导入到 fla 文件库中,并将文件夹结构保存在 fla 文件中。

所以例如我有这样的文件结构:

mainFolder -> folder1 -> png1.png
mainFolder -> folder1 -> folder11 -> png2.png
mainFolder -> folder2 -> png3.png
mainFolder -> folder2 -> png4.png

我需要在库中的 fla 文件中具有相同的结构:


文件夹1 -> png1.png文件夹1 -> 文件夹11 -> png2.png 文件
夹2 -> png3.png 文件
夹2 -> png4.png


现在我已经创建了这个代码:

var dom = fl.getDocumentDOM(); 
var URI = fl.browseForFileURL("select", "Import File");
var success = dom.importFile(URI);
if(success)
{
    fl.trace(flash.documents[0].name);
    var indexOfFileName = URI.lastIndexOf("/");
    var folderStructure = URI.slice(URI.indexOf(flash.documents[0].name),indexOfFileName);
    dom.library.newFolder(folderStructure); 

    var fileName = URI.slice(indexOfFileName + 1,URI.length);       
    dom.library.moveToFolder(folderStructure, fileName, true);
}

// mainFolder 在我的例子中是 fla 文件的名称(带有 .fla 扩展名)

此代码根据需要创建文件夹结构,但我还不知道如何一次加载多个文件,只需指向主文件夹,例如通过
fl.browseForFolderURL("Select a folder.")

4

1 回答 1

2

最后我成功了。如果有人需要这样的东西,这是我的解决方案:

fl.outputPanel.clear()
var folderURI = fl.browseForFolderURL("Select a folder.");
fileList = new Array()

function listFile(paths){
    var files=[]
    var folds=[]
    var files=FLfile.listFolder(paths,"files"); 

    for(i=0;i<files.length;i++)
    {   
        if(paths.lastIndexOf("/") != paths.length -1 )
        {
            paths+="/";         
        }
        fileList.push(paths + files[i]);
    }
    var folds = FLfile.listFolder(paths , "directories");

    for(var j=0;j<folds.length;j++)
    {           
        var subPath = paths + folds[j] + "/"        
        listFile(subPath);  

        //make sure that this stops at a reasonable point.
        if (fileList.length > 1000)
        return;
    }
}


function importFile(URI)
{
    var success = dom.importFile(URI);
    if(success)
    {       
    var indexOfFileName = URI.lastIndexOf("/");
    var documentName = flash.documents[0].name;             
    var folderStructure = URI.slice(URI.indexOf(documentName) + documentName.length + 1,indexOfFileName);
        if(folderStructure)
            dom.library.newFolder(folderStructure); 
        var fileName = URI.slice(indexOfFileName + 1,URI.length);       
        dom.library.moveToFolder(folderStructure, fileName, true);
    }
    return;
}

listFile(folderURI);

for(i=0;i<fileList.length;i++)
{
    fl.trace("fileList["+i+"]="+ fileList[i]);
    importFile(fileList[i])
}

带有照片的主文件夹的名称必须与 fla 的名称相同,例如文件夹的名称必须为 test.fla

于 2012-08-31T10:48:53.950 回答