After Effectsでは、プラグインの他にスクリプト機能によって様々な自動化を行うことが可能です。
そんなスクリプトでは、環境設定で独自の設定を保存し、自由に呼び出すことができます。
本来、外部ファイルへのアクセスはデフォルトでは制限されているのですが、スクリプトで環境設定へ情報を保存する場合はその必要がありません。
例えば、ScriptUIでユーザーが入力した値を保存したい場合など、外部ファイルを用いずとも環境設定に保存すれば、ユーザーに負担なく情報を保存することができます。
そんなスクリプトですが、例えば環境設定を単純に読み書きする場合でも長いコードを書く必要が出てきます。
簡単に一例を挙げます。
- 環境設定が存在するかどうか確認する
- 環境設定が存在する場合その値を取得する
- 環境設定が存在しない場合は値を保存する
if(app.settings.haveSetting("sectionName","keyName") == false){コードを見てのとおり、環境設定の確認・保存・取得それぞれにsectionNameとkeyNameを渡さなければなりません。
app.settings.saveSetting("sectionName","keyName", "myValue");
}
var value = app.settings.getSetting("sectionName","keyName");
alert(value);
今回は、この一連の動作を一つのオブジェクトとして注目して簡略化を計りたいと思います。
PrefSetting Objectは一連の動作をまとめたコードになります。
PrefSetting Object
まずPrefSetting Objectを用いて新規にインスタンスを作成します。コードで言うとこういうことです。
myPref = new PrefSetting("sectionName", "keyName");インスタンス作成時にsectionNameとkeyNameを設定します。
次に値が保存されていないなら保存します。
myPref.saveValue("myValue");値を取得するときはこのようにします。
myPref.getValue();おおざっぱなことはこれでお分かりになったかと思います。
あらかじめmyPrefのインスタンス作成時にsectionNameとkeyNameを設定したことで、後の保存・取得で該当の引数を省略することが可能です。
また、getValueメソッドでセッティングの有無を問わずに呼び出しを行っていますが、内部的には環境設定の有無を判別し、値が存在しない場合はnullを返すようにしています。
this.getValue = function() {これらの機能によって、初めに上げたコードを以下のように省略することが可能です。(環境設定が存在しない場合でもエラーが出ない)
if (this.hasSetting()) {
return app.settings.getSetting(String(name), String(key));
}
return null;
};
myPref = new PrefSetting("sectionName", "keyName");もちろん環境設定が存在するかどうかを判別するメソッドも用意しています。
var value = myPref.getValue();
alert(value);
myPref.hasSetting()一覧はこのようになっています。
PrefSetting Object attribute
名称 | 説明 |
---|---|
savePreferenceAuto | 環境設定を自動で保存するかどうかのフラグです. デフォルトではfalseです. trueをセットするとsaveメソッド呼び出し時に環境設定を自動で保存します. |
名称 | 説明 |
---|---|
saveToDisk() | 環境設定を保存します. このメソッドを呼び出した場合,他のスクリプトなどで変更された値も保存されます. |
setSectionName(newSectionName) | 操作中のセクション名を変更します. |
getSectionName() | 操作中のセクション名を返します. |
setKeyName(newKeyName) | 操作中のキーの名称を変更します. |
getKeyName() | 操作中のキーの名称を返します. |
hasSetting() | 対象の環境設定が存在するかどうかを返します. |
deleteSetting() | 対象の環境設定を削除します. また,環境設定を削除できたかどうか(環境設定が存在しないか)を返します. 削除できた場合はtrueを返します. |
saveValue(value) | 引数を対象の環境設定に値として保存します. |
getValue() | 対象の環境設定の値を取得します. セクションやキーが存在しない場合はnullを返します. |
saveValueAsBool(value) | 引数を対象の環境設定の値にBool値として保存します. |
getValueAsBool() | 対象の環境設定の値をBool値として取得します. セクションやキーが存在しない場合はnullを返します. |
saveValueAsFloat(value) | 引数を対象の環境設定の値にFloat値として保存します. |
getValueAsFloat() | 対象の環境設定の値をFloat値として取得します. セクションやキーが存在しない場合はnullを返します. |
saveValueAsLong(value) | 引数を対象の環境設定の値にLong値として保存します. |
getValueAsLong() | 対象の環境設定の値をLong値として取得します. セクションやキーが存在しない場合はnullを返します. |
saveValueAsString(value) | 引数を対象の環境設定の値にString値として保存します. |
getValueAsString() | 対象の環境設定の値をString値として取得します. セクションやキーが存在しない場合はnullを返します. |
saveValueAsURI(value) | 引数をエンコード(encodeURIComponent)し対象の環境設定に値として保存します. |
getValueAsURI() | 対象の環境設定の値をデコード(decodeURIComponent)し取得します. セクションやキーが存在しない場合はnullを返します. |
内部的にはapp.preferences.saveToDisk();をコールしています。
コード内部には、コメントで引数などの説明も合わせて一例を載せているので参考にしてください。
著作権は捨てていませんが、個人・商業での使用はご自由にどうぞ。
ダウンロード
この記事に対する 1 の反応があります
コメントをどうぞ!