2014年1月11日土曜日

APP Inventor で黙祷アプリを作ってみた (2/7)

前回に引き続き「黙祷」アプリの続きです。

まず、黙祷アプリがどういうものかの仕様を整理したいと思います。
・スタートすると、文字のメッセージを表示する。
・「黙祷」の音声を流し黙祷を開始する
・黙祷中は、5秒程度の祈りの言葉を音声で流す。これを12回繰り返す。
・約1分経過後、「黙祷終わり」の音声を流しておしまい。

これだけです。

では、さっそく作っていきます。

1.黙祷画面をデザインする
黙祷の前に表示されるメッセージを1行ごとに貼り付けています。
あと、メッセージは1行ごとに表示させるようにするので、そのためのタイマー(PrintMessageClock)も貼り付けています。Clockは画面上にドロップしても、Non-visible components ということで、画面の下に表示されます。

その他、
・PlayPrayerClock --- 祈りの言葉を繰り返すためのタイマー
・PrayerSound --- 黙祷中に流す祈りの言葉のサウンド
・StartSound --- 黙祷開始時に流すサウンド
・EndSound --- 黙祷終了時に流すサウンド
も貼り付けています。

2.Blocksにロジックを定義する
2.1 Labelをリスト化

メッセージが沢山あるので同じような処理を繰り返すことになるので List に入れます。
Procuduresで「makeMsgList」 という戻り値を返す部品を作ります。
このリストはグローバル変数として定義したかったのですが、Initialize globalで MessageLabel1 をセットしようとすると「ここではまだ定義されてないので使えない」というエラーが出て怒られたので Procedure にしました。

2.2 黙祷画面の初期化

メッセージを表示する間隔を「3秒」にし、すべてのメッセージを非表示にしています。
これは、デザイン時にプロパティをセットすることでも可能ですが、ここではプログラムで行なっています。

2.3 メッセージを1行ずつ表示する
まず、グローバル変数「g_msgNo」を定義して0に初期化します。
これは、1行ずつメッセージを表示するのに今、何行目まで表示したかを保持する変数です。ローカス変数では、タイマーが呼ばれるたびに初期化されるのでグローバル変数にする必要があります。

次に、タイマーで一定間隔ごとに1行ずつメッセージを表示します。
メッセージをすべて表示したら(g_msgNoが11を超えたら) タイマーを無効にして、黙祷中の祈りの言葉用のタイマーを有効にします。あと、「黙祷」開始の音声も流します。

2.4 祈りの言葉を12回再生する
まず、グローバル変数「g_prayerCnt」を定義して0に初期化します。
これは、祈りの言葉を何回再生したかを保持する変数です。ローカス変数では、タイマーが呼ばれるたびに初期化されるのでグローバル変数にする必要があります。

次に、タイマーで一定間隔ごとに祈りの言葉を再生します。
12回再生したら「黙祷、おわり」の音声を流し、タイマーを無効にして画面を閉じます。


3.素材について
「黙祷」、「黙祷中の祈りの言葉」、「黙祷おわり」の音声は、自分の声で録音してもいいのですが、今回は、Open JTalk というオープンソースの文字読み上げソフトて作ったものを使いました。

今日はこのへんで。ではまた。

0 件のコメント:

コメントを投稿