第 6 章 クラウド変数を用いた「めざせ!ローマ字マスター☆~えい語とのちがいを知ろう
6.7 本アプリにある機能とそのプログラム
6.7.2 ソフトウェアキーボード機能
本アプリではソフトウェアキーボードへの切り替えが可能となっている。ローマ字入力
画面(図6-5)下部の「キーボード切りかえ」ボタンをクリックすることにより、ソフトウ
ェアキーボード入力画面(図6-19)に切り替わる。また、切り替わる際には、入力してい た文字はクリアされる。ソフトウェアキーボード入力画面から「キーボード切りかえ」ボ タンをクリックすると再びキーボードよるローマ字入力画面に切り替わる。
図6-19 ソフトウェアキーボード入力画面
(1)スプライト名:「ソフトウェアキーボード画像」
スプライト「ソフトウェアキーボード画像」は図6-20のコスチューム、図6-21のプロ グラムを持っている。旗がクリックされた時、メッセージ「決定が押された」「キーボード 切り替え」を受け取った時に非表示にするプログラムやメッセージ「ソフトウェアキーボ ードに切り替え」を受け取った時に指定した座標に再配置してから表示するプログラムが を持っている。
図6-20 スプライト「ソフトウェアキーボード画像」が持つコスチューム
65
図6-21 スプライト「ソフトウェアキーボード画像」が持つプログラム
(2)スプライト名:「ソフトウェアキーボードから文字表示」
ソフトウェアキーボードで押された文字を認識する為にクリック時の座標の値から判別 するようにしている。スプライト「ソフトウェアキーボードから文字表示」が持つプログ ラムは図6-22に示すプログラムである。初めにメッセージ「ソフトウェアキーボードに切 り替え」を受け取った時にプログラムが実行される。変数「決定が押されたか」の値が1 または変数「キーボード入力mode」の値が1になるまで、ソフトウェアキーボードによる 文字入力プログラムを動かし続ける。次にスプライト「キーボードから文字表示」中のプ ログラムと同様、リスト「入力文字」の長さを参照して、長さが(9+変数「「’」、「^」の打 たれた合計」の値)と比べてどうなっているかで後に実行するプログラムを決める条件分 岐のプログラムを実行する。まず、長さが(9+変数「「’」、「^」の打たれた合計」の値)以 下である場合のプログラムの動きを説明する。長さが(9+変数「「’」、「^」の打たれた合計」
の値)以下である場合に動くプログラムは、図6-22(a)中の当該条件分岐プログラム以下か
ら、図6-22(b)、図6-22(c)、 図6-22(d)までのプログラムである。マウスが押された時、変
数「クリックx座標」「クリックy座標」へ順にマウスのx座標、マウスのy座標を入れる。
後は変数「クリックx座標」「クリックy座標」は画面上のどこの点であるのかを条件分岐 で探るようにしている。具体的にまずはy座標に着目し変数「クリックy座標」で探り始 める。その理由は、本アプリで使用するソフトウェアキーボードで扱うキーは縦方向で見 ると不揃いであるが、Enterキーがないので横方向で見ると一直線に揃っているからである。
ソフトウェアキーボードの上から一段目のy座標の範囲は-「53から-16まで」で二、三、
四段目のy座標の範囲は順に「-94から-56」、「-135から-99」、「-177から-141」である。
変数「クリックy座標」がこのいずれかの範囲に含まれていた場合、後は変数「クリックx 座標」がどこにあるのかを条件分岐で探れば、ソフトウェアキーボードのどのキーが押さ れたのかを容易に調べることが可能となる。調べた後には、対応する文字をリスト「入力 文字」に格納し、対応するメッセージ「入力文字表示a」から「入力文字表示z」「アポス トロフィー表示」「キャレット表示」のいずれかを送れば、スプライト「a」「b」…「z」「’」
「^」がメッセージを受け取って実行され、文字を表記する。ここまでが、リスト「入力文 字」の長さが(9+変数「「’」、「^」の打たれた合計」の値)以下であった場合のプログラム
66
の動作である。次にリスト「入力文字」の長さが(9+変数「「’」、「^」の打たれた合計」の 値)より大きくなった場合のプログラムの動作を説明する。リスト「入力文字」の長さが
(9+変数「「’」、「^」の打たれた合計」の値)より大きくなった場合は図6-22(e)の部分のプ ログラムが実行される。このプログラムは、例えば「aaaaaaaaaa」と上限10文字入力し たとしても、後「^」であれば追加できるようにし「aaaaaaaaaâ」と表記できるようにす る機能を持っている。このプログラムがなかった場合「aaaaaaaaaa」の後にソフトウェア キーボードでキャレットキーを押しても「^」は追加されなくなってしまう。
(a) プログラム(1/5)
図6-22 スプライト「ソフトウェアキーボードから文字表示」が持つプログラム
67
(b) プログラム(2/5)
図6-22 スプライト「ソフトウェアキーボードから文字表示」が持つプログラム(続き)
68
(c) プログラム(3/5)
図6-22 スプライト「ソフトウェアキーボードから文字表示」が持つプログラム(続き)
69
(d) プログラム(4/5)
図6-22 スプライト「ソフトウェアキーボードから文字表示」が持つプログラム(続き)
70
(e) プログラム(5/5)
(3)スプライト名:「決定ボタン」「決定ボタンミニ」「書き直すボタン」「書き直すボタンミ
ニ」「きりかえボタン」「きりかえボタンミニ」
スプライト「決定ボタン」「書き直すボタン」「きりかえボタン」はキーボードから文字 を入力するローマ字入力画面(図6-5)で使用され、スプライト「決定ボタンミニ」「書き 直すボタンミニ」「きりかえボタンミニ」はソフトウェアキーボードから文字を入力するソ フトウェアキーボード入力画面(図6-19)で使用されるスプライトである。スプライト「決 定ボタン」「書き直すボタン」「きりかえボタン」はそれぞれ一つずつ図6-23のコスチュー ムを持っている。スプライト「決定ボタンミニ」「書き直すボタンミニ」「きりかえボタン ミニ」は対応してスプライト「決定ボタン」「書き直すボタン」「きりかえボタン」の持つ コスチュームと同じデザインのものを持っている。但し、画像の大きさは異なる。
図6-24(a)はスプライト「決定ボタン」のプログラムである。プログラム1は旗がクリッ
クされた時に指定した座標に再配置して、変数「決定が押されたか」を初期値0の押され ていない状態にし、自身を非表示にするプログラムである。プログラム2はスプライト「決 定ボタン」がクリックされた時に実行するプログラムであり、変数「決定が押されたか」
の値を1にし、メッセージ「決定が押された」を送る。その後に、自身を非表示にしてス タンプで複製表示された文字画像を全て消す。変数「決定が押されたか」の値が1になる
と、図6-13(a)や図6-22(a)のプログラムに影響して、動作していたキーの判断・文字の入出
力の繰り返し処理を止めることができる。プログラム3、4はそれぞれメッセージ「個人
図6-22 スプライト「ソフトウェアキーボードから文字表示」が持つプログラム(続き)
71
mode」「ソフトウェアキーボードに切り替え」を受け取った時に自身を非表示にするプログ
ラムである。プログラム5ではメッセージ「キーボード切り替え」を受け取った時に実行 され、何か文字入力されるまではスプライト「決定ボタン」を表示させないようにする。
何も課題に取り組まずに進むことを防ぐために作成した。スプライト「決定ボタンミニ」
のプログラムに関して、ほとんどがスプライト「決定ボタン」の持っているプログラムと 同じである。異なる所だけを取り上げて説明すると、プログラム1に関して指定する座標 の位置は勿論異なるので数値には違いがある。また、変数「決定が押されたか」について は、スプライト「決定ボタン」のプログラムで初期値0が与えられるので『変数「決定が 押されたか」を0にする』プログラムはない形となっている。プログラム4に関してメッ セージ「ソフトウェアキーボードに切り替え」ではなく、メッセージ「キーボード切り替 え」を受け取った時に実行されるようになっている。同様にプログラム5についてメッセ ージ「キーボード切り替え」ではなく、メッセージ「ソフトウェアキーボードに切り替え」
を受け取った時に実行されるようになっている。
図6-24(b)は「書き直すボタン」のプログラムである。プログラム1は旗がクリックされ
た時に指定した座標に再配置した後に自身を非表示にするプログラムである。プログラム2、
3、7に関してそれぞれメッセージ「個人mode」「決定が押された」「ソフトウェアキーボ ードに切り替え」を受け取った時に非表示にするプログラムである。プログラム4、6に関 してはそれぞれメッセージ「次の問題へ」「キーボード切り替え」を受け取った時にスプラ イト「書き直すボタン」を表示させるプログラムである。プログラム5に関して、スプラ イト「書き直すボタン」がクリックされた時に実行され、リスト「入力文字」に格納され ている全ての文字列を削除して入力されていない状態に戻す。また変数「「’」、「^」の打た れた合計」についても初期値0に戻す。最後に、画面に表示されたスタンプで複製表示さ れた文字画像を全て消すようにする。この機能により、文字を入力し直すことが可能とな っている。スプライト「書き直すボタンミニ」が持つプログラムに関して基本的にはスプ ライト「書き直すボタン」が持っているプログラムと同じである。異なる所を取り上げる と、まずプログラム4をスプライト「書き直すボタンミニ」は持っていない。文字入力に 関しては「キーボードからの入力」をデフォルトとしているからである。文字入力の際の 文字入力画面はキーボードを使うローマ字入力画面がまず開かれるので、スプライト「書 き直すボタンミニ」がプログラム4を持っていると、課題を進めるごとに「書き直す」画 像が二つ表示される不具合が生じてしまう。
図6-24(c)は「きりかえボタン」のプログラムである。プログラム1は旗がクリックされ
た時に指定した座標に再配置した後に自身を非表示にするプログラムである。プログラム5、
6は、メッセージ「決定が押された」「個人mode」を受け取った時に非表示にするプログ ラムである。プログラム3、4はメッセージ「キーボード切り替え」「次の問題へ」を受け 取った時にスプライト「きりかえボタン」を表示させるプログラムである。プログラム2 はスプライト「きりかえボタン」がクリックされた時に実行され、リスト「入力文字」に