今回は、何も描かれていないレイヤーがあるか調べるスクリプトです。
Photoshopで間違って空のレイヤーを作成した場合や、見た目では何もないように見えるけど、実際にはピクセルが存在しているか確認したい場合に使います。
まず、以下のスクリプトは選択しているレイヤー(複数選択されているとだめなのでひとつだけ)が空っぽかどうかを調べます。なお、レイヤーパネルで何かレイヤーを選択してから実行しないと、エラーで動作しないので注意してください。
// アクティブレイヤーが空っぽかどうか調べる
var layObj = app.activeDocument.activeLayer;
if (checkEmptyLayer(layObj)){
alert("レイヤーは空っぽです");
}else{
alert("レイヤーは空ではありません");
}
// 内容が空っぽかどうか調べる関数
function checkEmptyLayer(layObj){
var rect = layObj.bounds;
var left = parseFloat(UnitValue(rect[0], "px"));
var top = parseFloat(UnitValue(rect[1], "px"));
var right = parseFloat(UnitValue(rect[2], "px"));
var bottom = parseFloat(UnitValue(rect[3], "px"));
if ((left == 0) && (top == 0) && (right == 0) && (bottom == 0)){
return true; // レイヤーは空っぽだった
}
return false;
}
選択しているレイヤーだけを調べるというのは、あまり実用的ではないかもし
れません。そこで、すべてのレイヤー/サブレイヤーを調べて、空っぽのレイ
ヤーがあるかどうかを調べます。以下のスクリプトは空っぽのレイヤーがいく
つあるかを調べます。
// レイヤーが空っぽかどうかすべてのレイヤーを調べる
var list = getAllLayer(app.activeDocument, []); // すべてのレイヤーを取得する
var count = 0; // 空っぽのレイヤーの数を入れる変数
for(var i=0; i<list.length; i++){
if (checkEmptyLayer(list[i])){
count++;
}
}
if (count > 0){
alert("空っぽのレイヤーが"+count+"個ありました");
}else{
alert("空っぽのレイヤーはありませんでした");
}
// 内容が空っぽかどうか調べる関数
function checkEmptyLayer(layObj){
var rect = layObj.bounds;
var left = parseFloat(UnitValue(rect[0], "px"));
var top = parseFloat(UnitValue(rect[1], "px"));
var right = parseFloat(UnitValue(rect[2], "px"));
var bottom = parseFloat(UnitValue(rect[3], "px"));
if ((left == 0) && (top == 0) && (right == 0) && (bottom == 0)){
return true; // レイヤーは空っぽだった
}
return false;
}
// レイヤーセットを除くすべてのレイヤーオブジェクトを取得する
function getAllLayer(obj, ary){
for(var i=0; i<obj.layers.length; i++){
if (obj.layers[i].kind){ // レイヤーセット以外の場合
ary.push(obj.layers[i]);
}else{ // レイヤーセットなので再帰
getAllLayer(obj.layers[i], ary);
}
}
return ary; // 結果は配列で返す
}
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
レトロゲーマーなので、あの映画を見に行かねば! ということで見てきました。ピクセル(PIXEL)
・ピクセル
http://www.pixel-movie.jp/
ギャラガが襲ってくるというのは、お〜なるほど、という感じ。でも、実際に戦闘するのはセンチピード。知らないゲームだ。
・センチピード
http://b9life.hatenablog.com/entry/2015/09/16/210341
最終的に戦うのは、ドンキーコングだけど、その前にパックマンとも戦う。だから主役はモンスター側。なんだけど、ここで(かなり最初の段階で)翻訳に違和感が……。
レトロゲームに詳しくない人が翻訳したのか、アメリカでの用語・名称になっているため、「え?」みたいなところが結構ある。そのまま横文字(カタカナ語)にされたのもあって何とも。DVD/Blurayで出すときには日本人にも分かる言葉にして欲しいところ。
この映画のように空中で立体的に敵を映し出して撃ちまくる、というのは将来的にできそうな気はする(プロジェクションマッピングは平面なので違う)。補償光学の際に利用するレーザーでガイド星を生成できるわけだから、レーザーをうまく利用して空中にピクセル(点)が描けそうなんだけど。
・補償光学
https://ja.wikipedia.org/wiki/補償光学
・レーザーガイド星
https://ja.wikipedia.org/wiki/レーザーガイド星
でも、そんな面倒なことするくらいならドローンにLEDの四角いランプをつけて飛ばして、それを打ち落とすゲームの方が安くできそう。
・JavaScriptによるデータビジュアライゼーション入門
http://www.amazon.co.jp/dp/4873117461/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・Adobe JavaScriptリファレンス
http://www.amazon.co.jp/dp/B00FZEK6J6/
・ExtendScript Toolkit(ESTK)基本編
http://www.amazon.co.jp/dp/B00JUBQKKY/
・データビジュアライゼーションのためのD3.js徹底入門
http://www.amazon.co.jp/dp/4797368861/
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/