フルスクリーン時のカーソル座標

544 views
Skip to first unread message

snar...@gmail.com

unread,
Nov 18, 2014, 8:39:52 AM11/18/14
to krk...@googlegroups.com
吉里吉里Z(1.1.0.2)でフルスクリーン時に黒帯クリック
してもonPrimaryClick()にならないことがあったので調べたら、
以下のような現象がありました。

これは吉里吉里Zの仕様でしょうか。


[現象]
フルスクリーン表示でマウスをクリックした際、得られる
Layer.cursor[XY]が吉里吉里と異なる。
具体的には、primaryLayer.cursor[XY]が、吉里吉里2では
フルスクリーン画面でも黒帯を除いた表示画面左上を0,0と
している(左黒帯部分はcursorX < 0)が、吉里吉里Zでは
フルスクリーン画面左上を0,0としているように見える。


[テストスクリプト]
system/MainWindow.tjs の KAGWindow.onMouseDown()関数に、
以下のようにデバッグ情報の表示行を追加して確認した。
function onMouseDown(x, y, button)
{
// フルスクリーン時の画面外クリックを判定
if (fullScreened)
{
dm('x = '+x+', y='+y+', btn='+button);
// x,yは実座標のためプライマリレイヤで判定
var pl = primaryLayer;
var px = pl.cursorX;
var py = pl.cursorY;
dm('px = '+px+', py='+py+', pl.width='+pl.width+', pl.height='+pl.height);
(snip)


[吉里吉里2での値]
以下は、吉里吉里2.31.2013.411を使い、1980x1200の
ディスプレイに800x600のゲーム画面をフルスクリーン
表示した時に、左下、右下それぞれをクリックした際の
座標。

左下:
21:54:11 x = -160, y=1199, btn=0
21:54:11 px = -80, py=599, pl.width=800, pl.height=600

右下:
21:54:13 x = 1759, y=1199, btn=0
21:54:13 px = 879, py=599, pl.width=800, pl.height=600


[吉里吉里Z(1.1.0.2)での値]
上と同じ条件での実行結果。
px が吉里吉里2とZとで大きく異なる。
※ pyとyが少し異なるのはメニューを表示していたため

左下:
21:33:22 x = -160, y=1180, btn=0
21:33:22 px = 0, py=590, pl.width=800, pl.height=600

右下:
21:37:20 x = 1759, y=1180, btn=0
21:37:20 px = 959, py=590, pl.width=800, pl.height=600


現在の最新KAGに付属しているMainWindow.tjsは、黒帯
クリックを拾うために kag.onMouseDown()をトラップして
黒帯かどうかを判定していますが、吉里吉里Zではこの判定を
誤ることがあり、今のままのMainWindow.tjsでは黒帯
クリックでonPrimaryClick()が呼ばれないことがあります。

じん

unread,
Feb 18, 2016, 2:16:50 AM2/18/16
to 吉里吉里Z Q&A, snar...@gmail.com
一部座標変換が漏れていたようなので、修正しました。
https://github.com/krkrz/krkrz/issues/191

次回リリースで直っていると思います。
Reply all
Reply to author
Forward
0 new messages