に投稿

レイヤーと関連付けられていないため、値を設定できません

スクリプトからSourceTextのスタイルをいじろうとした時に出たエラー。TypeAnimeJP開発中に追加テキストを左揃え固定にしようとしたときに遭遇。

// 左揃えに
var tmpTextDocument = tmpTextLayer.property("Source Text").value
tmpTextDocument.justification = ParagraphJustification.LEFT_JUSTIFY
tmpTextLayer.property("Source Text").setValue(tmpTextDocument)

こんな感じにしたらいけた。一回valueで取得して値をいじって再度setValue。フォントを指定するときと同じ流れ。

に投稿

エクスプレッションを使うスクリプトを書くときの注意点

プロジェクト設定のエクスプレッションエンジンが「以前のExtendScript」だと正常に動作しない。エクスプレッションがエラー吐く。

プロジェクト設定は取得できるので、以前のExtendScriptが選択されている場合は警告を出して処理を停止させるとかが良いと思う。

app.project.expressionEngine
に投稿

ファイル操作スニペット

ファイルの存在を確認。ファイルの保存・読み込み。ファイル扱うスクリプトは毎回頭にこれ書けばいいかも。

var dataPath = Folder.decode(Folder.userData) + '/Aescripts/YourScriptName';
var f = new Folder(dataPath);
if (!f.exists) f.create();

function fileExist(filename) {
  var file = new File(dataPath + "/" + filename + ".txt");
  return file.exists
}

function writeFile(object, filename) {
  var myFile = new File(dataPath + "/" + filename + ".txt");
  myFile.open("w");
  myFile.encoding = "UTF-8";
  myFile.write(JSON.stringify(object));
  myFile.close();
}

function readFile(filename) {
  var file = new File(dataPath + "/" + filename + ".txt");
  file.open('r');
  file.encoding = 'UTF-8';
  return JSON.parse(file.readln());
}
に投稿

Object.keys()が使えない

こんな関数を用意してやる。

var getKeys = function(associativeArrayObject) {
  var arrayWithKeys=[], associativeArrayObject;
  for (key in associativeArrayObject) {
    // Avoid returning these keys from the Associative Array that are stored in it for some reason
    if (key !== undefined && key !== "toJSONString" && key !== "parseJSON" ) {
      arrayWithKeys.push(key);
    }
  }
  return arrayWithKeys;
}

使い方

getKeys(Object)
に投稿

自分にはできない表現に価値を感じる

どうやって作ったのか、何故そうなったのかわからない、理解できないものに価値を感じる。すごい!ってなる。この感情を一番強く感じたのは大麦さんの「MOTHERLAND」だった。メイキング見ても理解不能でワロタ。

逆にやり方がわかってしまうと途端に熱が冷める。なーんだって感じ。憧れは理解から程遠い存在であってほしい。