[Squeak-ja: 4537] How to BlockerMorph

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4537] How to BlockerMorph

Tomohiro Oda
おだです。

昨晩のSmalltalk勉強会でHandMorphの位置の変更について聞きましたが、
この件について、ひき続きご相談させていただきたいと思います。

私がしたいことは、bounds内にマウスカーソルが入ってくることを阻止
する、BlockerMorph(仮称)を作ることです。

例えば、通常のUIでボタンを使えなくするためにはdisableします。
しかし、それでは使う人にとっては、「ボタンを押したのに動かない」
ということになります。disableはマウスを使ったGUIに慣れた人の常識
であって、現実世界のボタンで押しても動かなければ、「壊れてる?」
と思われてしまうでしょう。

現実世界のボタンを使えなくするには、物理的にプラスチックカバーで
囲って、「そこにボタンがあるのはわかるが押すことができない。押すには
カバーを開けたり破ったりする必要がある。」ことが直感的にわかるように
なっています。

そんな、プラスチックカバーに相当するMorphとして、BlockerMorphを
作りたいのです。そのためには、aHandMorph position: aPointでは
不足しているようです。直感的には、HandMorphを通して、OS側にマウス
位置を知らせる手段が必要だと思います。

以上、ご助言いただければ幸いです。
---
おだ
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4540] Re: How to BlockerMorph

Kazuki Minamitani
南谷です。
昨日はお疲れ様でした。

表示での誤魔化しではありますが、以下のようにするのはいかがでしょうか?

1. BlockerMorphへのMouseEnter時の処理
  マウスカーソルを隠す
  BlockerMorphの外周に、ダミーのカーソル型Morphを貼り付ける

2. BlockerMorphからのMouseLeave時の処理
  マウスカーソルを表示
  ダミーのカーソル型Morphを取り除く

3. BlockerMorphは、MouseEnter、MouseLeave以外の入力イベントを無視する



2011年4月28日8:20 Tomohiro Oda <[hidden email]>:

> おだです。
>
> 昨晩のSmalltalk勉強会でHandMorphの位置の変更について聞きましたが、
> この件について、ひき続きご相談させていただきたいと思います。
>
> 私がしたいことは、bounds内にマウスカーソルが入ってくることを阻止
> する、BlockerMorph(仮称)を作ることです。
>
> 例えば、通常のUIでボタンを使えなくするためにはdisableします。
> しかし、それでは使う人にとっては、「ボタンを押したのに動かない」
> ということになります。disableはマウスを使ったGUIに慣れた人の常識
> であって、現実世界のボタンで押しても動かなければ、「壊れてる?」
> と思われてしまうでしょう。
>
> 現実世界のボタンを使えなくするには、物理的にプラスチックカバーで
> 囲って、「そこにボタンがあるのはわかるが押すことができない。押すには
> カバーを開けたり破ったりする必要がある。」ことが直感的にわかるように
> なっています。
>
> そんな、プラスチックカバーに相当するMorphとして、BlockerMorphを
> 作りたいのです。そのためには、aHandMorph position: aPointでは
> 不足しているようです。直感的には、HandMorphを通して、OS側にマウス
> 位置を知らせる手段が必要だと思います。
>
> 以上、ご助言いただければ幸いです。
> ---
> おだ
>

--
Kazuki Minamitani
[hidden email]