レイヤパタパタ - [[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("なんだかパタパタするものが無いみたい");}
Powered by YukiWiki 2.1.2a / Modified by Nekomataya.