2
var tmpDoc = fl.createDocument();
/*..some logic...*/
tmpDoc.addItem({x:0,y:0},item);

私のJSFLには上記のコードがあります。
そして 3 行目に、ダイアログ ボックスが表示されます:
タイトルが「ライブラリの競合を解決する」
2 つのラジオ ボタン オプション: 「置換」、「置換しない」
2 つのボタン: 「OK」、「キャンセル」

このダイアログ ボックスが原因で
、スクリプトの実行を手動で監視し、ボタンをクリックする必要があります。


1. この種のダイアログ ボックスを完全に抑制します。
2. または、これらの種類のダイアログに既定のオプションをプログラムで提供します。

JSFLでどうすればいいですか?

4

2 に答える 2

1

私はこれを回避することができました。トリックは、新しいアイテムを追加すると、ライブラリ フォルダーのどこかに「同一の」アイテムがある場合でも、ライブラリの最上位に到達し、そこで競合を探すことです。

また、JSFL (library.moveToFolder) を使用してライブラリ アイテムをフォルダー内の同じアイテムの場所に移動すると、アイテムが置き換えられ、競合ダイアログは表示されません。

  1. 可能であれば、目的のライブラリ アイテムをライブラリの最上位レベルからフォルダーに手動で移動します。これは 1 回だけ行われ、ライブラリ構造に対する永続的な変更です。
  2. スクリプト時に各アイテムをドキュメントに追加するときに、library.moveToFolder(folderPath, itemPath, true); を呼び出します。
  3. これにより、フォルダー内のアイテムが上書きされ、プロンプトがスキップされます

正確なアプローチはニーズによって異なる場合がありますが、重要なのは、追加中にライブラリの一番上にアイテムを置かないことです。最初にそれらを別の場所に移動します。

いつものように、フラッシュのために後ろにかがみます!お役に立てれば。

PS、これはライブラリにコンポーネントを追加する場合にも機能します。

于 2011-01-06T01:38:02.460 に答える
0

ライブラリのitemExists()関数を使用して、アイテムをライブラリに追加する前にアイテムが存在するかどうかを確認できます。

var doc = fl.getDocumentDOM();
var lib = doc.library;
//check if the item already exists first, if so, keep count of symbols with the same name, append random, etc.
if(!lib.itemExists('item')) lib.addNewItem('movie clip','item');
else                        lib.addNewItem('movie clip','item'+Math.random());

HTH

于 2010-11-15T22:50:10.810 に答える