編集(管理者用) | 編集 | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴
== o ==
ねこまたや web出張所
INDEX

トップページ
お知らせ
twitter
お道具箱
技術資料と雑談
ライブラリ
雑貨や(ダウンロード)
最近の更新
ねこまたやについて

twitter

ねこまたやのついった

企画モノ

psAxe情報ページ
自主制作アニメ
ぽこあぽこ られんたんど


あやかしあやし
エフェクトネタ帳



りまぴん
AE エクスプレッション
レンダー乙女とか
簡易版XPSリンカ
おまけギャラリ

BBS

ねこまたやBBS
開発室BBS

Language



開発室みたいなものでしたが
spamアクセスがはげしいのでページは凍結中です。
書き換えは管理人のみが可能です。
Nekomataya/2024

レイヤパタパタ - [[PS_Script]]


目次

PS_Script

レイヤパタパタ

へんな名前…

レイヤを順番に表示します。GUIつき

ドキュメントのレイヤを1枚づつ順番に「ボタン」で表示します。 すべてのレイヤをいったん非表示にして該当レイヤを一つづつ表示するだけのシンプルスクリプトです。

動画をレイヤとして保持しているようなファイルを確認する場合に使用できます。 個人的な作業形態のため動画番号は下から上に向かって増加することにしてあります。 つまり

	[Fwd](上へ)/[Back](下へ)

となります。別の作業形態の方は簡単なのでボタンの名前を書き換えてください。

現在表示しているレイヤの名前を書き換えることができます。その際周辺のボタンであやしげな文字列を名前に追加することができます。

このボタンの用途がわかる方は私と作業形態が似ている可能性が…

ソース

/*
		Photoshop レイヤぱらぱら
	アクティブレイヤのあるレイヤコレクションをパラパラするよ
	簡易アニメチェックにどうぞ。色塗りのパカ探しとか。指パラみたいなもんです。
	時間制御するとどうも表示のリフレッシュが変?スイッチ制にすべきか?
	注意**あまり長時間使うと画面リフレッシュが止まる。しょうがないけどね 07/05/08

	直下のレイヤの名前を拾うボタン追加 07/06/23
*/
	var exFlag=true;
//そもそもドキュメントがなければ終了
	if(app.documents.length==0){
		exFlag=false;
	}else{
//起動時にレイヤコレクションの状態を確認 フリップアイテム数が1以下なら終了
		if(activeDocument.activeLayer.parent.layers.length<=1){exFlag=false;};
	}
	if(exFlag){
//オプションで背景レイヤをパラパラに雑ぜるか否かを調整
//最下層レイヤではなく、「背景レイヤ」限定? 考慮中

//iclude 
	var nas = new Object();
		nas.Version=new Object();
//しくしく フルパスでないとうまくいかんがな
Folder.current=new Folder(Folder.startup.fsName+"/プリセット/スクリプト/");

//@include "/c/Program%20Files/Adobe/Photoshop%20CS/プリセット/スクリプト/nas/config.lib"
//@include "/c/Program%20Files/Adobe/Photoshop%20CS/プリセット/スクリプト/nas/nas_common.lib"
//@include "/c/Program%20Files/Adobe/Photoshop%20CS/プリセット/スクリプト/nas/nas_GUIlib.lib"


/*------	nas一般メソッド新しいやつ暫定試験	------*/
/*	nas.numInc([string 旧番号],step);
	戻り値:新番号
カット版番号を文字列で与えて最初に現れる数値部分を1増加させて後置部分を切り捨てて戻す。
数値を含まない文字列を与えるとそれを前置部分として"001"を付けて戻す。
引数無しの場合は開始番号の"001"を戻す。
*/
nas.numInc =function(oldNumber,myStep){

	var currentValue="001";
	if(! myStep){myStep=1;}else{myStep=myStep*1;};
	if(oldNumber){currentValue=oldNumber};

	if (currentValue.match(/^([^0-9]*)([0-9]+)(.*)/)){
		preFix=RegExp?.$1;numValue=RegExp?.$2;postFix=RegExp?.$3;
	}else{
		preFix=currentValue;numValue="001";postFix="";
	}
//桁あわせの文字数取得
	var myOrder=numValue.length;
//ポストフィックスがある場合は、無条件で廃棄
//プレフィックスは無条件で保持
	return preFix+nas.Zf(numValue*1+myStep,myOrder);
}


var myEasyFlip=new Object();
//properties
	myEasyFlip.targetLayers=activeDocument.activeLayer.parent.layers;
	myEasyFlip.wait=3*1000/24;
	myEasyFlip.bgFix=false;
	myEasyFlip.onLoop=true;
	myEasyFlip.playStatus="stop";
	myEasyFlip.previewLayer=null;

	myEasyFlip.playList=new Array();
	myEasyFlip.backupView=new Array();

	myEasyFlip.tableInit=function(){

//メソッド
		for(idx=0;idx<myEasyFlip.targetLayers.length;idx++){
			if((myEasyFlip.bgFix)&&(idx==myEasyFlip.targetLayers.length-1)){
				continue;
			}else{
				myEasyFlip.playList.push(idx);
			}
		}
		myEasyFlip.playList.active=myEasyFlip.playList.length-1;
//
		for(idx=0;idx<myEasyFlip.targetLayers.length;idx++){
			myEasyFlip.backupView.push(myEasyFlip.targetLayers[idx].visible);
		}
		myEasyFlip.backupView.active=activeDocument.activeLayer;
	}

	myEasyFlip.tableInit();

	myEasyFlip.viewRestore=function(){
		for(idx=0;idx<this.backupView.length;idx++){
			this.targetLayers[idx].visible=this.backupView[idx];
		}
		activeDocument.activeLayer=myEasyFlip.backupView.active;//これは要らんかも
	}

	myEasyFlip.viewInit=function(){
		for(idx=0;idx<this.backupView.length;idx++){
			if(!this.targetLayers[idx].visible){this.targetLayers[idx].visible=true}
		};//all visible
		for(idx=0;idx<this.playList.length;idx++){
			if(this.targetLayers[this.playList[idx]].visible){
			this.targetLayers[this.playList[idx]].visible=false
			}
		};//playList unvisible
		//setStart
		this.playStatus="stop";
		this.previewLayer=this.targetLayers[this.playList.active];
		activeDocument.activeLayer=myEasyFlip.previewLayer;
		this.previewLayer.visible=true;//previewLayerはオブジェクト(アクセスターゲット)で
	}

	myEasyFlip.flip=function(WD){
		var myOffset=(WD=="BWD")?-1:1;
		if((w.namePad.text!=myEasyFlip.previewLayer.name)&&(w.namePad.text!="")){
			myEasyFlip.previewLayer.name=w.namePad.text;
		}
		this.previewLayer.visible=false;

		if(this.onLoop){
			this.playList.active=(
				this.playList.active+this.playList.length-myOffset
				)%this.playList.length;//ループ
		}else{
			this.playList.active=(this.playList.active>0)?
			this.playList.active-myOffset:0;//stop
		}
		w.prevNameView.text=this.previewLayer.name;
		this.previewLayer=this.targetLayers[this.playList.active];
		this.previewLayer.active=true;
		activeDocument.activeLayer=this.previewLayer;
		w.nameView.text=this.previewLayer.name;
		w.namePad.text="";

//		alert(w.namePad.textselection);
//		return "OK!";
	}

//初期化
myEasyFlip.viewInit();

if(false){
		var startCount=new Date().getTime();
		var breakRimit=startCount+10000;//10秒制限
		var nextCount=startCount+1000;//1秒試験
//alert("start"+startCount +" / "+nextCount)
		while(true){
			currentCount=new Date().getTime()
			if(currentCount<nextCount){
				continue;
			}else{
				if(nextCount<breakRimit){
			nextCount=nextCount+1000;
			myEasyFlip.flip("FWD");
				}else{
break;}
			}
		}
		nextCount;
	}

//	GUI初期化
w=nas.GUI.newWindow("dialog","レイヤリネーム",5,5);
w.onClose=function(){myEasyFlip.viewRestore();};
w.onOpen=true;

w.nameView=nas.GUI.addButton(w,myEasyFlip.previewLayer.name,1,0,4,1);
w.bt0=nas.GUI.addButton(w,"[ / ]",0,0,1,1);
w.bt1=nas.GUI.addButton(w,"[++]",0,1,1,1);
w.bt2=nas.GUI.addButton(w,"[--]",0,2,1,1);
w.btP=nas.GUI.addButton(w,"[ + ]",0,3,1,1);
w.btM=nas.GUI.addButton(w,"[memo]",1,3,1,1);
w.namePad=nas.GUI.addEditText(w,"",1,1,4,1);
w.prevNameView=nas.GUI.addButton(w,myEasyFlip.previewLayer.name,1,2,4,1);
w.bt3=nas.GUI.addButton(w,"△goFWD△",2.5,3,2.5,1);
w.bt4=nas.GUI.addButton(w,"▼goBWD▼",2.5,4,2.5,1);
w.bt5=nas.GUI.addButton(w,"close",0,4,2.5,1);


w.nameView.onClick=function(){this.parent.namePad.text+=this.text;}
w.prevNameView.onClick=function(){this.parent.namePad.text+=this.text;}

w.bt0.onClick=function(){this.parent.namePad.text+="/";}

w.bt1.onClick=function(){
	if(this.parent.namePad.text!=""){
		var myNameSet=this.parent.namePad.text.split("/");
		myNameSet[myNameSet.length-1]=nas.numInc(myNameSet[myNameSet.length-1]);
		this.parent.namePad.text=myNameSet.join("/");
	}
};
w.bt2.onClick=function(){
	if(this.parent.namePad.text!=""){
		var myNameSet=this.parent.namePad.text.split("/");
		myNameSet[myNameSet.length-1]=nas.numInc(myNameSet[myNameSet.length-1],-1);
		this.parent.namePad.text=myNameSet.join("/");
	}
};
w.btP.onClick=function(){this.parent.namePad.text+="+";}
w.btM.onClick=function(){this.parent.namePad.text+="memo";}

//w.namePad.onChange=function(){myEasyFlip.flip("FWD");w.onOpen=false;this.active=true;};
w.bt3.onClick=function(){myEasyFlip.flip("FWD");w.onOpen=false;this.parent.namePad.active=true;};
w.bt4.onClick=function(){myEasyFlip.flip("BWD");w.onOpen=false;this.parent.namePad.active=true;};
w.bt5.onClick=function(){
	myEasyFlip.viewRestore();
	this.parent.onOpen=false;
	this.parent.close();
};


//==============================================================
w.show();

//w.watch("onOpen",function(){alert(w.onOpen);w.unwatch("onOpen");});

//whle(true){}
	}else{alert("なんだかパタパタするものが無いみたい");}