Domanda

Sto cercando di creare uno script usando JSFL ma ho il problema seguente ...

Per capire cosa sto cercando di fare, per prima cosa ho usato uno script per esportare tutte le immagini nella libreria, perché ho bisogno di fare un processo a tutti i file PNG.

Ora voglio reinserire le immagini sulla libreria.

Se creo un nuovo oggetto perdo tutti i riferimenti e non è utile e ho elementi duplicati.

Quello che devo fare è reimportare l'immagine per ogni elemento. Voglio dire, lo stesso che faccio quando un tasto destro del mouse su Item->> Proprietà-> Importa ...

Stavo cercando di usare questo script ma non funziona.Qualcuno può aiutarmi?

var folderURI = fl.browseForFolderURL('Select folder where all images should be exported as *.PNG');
var doc = fl.getDocumentDOM();

if(doc)
{
    fl.outputPanel.trace("Start");
    var library = doc.library;
    var allLibItems = library.items;
    var item;
    var itemName;

    for (var i = 0; i<allLibItems.length; ++i) 
    {
        item = allLibItems[i];//only images will be processed
        if(item.itemType == "bitmap")
        {
            itemName = item.name.slice(item.name.lastIndexOf("/")+1,item.name.lastIndexOf("."));
            //Find proccesed image on the directory selected before
            //and replace the sourceFilePath (I think this is what I need to use a new image but is not working)
            item.sourceFilePath = folderURI + "/" + itemName +".png"

            //This returns 'false'
            fl.outputPanel.trace(library.updateItem(item.name));
            //item.sourceFilePath has the old value, I don't understand why it was not changed
            fl.outputPanel.trace(folderURI + "/" + itemName +".png" + " = " + item.sourceFilePath);
        }

    }
}
.

È stato utile?

Soluzione

Infine, ho decompresso il file FLA, è come una zip e ho tutte le immagini all'interno, quindi è facile sostituirle.

Il problema che avevo prima era che le immagini non cambiano perché in Flash hai un'opzione per comprimere le immagini quando crei il SWF, ecco perché non ho visto alcuna modifica sul risultato finale.(Fare clic con il pulsante destro del mouse sull'immagine all'interno della libreria -> Proprietà -> Compressione)

Ho usato JSFL per iterare tutte le immagini (come l'esempio sopra) e impostare la compressione: "Lossless" invece di "Photo (JPG)".

Ovviamente questa è solo una buona soluzione per me perché sto usando uno strumento esterno per comprimere le immagini con una risoluzione davvero grande e una dimensione bassa.

È possibile utilizzare JSFL per iterare tutte le immagini e impostare la compressione: "Foto (JPG)" a tutte le immagini, con la qualità che desideri, ma probabilmente il risultato sarà diverso.

Saluti

Altri suggerimenti

Prova questo

  doc.importFile(currentFileURI, true, false, false);
  doc.library.selectItem(currentFileName);
  doc.library.moveToFolder(libraryPath, currentFileName, true);
.

Ma se l'oggetto esiste, Flash Mostra la finestra di dialogo Avvertenza

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top