如何使用JSFL将不同文件夹中的大量位图导入到库中,并将文件夹结构保存在fla文件中

时间:2012-08-30 15:03:07

标签: actionscript-3 flash jsfl

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

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

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

我需要在库中的fla文件中使用相同的结构:

folder1 - > png1.png
folder1 - > folder11 - > png2.png
folder2 - > png3.png
folder2 - > 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.")

1 个答案:

答案 0 :(得分: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