リンクをクリップボードにコピー
コピー完了
選択しているテキストレイヤーのフォントを、ランダムに変更していくスクリプトを書ける方いたら教えていただきたいです
var comp = app.project.activeItem;
var selectedLayers = comp.selectedLayers;
var fontList = app.fonts.list();
for (var i = 0; i < selectedLayers.length; i++) {
var layer = selectedLayers[i];
if (layer.property("Source Text")) {
var randomIndex = Math.floor(Math.random() * fontList.length);
var randomFont = fontList[randomIndex];
layer.property("Source Text").property("Font").setValue(randomFont);
}
}
このスクリプトだとエラーが出てしまってうまくいきません、app.fonts.listってとこらへんでエラーでる感じなんですが、よろしくお願いします
リンクをクリップボードにコピー
コピー完了
方法はわからないのですが、fonts.list() は、何か参考にされたのでしょうか。
テキストレイヤーの作成については、下記の記事が参考にならないでしょうか。
After Effects スクリプトリファレンス - TextDocument object
リンクをクリップボードにコピー
コピー完了
<追記>
先のリンクを参考にして、フォントを変更するスクリプトを作成してみました。
1行目に候補となるフォント名を入力して、4行目の数値でフォントを選択します。
数値は、0から始まり、フォント数が3個なら0〜2の値を入力します。
この数値をランダムにするコードを追加すれば、フォントをランダムに変えることができます。
var f = new Array ("ArialRoundedMTBold" , "BrushScriptMT" , "Noteworthy-Bold"); //フォント名
var textProp = app.project.item(1).layer(1).property("Source Text");
var textDocument = textProp.value;
textDocument.font = f[1]; // 0〜2の数値を入力
textProp.setValue(textDocument);
リンクをクリップボードにコピー
コピー完了
<追記>
ランダムにフォントを選択する方法も作成してみました。
フォント名を追加するだけで利用できます。
var f = new Array ("ArialRoundedMTBold" , "BrushScriptMT" , "Noteworthy-Bold"); //フォント名
var n = Math.floor(generateRandomNumber()*(f.length));
var textProp = app.project.item(1).layer(1).property("Source Text");
var textDocument = textProp.value;
textDocument.font = f[n];
textProp.setValue(textDocument);
リンクをクリップボードにコピー
コピー完了
IllustratorかPhotoshopのスクリプトは、app.fontsを使用してフォント名をまとめて出力できるようなので、エディターを使って「改行」を「","」に置換えると上記のスクリプトにフォント名を全て埋め込むことができます。
リンクをクリップボードにコピー
コピー完了
ありがとうございます、せっかく教えていただいて申し訳ないんですが、フォントを新しく追加するたびにスクリプトを変更するとなると実用的ではないので、力業の手動でフォントを入れるとゆうよりも、今使っているフォントを全て対象にできるスクリプトであってほしいんですが、わからないでしょうか?
リンクをクリップボードにコピー
コピー完了
After Effects のスクリプトでは、使用できるフォントを参照することが出来ないので、フォント名を配列して対応させています。
全てのフォント名を書き換える作業は、2〜3分で出来ると思います。
この方法以外だと、下記リンクが関連した内容に思えますが、Windows用のため、どのように動作するかは確認していません。
Find available fonts in Adobe After Effects with extendscript - Stack Overflow