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

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

twitter

ねこまたやのついった

企画モノ

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


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



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

BBS

ねこまたやBBS
開発室BBS

Language



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

簡易コンソール - [[PS_Script]]


目次

PS_Script

デバッグ用簡易コンソール

レンダー乙女とかで書いた簡易コンソール(同じもの)です。

下側のテキストボックスにコマンドを打ち込んで、大きなボタンを押すと実行してリザルトを上のボックスに表示します。エラーメッセージも同様に上のボックスに表示。

ファイル読み書きは、下のボックスが対象です。上側のボックスの内容を保存したい場合は、コピペしてください。

このコンソールをPhotoshopで使用する場合は、AEとちょっぴり使い勝手が変わります。

CSで使う場合は、スクリプトフォルダに*.jsで保存します。(CS2以降は*.jsx)

Photoshopのスクリプト環境ではこのコンソールはパレットではなくダイアログで動くので、コンソール使用中に通常のGUIでドキュメントを操作することはできません。

コンソールを終了するには、エスケープキーを押してください。

後はまぁ、大方AEとおんなじ感じです。

ソース採録

//(お試しコンソール)
//	Nekomataya/kiyo	2005.11.07
//	改行コード調整追加	11.08
//	ファイル読み込み追加	11.09
//	mac上での表示の改善・簡易GUIライブラリ試験 11.17
//	調整 11.23  これでおわりかな
//	保存対応することにした。一応
//	ついでにPhotoshop対応 inDesignとか他のCS組はもってないのでワカリマセン。12/21

try{if(app.isProfessionalVersion)
	{
		app.name="Adobe AfterEffects";
		var isWindows=(system.osName.match(/Windows/))?true:false;
	}else{
		isWindows=false;
	};
	if(isWindows){var LineFeed="\x0d\x0a"}else{var LineFeed="\x0d"};
}catch(ERR){
	isWindows =true;
}
/*
	edittextに初期状態で256バイトでペーストや手入力が打ち止めになる現象がある。
	スクリプトでのデータ追加を行うと動的にメモリが確保されているようなので、
	これは、edittextに無理やり空白を追加してフラッシュするメソッド。
	このバグが解消したら不要。	引数はループ回数。1回アタリ1kb

	AE7.0 256バイトではなくなったが同バグ依然有り。さらに削除操作後にキー入力不全追加
	ただし、コンソール機能はオリジナルのスクリプトエディタがあるので、このツール自体は
	お役御免
*/
function getScript()
{
if(isWindows){
	var scriptfile = File.openDialog("読み込むスクリプトを選んでください","JSX-Script(*.jsx *.js):*.JSX;*.JS");
}else{
	var scriptfile = File.openDialog("読み込むスクリプトを選んでください");
}
if (scriptfile && scriptfile.name.match(/^[a-z_\-\#0-9]+\.jsx?$/i)){
	var myOpenfile = new File(scriptfile.fsName);
	myOpenfile.open("r");
	myContent = myOpenfile.read();
	return myContent.replace(/(\r\n?|\n)/g,LineFeed);
}else {return false;};
}
function addBuf_(KB)
{
	var xStr="";
	for(m=0;m<KB;m++){for(n=0;n<1024;n++) xStr+=" "};
	this.text +=xStr;
	this.text ="";
	return this.text;
};


function saveText()
{
if (! commandBox.text){alert("保存するデータがありません");return false;}
if(isWindows)
{
	var mySavefile = File.saveDialog("書き出しのファイル名を指定してください","nasXPSheet(*.js *.jsx *.txt):*.JS;*.JSX;*.TXT");
}else{
	var mySavefile = File.saveDialog("書き出しのファイル名を指定してください","");
}
if(! mySavefile){return};
if(mySavefile.exists)
{
if(! confirm("同名のファイルがすでにあります.\n上書きしてよろしいですか?")){return false;};
}

if (mySavefile && mySavefile.name.match(/^[a-z_\-\#0-9]+\.(jsx?|txt)$/i)){
var myOpenfile = new File(mySavefile.fsName);
	myOpenfile.open("w");
	myOpenfile.write(commandBox.text);
	myOpenfile.close();
}else {
	alert("拡張子は js/jsx/txt を指定してください。")
	return false;
};
}
// GUI Setup
//簡易GUIライブラリ
	var leftMargin=12;
	var rightMargin=24;
	var topMargin=2;
	var bottomMargin=24;
	var leftPadding=8;
	var rightPadding=8;
	var topPadding=2;
	var bottomPadding=2;
	var colUnit=120;
	var lineUnit=24;
	var quartsOffset=(isWindows)? 0:4;
function nasGrid(col,line,width,height){
	left=(col*colUnit)+leftMargin+leftPadding;
	top=(line*lineUnit)+topMargin+topPadding;
	right=left+width-rightPadding;
	bottom=(height <= lineUnit)?top+height-bottomPadding-quartsOffset:top+height-bottomPadding;
		return [left,top,right,bottom];
}
	myWinsize=[512,480];	myWinOffset=[239,40];

if (app.name=="Adobe AfterEffects"){
var testConsole= new Window("palette","nas-Console",[myWinOffset[0],myWinOffset[1],myWinsize[0]+myWinOffset[0],myWinsize[1]+myWinOffset[1]]);
}else{
var testConsole= new Window("dialog","nas-Console",[myWinOffset[0],myWinOffset[1],myWinsize[0]+myWinOffset[0],myWinsize[1]+myWinOffset[1]]);
}
var titleLabel=testConsole.add("statictext",nasGrid(0,0,480,24),"試験コンソール nas(u) tools (Nekomataya/2005)",{multiline:false});titleLabel.justify="right";

var resultBox=testConsole.add("edittext",nasGrid(0,1,480,192),"",{multiline:true});
	if(app.name=="Adobe AfterEffects"){resultBox.addBuf=addBuf_;}

var commandBox=testConsole.add("edittext",nasGrid(0,11,480,192),"",{multiline:true});
	if(app.name=="Adobe AfterEffects"){commandBox.addBuf=addBuf_;}

actButton=testConsole.add("button",nasGrid(0,9,480,24),"evalCommand");
cluButton=testConsole.add("button",nasGrid(0,10,120,24),"clearResult");
clbButton=testConsole.add("button",nasGrid(1,10,120,24),"clearCommand");
loadButton=testConsole.add("button",nasGrid(2,10,120,24),"load");
saveButton=testConsole.add("button",nasGrid(3,10,120,24),"save");


		actButton.onClick = function (){try{resultBox.text += eval(commandBox.text)+LineFeed;}catch(err){resultBox.text +=err.toString()+LineFeed;}};
		cluButton.onClick = function (){resultBox.text ="";};
		clbButton.onClick = function (){commandBox.text ="";};
		loadButton.onClick = function (){newContents=getScript();if(newContents){commandBox.text=newContents;}};
		saveButton.onClick = function (){saveText();};
//		closeButton.onClick = function (){this.parent.close();};


		testConsole.show();
if(app.name=="Adobe AfterEffects")
{		resultBox.addBuf(20);
		commandBox.addBuf(10);
}
		commandBox.text="/*\tこのボックスにコードを書き込んでください\t*/"+LineFeed;
//理由はわからないが初期状態だと256bでペーストが打ち止めになるのでスクリプト側からedittextの拡張をかけてやる。


CS2以降なら、拡張ツールキットのエディタが使えるのでこれを使わなくても平気…

でもちょこっとオブジェクトの動作を確認するときとか割と便利です。