ひとりも見捨てないことを、あきらめない

学校教育、社会教育、数学、技術家庭科、Youtube、EdTech、ICT、プログラミング、その他

マウスの動きをとらえるには  01/04 土

 画面上で、マウスを動かして、なにかをクリックしたり、なにかを動かしたりということは、よくやることです。私が現在、作成中のアプリケーションでも、

  1. 全体の画面をまず、表示させる
  2. その画面上でマウスを動かし、クリックしたところに図形を表示させる
  3. さらに、表示させた図形を移動させたり、拡大・縮小したりして微調整していく

ということをやっています。このこと自体は、それほど難しいことではありません。

 プログラムで、現在のマウスの位置を取得し、クリックしたときには、こういうものを表示させる、という基本的な事柄は、すべて部品がそろっているので、それらを組み合わせるだけです。しかし、問題なのは、

 すでに部品を配置してしまうと、うまくいかない

 ということです。これは、どういうことかというと、アプリケーションでは、「現在表示されているものの(たとえばAという名前のものだとします)上でマウスが動いたり、クリックされたりしたら、別のもの(Bというものだとします)を表示させる」というふうにプログラムします。

 これは、どうやってプログラムするかというと、「 Aという部品の上での動きを設定する」というところに記入する、という約束になっています。A の上では、こういう動きをするけれども、B の上に来たら、原則としてモノが違うので、違う動きをするということになります。

 これは、当然といえば当然で、スクロールバーやボタンやチェックボックスなど、いろいろなタイプの部品がありますから、そのうえで何かの作業をするときには、それぞれ別々にプログラムする必要があるわけです。

 ところが、私が作っているアプリケーションでは、一番土台となる画像の上に、さまざまな部品を配置していきますので、複数の部品が重なることもありますし、上に部品が乗っていても同じ動きをしないと困ります。でも、上に述べたとおり、部品が違えば動きや働きが違ってくるのが当然なので、じゃあ、いったい、どうすればいいんだということになります。

 しかも、クリックするたびに新しい部品が画面に乗るので、部品の総数は、あっという間に数十になります。それらについて、ひとつひつ「動きや働き」を設定していくのは、極めて非効率的です。

 では、こういうときにはどうすればいいかと、あちこちのページを見てみるのですが、こういう細かい話は、どこにも書いてありませんので、結局、自分で考えなければなりません。

 では、どうするか

 いろいろやってみた結果、わかったことは、

  1. あらかじめ、こういう働きや動きをしてほしい、ということを、まとめて書いておく。
  2. この、まとめて書いたものについて、名前をつけておく
  3. 画面にたくさん配置するものを、あらかじめ用意する。
  4. 用意したものに、上の「名前をつけたもの」を、あらかじめ全部くっつけてしまう(これは、一括操作で可能)
  5. たくさん配置するものは、つくるだけ作っておくが、とりあえず画面に表示させず、クリックしたときに現れるようにする

という方法で可能だということがわかりました。ポイントは、「こうなってほしいということを、まとめて書いておいて、名前をつけておく」ということでした。でも、実際にこういう場面に遭遇しないと、考えるチャンスがありませんし、解決方法もなかなか思いつかないなあと感じました。

 ひとつひとつの課題は、解決しつつありますが、全体が完成するまでには、まだ時間がかかります。のんびり作っていこうと考えています。

f:id:takase_hiroyuki:20191123160855p:plain