applyPresetA - [[レンダー乙女とか]]
目次
applyPresetA
AVLayer.applyPresetの不具合回避代用メソッド
メソッド名は applyPresetA(lternate)くらいの意味です。このコードを実行するとAVLayerオブジェクトでapplyPresetA()メソッドが使用可能になります。 つまり以下のよう使用が可能になるわけです。
app.project.item(1).layer(1).applyPresetA(myPresetFile);
大方、マニュアルのapplyPreset()メソッドと同じ働きをします。 本来ならば、applyPreset()メソッドがこのように働くべきなのですが、残念ながらそのようになっていない為の バグ回避用 代用メソッドです。 内部的には、コードをご覧のとおり。
- 現在のレイヤセレクト状態を控える
- 全てのレイヤのセレクトを解除
- 対象レイヤ(自分自身)をセレクトして、本来のapplyPreset()を呼ぶ。
- セレクト状態を復帰 このように働いています。
セットアップ
このコードは、AVLayerのプロトタイプに対してメソッドを作成していますので、AE起動時点で一度だけ実行しておけば、それ以降作成されるすべてのレイヤーで継承されて同じコードが使用できます。
起動時に自動で実行させるためには、
スクリプトに(applyPresetA.jsx 等)適切なファイル名を与えて、"Scripts/Startup/"フォルダに保存してから、AEを再起動してください。 nas環境をご使用の方は、nasStartup.jsx内の開始時実行スクリプトに追加しても同様の効果が得られます。
メソッドの使用方法
- 書式
- AVLayer.applyPresetA(File)
- 例
- app.project.item(1).layers[2].applyPresetA(File.openDialog("プリセットファイル選択"));//mac app.project.item(1).layers[2].applyPresetA(File.openDialog("プリセットファイル選択",".ffx"));//win
- 戻り値
- プリセット適用成功時は undefined(本来のapplyPresetの戻り値) /引数の不正で操作をパスした時は false
ご注意
現在はとりあえずダウンロードとかありません。そのうち乙女のライブラリにこのまま組み込む予定このコードは、内部でapplyPresetを呼び出していますのでAE7以降の環境でのみ実行可能です。 AE6.5の方は残念ですが他の方法をご利用下さい。
source
//applyPresetのバグ回避代用メソッド /* */ AVLayer.prototype.applyPresetA=function(myFile){ var myResult=false; if((myFile instanceof File) && (myFile.exists)){ var mySelection=new Array(); app.beginUndoGroup('myApplyPreset'); for(var i=0;i<this.containingComp.layers.length;i++){ mySelection.push(this.containingComp.layers[i+1].selected); this.containingComp.layers[i+1].selected=false; } this.selected=true;myResult=this.applyPreset(myFile); for(var i=0;i<this.containingComp.layers.length;i++){ this.containingComp.layers[i+1].selected=mySelection[i]; } app.endUndoGroup(); }else{ // エラーメッセージが必要ならここをアクティブに 不要ならばブロックごと削除 // alert("no File "+myFile.name); } return myResult; } //Test この下は試験コードなので捨ててチョーダイ app.project.item(1).layer(1).applyPresetA(File.openDialog(""));
Nekomataya/kiyo 2008
Powered by YukiWiki 2.1.2a / Modified by Nekomataya.