InDesign居残り補習室

どれだけ勉強しても上達しない管理人の、InDesign備忘録を中心に。たまにブックレビューなども。

スポンサーサイト  --/--/--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


小ネタ  2010/05/25

小ネタです。

Javascriptにおいて、selectionが複数の場合、できればクリック順であってほしい。
そう思ったことはありませんか?
私は常にそう思っています(^^;

少なくとも、CS4まではそうではなかった。そこで、CS5ではこの点がどうなったのか確認。
複数のテキストフレームを選んでおき、mySel[0]から順にn番目という文字列をカウントアップしながら入れていくテスト。

var mySel = app.activeDocument.selection;
for (var i=0; i<mySel.length; i++){
mySel[i].contents = i+1 + "番目";
}


WS000375.jpg

WS000376.jpg
最初のうちは、描画順フレーム作成順なのかなーと思いました。入れ替えた方(下側のフレーム群)は、入れ替えた通りの順番に番号を振ってくれましたから。
ひとつずつクリックしようが、クリック順を意図的に変更してやろうが、はたまた13個のフレームを一気に選択しようが、いずれも同じ結果でした。
ところが。
何度か操作していると、何度目かに番号が変わりました。
上側の番号は変わらなかったのですが、下側の番号が変わったのです。
その変わり方なのですが、あまり厳密な法則はないような気がします。
いえ、私が法則に気付いていないだけという可能性もあるのですが。
詳しい方が教えてくださることを期待しつつ、時間が許せば私ももう少し調べてみます。


追記:
コメント欄でひらくんさんに教えていただき、CS2においてはクリック順にselection配列にpushされていくことを確認しました。
ありがとうございます。
つまり、後から選択に追加したものほどselectionの若い番号に収まっているという格好ですね。
下図はWindows版CS2において、ひらくんさんが教えて下さったスクリプトを使い、一番上のオブジェクトから順に時計回りにクリックした結果。
ランダムにクリックしてもクリック順にテキストを配置してくれました。
CS2.jpg
しかし、CS3以降はどうやらそうではない。
本文の検証では謎な結果が出ているので断言できないけど、一番疑わしいのはやはりInDesign上における描画順ではないのか、と。
おっと、描画順というと誤解を招きそうですね。フレーム作成順と言った方が良いかな。
(2010年05月27日09時30分:本文も「フレーム作成順」に訂正)

この件においてはPICTRIX師匠も悩んでおられるようです。
スポンサーサイト


たしかCS2はクリック順に入ってくれた気がします。
クリック順にテキストを抽出するというスクリプトを動かして
いたので確かだと思います。
ただCS3以降からはクリック順ではなかったですねえ。
どういった順番で入ってくるのか確かに気になるところです。

コメントありがとうございます。

> たしかCS2はクリック順に入ってくれた気がします。

おお、そうでしたか。

> どういった順番で入ってくるのか確かに気になるところです。

知りたいですが、「そこに法則はない」という結論に落ち着きそうな……(^^;

弊社にCS2が1ライセンスだけあったので、今確認してきました。
……やっぱり、他のバージョンと同じです。
クリック順には流し込まれません。
ウチだけなのかな?
時間がとれたら、もう少し検証を続けてみます。

あれれ、何故だろう。スクリプトの種類とか関係あるんですかね。
私の場合はAppleScriptで動かしていました。私もちょっと環境を引っ張りだしてテストしてみます。
ちなみにCS2とCS3のスクリプティング環境の差異を記した下記の文書内に
「The order of the items in the selection property has changed.」
http://wwwimages.adobe.com/www.adobe.com/mena/products/indesign/scripting/pdfs/indesign_cs3_scripting_read_me.pdf
とありますので、CS3以降セレクション内の順番にかかわる仕様に変更があったのはたしかだと思います。
Adobeさん、こんな文書出すんだったらどう仕様が変わったのか書いて欲しい。。。

なるほど、ASとJSでは違うのかもしれませんね。

> Adobeさん、こんな文書出すんだったらどう仕様が変わったのか書いて欲しい。。。

全くです。これじゃ、「変わった」ってことしかわからないよ……。

Windows版CS2のJSで確認しました。
var mySel = app.activeDocument.selection;
var myCount = mySel.length-1;
for (var i=0; i<mySel.length; i++){
mySel[myCount].contents = i+1 + "番目";
myCount --;
}
こんな感じだとクリック順に番号が振られました。
クリックすると選択したオブジェクトがselection配列に
プッシュされていくようですので配列の末尾から番号を
振って行けば選択順になります。ご参考までに。

ありがとうございます。
たしかに、CS2ではクリック順にselection配列に入ってくれますね!
しかし、CS3以降ではやはりそうなってはくれませんね……。
私のやり方では、まだ検証不足の感がありますが、どうやらCS3以降においては、先に描画されたものから順に処理している可能性が高いのでは、と(今のところは)考えています。

追加検証。
CS2でクリック順にselection配列にpushしていくなら、CS3以降のInDesignに「Version 4.0 Scripts」フォルダを作って入れてやればCS2同様の結果が得られるのでは? と思って実験しました。
……だめでした(^^;

コメントの投稿





管理者にだけ表示を許可する

トラックバック

http://kstation2.blog10.fc2.com/tb.php/409-55300dd8

(新しい記事)← ID CS5検証 その3
ID CS5検証 その2 →(古い記事)

 | HOME | 

カレンダー

03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

FC2カウンター

2006年3月28日カウント開始

Amazon

FC2 Affiliate

動くPDF

プロフィール

あわせて読みたい

あわせて読みたいブログパーツ

最近の記事

最近のコメント

最近のトラックバック

Lc.ツリーリンク

RSSリンク

直感カテゴリーツリーV1.1

ブログ内検索

ブロとも一覧

marumi

神楽崎 ゆう


■ ブログ名:I'm writing NOVEL

七篠 銀字


■ ブログ名:風と夜空と氷の国

MS


■ ブログ名:へなちょこDTP

桜桃


■ ブログ名:追憶の桜吹雪

瑪瑙 輝遊


■ ブログ名:千里の道も一歩から

magatu


■ ブログ名:unsigned

暁 鷲 (あかつき しゅう)


■ ブログ名:空を裂け!

NewMark

C-Roll


FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。