クリエイター手抜きプロジェクト[305]Adobe Illustrator CS3/CS4/CS5編 テキストファイル内の文字を配置し保存する/古籏一浩

投稿:  著者:  読了時間:7分(本文:約3,300文字)


今回は、Illustratorでテキストファイル内の文字を配置し、保存するスクリプトです(まあ昨年11月のネタの続き)。このスクリプトでは連番ファイルではなく、ひとつのAIファイルとして保存します。

また、テロップでphotoshop独自のエフェクトを施さない場合には、Illustratorで配置した後でPhotoshop形式として書き出した方が高速です。スクリプトの処理速度差が150倍ほどあります。テロップが大量にある場合にはIllustratorで配置した後でPhotoshop形式で書き出すのがよいでしょう。

以下のスクリプトは、ひとつのレイヤーに複数のテキストフレームを生成するタイプです。必要な基本ファイルなどはこれまでとまったく同じです。





// テキストファイル内の文字を配置し1つのAIファイルで保存する
(function(){
var aiFile = File.openDialog("基本となるAIファイルを選択してください","*");
if (!aiFile){ return; } // キャンセルされたら何もしない
var textFile = File.openDialog("配置するテキストファイルを選択してください","*.txt");
if (!textFile){ return; } // キャンセルされたら何もしない
var saveFile = File.saveDialog("保存するファイル名を入力してください");
if (!saveFile){ return; } // キャンセルされたら何もしない
var flag = textFile.open("r");
if (!flag){
alert("ファイルが読み込めません");
return;
}
app.open(aiFile);
var layObj = app.activeDocument.layers[0].textFrames[0]; // 一番上のレイヤーを指定
while(!textFile.eof){
var text = textFile.readln(); // 1行読み込む
layObj.contents = text;
layObj = app.activeDocument.layers[0].textFrames[0].duplicate();
}
activeDocument.saveAs(saveFile);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
})();


以下のスクリプトは、Photoshop形式に書き出す場合に使用してください。なお、スクリプトからPhotoshop形式に書き出せますが、レイヤー別に書き出すように設定しても反映されません。つまり、スクリプトから書き出すとうまくいきません(CS3〜CS5いずれも同じ)。

このため、手作業でファイルメニューから「書き出し...」を選択しPhotoshop形式でレイヤーを保持して保存してください。なぜか、これだとうまく保存されます(アピアランスが適用されている場合はアピアランスごと分割されます)。


// テキストファイル内の文字を配置し1つのAIファイルで保存する
(function(){
var aiFile = File.openDialog("基本となるAIファイルを選択してください","*");
if (!aiFile){ return; } // キャンセルされたら何もしない
var textFile = File.openDialog("配置するテキストファイルを選択してください","*.txt");
if (!textFile){ return; } // キャンセルされたら何もしない
var saveFile = File.saveDialog("保存するファイル名を入力してください");
if (!saveFile){ return; } // キャンセルされたら何もしない
var flag = textFile.open("r");
if (!flag){
alert("ファイルが読み込めません");
return;
}
app.open(aiFile);
var layObj = app.activeDocument.layers[0]; // 一番上のレイヤーを指定
var s = (new Date()).getTime();
while(!textFile.eof){
var text = textFile.readln(); // 1行読み込む
layObj.textFrames[0].contents = text;
layObj = app.activeDocument.layers.add();
var dup = app.activeDocument.textFrames[0].duplicate(layObj);
}
var e = (new Date()).getTime();
$.writeln((e-s)/1000+"秒");
activeDocument.saveAs(saveFile);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
})();


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

iPhone/iPadにアーケードゲーム(ゲームセンターのゲーム)を移植すると、ほとんどの場合、期待通り操作できず難儀してしまいます。例えば、バンダイナムコゲームスの「NAMCO ARCADE」はレバー操作と十字キーですが、iPhone/iPadとも操作しにくく、ゲームとして遊ぶのが大変です。収録されている中ではアクション性の薄いドルアーガの塔が、まあ何とか遊べるかなという状態。

・NAMCO ARCADE
< http://www.bandainamcogames.co.jp/mobile/namcoarcade/ >

iPhone/iPad用にアーケードゲームを出しているのは、ナムコだけでなくタイトーにもあります。その最新作が「DARIUS BURST」。

・DARIUS BURST
< http://tap.taito.com/ja/darius.html >

タイトーは「DARIUS BURST」より少し前に、「RAY FORCE」という縦スクロールシューティングゲームも出しています。が、「RAY FORCE」も自機が自分の指に隠れてしまうことが多く、ゲームとしてプレイしにくい状態。

ところが「DARIUS BURST」は、これまでとは違い非常に操作しやすいというか、わりと普通に自機を動かせるようになってます。iPhoneでもちゃんと弾よけができる、というほど。どうせタッチパネルではアーケードゲームを移植しても無理と思っている人は、是非プレイしてみるとよいでしょう。


・毎度おなじみASCII.jpの連載「iBooks AuthorでHTML5の電子書籍作ってみた」
< http://ascii.jp/elem/000/000/665/665232/ >

・クリエイター手抜きプロジェクト【2011年分まで用意しました】
< http://www.openspc2.org/projectX/ >

・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199 >

・10日で覚えるHTML5入門教室
< http://www.amazon.co.jp/dp/4798124184 >

・ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/ >

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。