add some様が公開しているjsfl、SwapInstancesを一部改変したものです。
大量の写真素材をタイムライン上でレイアウトしなくてはいけない場面などで活用しています。
使用方法の例
- 写真素材と同じサイズのダミー画像を用意し、ステージ上に配置する。
- 写真素材をライブラリに登録する。
- 1のダミー素材と、2のライブラリ画像を選択し、コマンドを実行する。
これでざっくりとした素材の配置ができます。
///////////////////////////////////////////////////
//Flashコマンド「SwapInstances」
//制作者:eiji saito
//ライセンスフリーです。配布なども自由です。但し、利用者自身の責任において御使用頂きますようお願い致します。
//いかなる損害についても制作者はその保証義務を一切負わないものとします。
//ご意見やご感想、または不具合などの報告などはメールにてお寄せください。
//制作者:eiji saito
//WebSite:http://addsome-smile.com
// http://homepage2.nifty.com/addsome/
//Mail:addsome-smile@nifty.com
///////////////////////////////////////////////////
/**
* 2009/10/05加筆
* 選択中のライブラリアイテムから変更先をランダムに抽出するよう変更
*/
/*
複数選択中のインスタンスの入れ替え
シンボル→シンボル
ビットマップ→ビットマップ
入れ替え可能なフラグ判定条
noBMP=選択アイテムとライブラリが共にビットマップを含まない時
yesBMP=選択中アイテムがビットマップのみで、選択中ライブラリアイテムもビットマップの時
*/
//フラグ
var docBMP=false;//選択中のビットマップ判定
var libBMP=false;//ライブラリのビットマップ判定
var onlyBMP=false;//ビットマップのみかどうか
//選択中ビットマップのカウント
var cntBMP=0;
var _doc=fl.getDocumentDOM();
//選択中のアイテムの数
var docSel=_doc.selection;
var selLength=docSel.length;
if(docSel[0]==undefined){
//何も選択されていない時はアラートのみ
alert("インスタンスが選択されていません。");
//メイン処理-----------------------------------
}
else{
//選択中のアイテムからビットマップを探す
for(var i=0 ; i<selLength ; i++){
var obj=docSel[i];
if(obj=="[object Bitmap]"){
cntBMP++;
docBMP=true;
}
}
//選択中アイテムが全てビットマップの時
if(cntBMP==selLength){
onlyBMP=true;
}
//
//ライブラリ内の判定------------------------------------------------
//
//選択中のライブラリアイテム
var libSelItem=_doc.library.getSelectedItems();
if(libSelItem.length<1){
//ライブラリアイテムを選択していない場合
alert("ライブラリアイテムが選択されていません。");
}else{
//ライブラリアイテムを1つだけ選択しているときに実行する
//選択中のライブラリアイテムがビットマップの時
var libItemType=libSelItem[0].itemType;
if(libItemType=="bitmap"){
libBMP=true;
}
if(libItemType!="folder"){
//入れ替え可能なフラグ判定条件
//noBMP=選択アイテムとライブラリが共にビットマップを含まない時
//yesBMP=選択中アイテムがビットマップのみで、選択中ライブラリアイテムもビットマップの時
var noBMP = (docBMP==false && libBMP==false);
var yesBMP = onlyBMP==true && (docBMP==true && libBMP==true);
//
if(noBMP || yesBMP){
//var libItem=String(libSelItem[randomIndex].name);
//fl.getDocumentDOM().swapElement(libItem);
for(i=0 ; i<selLength ; i++){
var randomIndex =Math.floor(Math.random()*libSelItem.length);
obj=docSel[i];
obj.libraryItem = libSelItem[randomIndex];
}
}else{
//条件にあわないときはアラート
if(docBMP==false && libBMP==true){
alert("ライブラリでビットマップが選択されています。");
}else{
alert("ビットマップが選択されています。");
}
}
}else{
alert("ライブラリアイテムが選択されていません。");
}
}
}