質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2484閲覧

[Adobe JavaScript] GUIウィンドウ上に表示した画像がずれてしまう

stkm

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/02/14 15:21

やりたいこと

Adobe JavaScriptにて、GUIウィンドウ上に表示した画像をクリックする事でその座標を表示する処理を書いておりますが、想定通りに座標が取得出来ず困っております。

まず、下記に処理内容を記載します。

ソースコード

AdobeJavaScript

1// 画像情報を定義 2var img_path = "test_img01.jpg"; 3var img_width = 1352; 4var img_height = 956; 5 6var winObj = new Window("dialog","Test",[0, 0, img_width, img_height], {borderless:true}); 7var fileObj = new File(img_path); 8winObj.add("image",[0, 0, img_width, img_height], fileObj); 9 10// クリック時のイベント 11winObj.addEventListener("mousedown", function(e) { 12 // クリックした所の座標を表示する 13 alert('clientX = '+e.clientX+'\n'+'clientY = '+e.clientY); 14}); 15 16winObj.center(); 17winObj.show();

発生している問題

補助線付きのテスト画像を用意し、

【test_img01.jpg】(1352px × 956px)
test_img01.jpg

 ↓ ↓ ↓ ↓ ↓ ↓ ↓ 

中心点をクリックした時に、  「水平位置(X軸)=676px/水平位置(Y軸)=478px」 の座標が取得出来る事を期待しているのですが、 垂直位置の座標がずれて取得されてしまいます。 (水平位置は問題なく取得出来ています) そもそも、GUIウィンドウ上に表示された時点で画像上部が70pxほど見切れており、 この現象が根本的な原因と考えていますが、解決出来ずにいます。 ```![イメージ説明](9f8d4e70964690c92da814dde5aa615a.jpeg) ### 補足情報 PC: MacBook Air(13inch) OS: OS X El Capitan(10.11.6) 今回の問題が発生したAdobeソフト: PhotoShop CS6 AfterEffects CC 2017

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

解決方法

画像の表示方法を、ScriptUIImage.newImage()に変更。

var fileObj = new File(img_path); winObj.add("image",[0, 0, img_width, img_height], fileObj);

↓ ↓ ↓ ↓ ↓ ↓ ↓

var pObj = winObj.add("panel",[0, 0, img_width, img_height]); pObj.onDraw = function() { var myGraphics = this.graphics; var myImage = ScriptUI.newImage(img_path); myGraphics.drawImage(myImage, 0, 0); }

実行結果

イメージ説明

未検証ですが、おそらくimageオブジェクトでは一定サイズ以上の画像を表示させようとした場合に画像上部の見切れが発生するのだと思います。
(imageオブジェクトはアイコンサイズ程度の利用が妥当...?)

投稿2019/02/15 16:19

stkm

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PhotoShop で採れるかわかりませんが、e.pageX e.pageY とかどうでしょう。

【マウスイベントで取得されるカーソル座標パラメータの整理(offset, page, screen, client) - Qiita】
https://qiita.com/yukiB/items/31a9e9e600dfb1f34f76

投稿2019/02/14 15:40

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

stkm

2019/02/15 01:53 編集

コメント頂きありがとうございます。 残念ながら、e.offsetX / e.offsetY / e.pageX / e.pageY では取得する事が出来ません。 (Adobe JavaScriptではプロパティこれらのプロパティがない様で、取得出来ず undefined となります…)
stkm

2019/02/15 13:31

ご提案ありがとうございます。 GUIウィンドウ上に表示された時点でそもそも画像の上部が見切れている為、 残念ながらboundsを利用しての補正が難しく... ・・・と、リファレンスを漁っていた所、別の実装方法でやりたい事が実現出来ました。 この後、解決方法を記載致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問