JSFLライブラリ画像の画像を交換します
-
26-12-2019 - |
質問
im jsflを使ってスクリプトを作ろうとしていますが、次の問題があります...
何がしようとしているのかを理解するために、まず私はすべてのPNGファイルにプロセスを実行する必要があるため、スクリプトをライブラリー内のすべての画像をエクスポートしました。
今、図書館上の画像を再挿入したい。
新しいアイテムを作成した場合、すべての参照を失い、それは役に立ちません、そして私は重複したアイテムを持っています。
私がする必要があるのは、各項目の画像を再インポートすることです。 つまり、ライブラリー項目を右クリックしたときにも同じことができます.->プロパティ - >インポート...
このスクリプトを使いようとしていましたが、うまくいきません。誰でも私を助けることができますか?
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);
}
}
}
. 解決
最後に、私はFLAファイルを解凍しました、それはzipのようなものであり、私は中のすべての画像を持っているので、それらを交換するのは簡単です。
SWFを作成したときに画像を圧縮するオプションがあるため、画像が変更されたため、最初に変更した問題は、最終結果の変更を検討していませんでした。(ライブラリ内の画像を右クリック - >プロパティ - >圧縮)
JSFLを使用してすべての画像を繰り返し(上記の例のように)、圧縮を設定します。「写真(JPG)」の代わりに「無損失」。
明らかにこれは私にとってのみ優れた解決策だけであるため、本当に素晴らしい解像度と低サイズで画像を圧縮するためのIMです。
JSFLを使用して、すべての画像を反復し、すべての画像に圧縮:「写真(JPG)」を設定することができます。
wares
他のヒント
これを試してください
doc.importFile(currentFileURI, true, false, false);
doc.library.selectItem(currentFileName);
doc.library.moveToFolder(libraryPath, currentFileName, true);
.
しかし項目が存在する場合は、Flash Show Warning Dialog