マルベリーの収穫が最盛期にはいりました。

皆さんマルベリーはご存知でしょうか?えっ?知らない???桑の実ですよ。実は桑の木はす〜ごく甘い実をつけます。今年は豊作で今週に入ってから早朝にボウルいっぱい収穫してから出勤すると言う状態です。週末あたりにジャムになる予定なのですが、しぼってジュースにするとかもありかもしれません。
今年はみつばちくんが良い仕事をしてくれたのでブルーベリーやレモンの実つきも上々です。しかしレモン100コとかどうするよ…

先日ねた振りしたシンプルなやつです。ここで要件をまとめておきます。

1.ドッキング可能なエクステンションパネルとする。なお、サイズは固定、アピアランスはホストアプリケーションに追随すること。

2.内容はボタンがひとつだけ。

3.ボタンは左クリックで設定したスクリプトを実行。右クリックでExtendscriptのScriptUIを利用したテキスト入力インターフェースを呼び出し。割り当てたスクリプトを編集できるものとする。

4.入力されたスクリプトはローカルストレージ又はそれに類する機能を利用し保持する事。

5.サポートするアプリケーションは以下のリストを参照する事

サポートリスト
HTML版

  • Illustrator
  • InDesign
  • InCopy
  • Photoshop
  • Premire Pro
  • AfterEffects
  • Audition
  • Prelude

Flash版

  • Illustrator
  • InDesign
  • InCopy
  • Photoshop

引っかかりやすいところはクリックイベントまわりですかね…
ということでそこら辺を少しまとめておきます。Flashは…まあ、がんばれwww

ボタンの見本

まずは左クリック。ベーシックな動作です。これはボタン自体のonClickイベントで出来ます。

//HTML
<button name="testbtn0" id="testbtn0">Left Click Me!</button>

//Script
function clickLft() {
  alert("left clicked!");
 }

続いて右クリックを

//HTML
<button name="testbtn1" id="testbtn1">Right Click Me!</button>

//Script
document.getElementById("testbtn1").onmousedown = function(e) {
 if (e.which == 3) {
 alert("right clicked!");
 }
}

単純にonmousedownを拾い帰ってくるwhichプロパティでどのボタンがプレスされたのか判断します。

しかし、この処理はコンテキストメニューが開いてうっとおしくなります。だいたいボタンにコンテキストメニューなんかつけとくなよって思っちゃいますよね?

で、これをなんとかしたいのですが、onmousedownではこれが精一杯かな?

だから以下のようなイベント処理を組み込みます。

//HTML
<button name="testbtn2" id="testbtn2">Click ME!</button>

//Script
document.getElementById("testbtn2").addEventListener('contextmenu', function(e) {
 alert("Right Clicked!!!");
 e.preventDefault();
 }, false);

該当のボタンのcontextmenuの処理に一枚イベントを噛ませます。

そして実装したい処理のあとでデフォルトをpreventしてコンテキストメニュー自体の動作を殺します。

この手法が一番スマートな右クリックとなります。

ten_a

Graphic Designer, Scripter and Coder. Adobe Community Professional.

シェアする