クリエイター手抜きプロジェクト[172]Illustrator CS3編 アンドゥアニメーション
── 古籏一浩 ──

投稿:  著者:


llustrator CS3から、新たにアンドゥ、リドゥ機能がスクリプトから制御できるようになりました。不思議なことに、Photoshopには標準でヒストリーパレットがあり、任意のヒストリーに戻せるのに対して、Illustrator CS3ではヒストリーパレットもなく、手作業またはバッチで一定回数アンドゥを繰り返して元に戻す、といった作業をしなければなりません。

また、機能が使えるようになったと言ってもヒストリー機能はないので、何回アンドゥしたのかが全く不明です。
20回前に戻したいなら



for(i=0;i < 20; i++) app.undo();

のスクリプトで元に戻すことができます。
戻す時にapp.redraw()を使うと、描画過程を表示してくれます。

for(i=0;i < 20; i++) { app.undo(); app.redraw(); }

app.undo()の代わりにapp.redo()にすると、やり直してくれます。

さて、このアンドゥ機能を使ってヒストリーアニメーションを作成することができます。Photoshopでは以前にやりましたが、IllustratorではCS3しかできません。また、Illustrator CS3の場合、メモリがあれば無制限に取り消しが可能になっています。

以下のスクリプトは99回までの取り消しを行ない、個別にファイルとして書き出します。これを、AfterEffectsなどを使って表示すればIllustratorによるヒストリーアニメーションを作成することができます。

folderName = Folder.selectDialog("フォルダを選択してください");
if (folderName)
{
for (i=0; i< 99; i++)
{
filename = folderName + "/" + i +".ai";
app.activeDocument.saveAs(new File(filename));
app.undo();
redraw();
}
}
for (i=0; i< 99; i++)
{
app.redo();
}

Illustrator CS3では無制限に取り消しが可能なので、任意の数まで取り消しできるようにしたい場合には、以下のスクリプトを使ってください。最初に何回まで取り消し処理を行なうのかを指定します。

なお、どちらのスクリプトも実行後には最新の状態に戻すようにしてあります。

count = prompt("アンドゥ回数は?", 99);
count = eval(count);
folderName = Folder.selectDialog("フォルダを選択してください");
if (folderName)
{
for (i=0; i< count; i++)
{
filename = folderName + "/" + i +".ai";
app.activeDocument.saveAs(new File(filename));
app.undo();
redraw();
}
}
for (i=0; i< count; i++)
{
app.redo();
}


【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>

余っている本をブックオフに持って行ったら、まったく同じ本なのに一回目と二回目で金額が違ってました。違っていたというよりも、一人の店員は0円扱いで持ち帰りますか? とのセリフ……。同じ本を同じ日に売りに行く人はいないだろうけど、店員によって違うというのは不思議。自分の本も持って行ったら0円という評価でした。IT技術に対してのブックオフの評価ってマイナスなんですね。

< Ajaxライブラリでかんたんインターフェイスデザイン >
< http://www.amazon.co.jp/exec/obidos/ASIN/4861005698/dgcrcom-22/
>

さらにjQuery本も出ます。こっちはバッチリOK。
< 実践!Ajaxフレームワーク jQuery >
< http://www.amazon.co.jp/exec/obidos/ASIN/4839928541/dgcrcom-22/
>

photo
Ajaxライブラリで かんたんインターフェイスデザイン
古籏一浩
ビー・エヌ・エヌ新社 2008-06-25



photo
実践!Ajaxフレームワーク jQuery
古籏 一浩
毎日コミュニケーションズ 2008-06-28

by G-Tools , 2008/06/23