テーマファイルの作りかた
時報
ある日時になった時に時報を鳴らす時報機能があります。
時報はメッセージや画像を表示したり、音を鳴らすことができます。
一つ一つの時報を event(イベント)と呼び、<itemset> の中ではなく <eventset> という要素を新たに追加し、その中に <event>~</event> を追加します。
<?xml version="1.0" encoding="UTF-8"?> <data> <!-- タイトルなどの設定 --> <info>~</info> <itemset> <!-- 略 --> </itemset> <eventset> <event>~</event> <event>~</event> <event>~</event> </eventset> </data>
一つの event の基本構成は次のとおりです。
<event> <schedule> <year>*</year> <month>*</month> <day>*</day> <week>*</week> <hour>*</hour> <minute>*</minute> <second>*</second> </schedule> <taskset> <task> <item>~</item> </task> </taskset> </event>
<schedule>~</schedule> で時報を行う条件を指定します。
2000年の1月2日、3時4分5秒に時報を鳴らすには次のように書きます。
<schedule> <year>2000</year> <month>1</month> <day>2</day> <hour>3</hour> <minute>4</minute> <second>5</second> </schedule>
<year>*</year> のようにワイルドカード(*)を使うことができます。
「*」は条件なしを意味し、初期状態ではすべての条件は「*」になっています。
例で省略した week(曜日)には「*」があらかじめ入っています。
毎時0分0秒に時報を鳴らす場合は次のとおりです。
<schedule> <hour>*</hour> <minute>0</minute> <second>0</second> </schedule>
指定は「,」で区切ることにより複数指定できます。1時と3時に という条件なら「1,3」と書きます。
また、「-」を用いて範囲を指定することもできます。午前中(0時~11時)なら「0-11」となります。
これらは組み合わせて「1,3,12-15」(1時と3時と12時から15時の間)のようにもできます。
「/」を使うと時間間隔を指定できます。
<minute>*/10</minute> と書けば10分毎にという意味になります。
この場合「0,10,20,30,40,50」と書くのと同じ内容を表します。
曜日(week)を指定する場合は 0~6 の数字で指定します。
0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
日 | 月 | 火 | 水 | 木 | 金 | 土 |
日曜~水曜を指定する場合は同様に「0-3」のように指定できます。
ただし土曜~水曜を表す際に「6-3」のようには出来ません。
「6,0-3」のようにする必要があります。
<schedule> に prob 属性を指定すると発生確率(Probability)を設定することが出来ます。
これは日時条件が一致した際に発生する確率を表します。
確率は 0.00~1.00 の範囲で指定し、0.1 の場合 10% の確率で発生し、1.0 の場合は 100% 発生します。
初期値は 1.0 なので省略時は常に発生する状態です。
<schedule prob="0.3">~</schedule>
時報の条件に当てはまった時、task(タスク)が実行されます。
<task>~</task>に発生する<item>を記入します。
<item> 要素の記述方法はこれまでに解説したものとほぼ同じですが、
指定できる type 属性は、image、message、sound のみで、
時計の針や振り子などを追加することは出来ません。
テキストメッセージの表示
<message> は吹き出しのようなもので一定時間テキストが表示されます。
message を利用する場合は必ず <dialog> 要素を設定しておく必要があります。
吹き出しの文字をクリックすると吹き出しは閉じます。
<item type="message"> <text>この文字列が表示されます</text> </item>
ダイアログの表示時間を設定するには、属性 duration を<item>に指定します。
表示する時間をミリ秒(1秒=1000)で指定して下さい「<item duration="5000">」と指定すると5秒間表示されます。
text部分で「<」「>」などの記号を使うにはそれぞれ「<」「>」としておく必要があります。
改行をするにはその箇所に「\n」を記入して下さい。(Windowsの場合 ¥n )
<text> 一行目\n 二行目\n <特殊記号> </text>
プレースホルダーを使った表現
メッセージテキスト内で「現在12時45分です」のように表示時点での日時など挿入する場合はプレースホルダーを用います。
プレースホルダーはある規則にそって書かれた文字列で、その部分が実行の際日時などに置き換えられます。
現在{:hour[]}時{:minute[]}分です
プレースホルダーは “ { } ” で括り、コロン(:)の後に hour や minute などの種類を記述します。さらに言語や表記のオプションを入れるための “ [ ] ”をつけます。オプションを使用しない場合であってもこの括弧は省略できません。
通常 {:month[]} とした場合は数字で月が表示されますが、{:month[lang=en]} のようにオプションを付けると「January」などの月名を表示することも出来ます。
プレースホルダーの種類は次のとおりです。
種類 | 意味 |
---|---|
:year | 年を表示します。 |
:month | 月を数字で表示します。 オプションで「lang」を指定すると月名を表示できます。 「lang=en」では January などの英語名、「lang=en-abbr」では英語の略式(Jan. 等)、 「lang=ja」では日本語名(睦月 等)が表示されます。 |
:day | 日を表示します。 |
:suffix | 日の序数詞(st, nd, rd, th)を表示します。 |
:week | 曜日を表示します。 デフォルトでは週の何日目であるかが 1~7 の数字で表示されます。(日曜始まり) オプションで「lang」を指定すると曜日を名前で表現できます。 「lang=en」では Sunday などの英語名、「lang=en-abbr」では英語の略式(Sun. 等)、 「lang=ja」では日本語名(日 等)が表示されます。 |
:hour | 12時間表記での時を表示します。 「:hour_12」とすることもできます。 |
:hour_24 | 24時間表記での時を表示します。 |
:minute | 分を表示します |
:second | 秒を表示します。 |
:ampm | 午前/午後を表示します。 デフォルトは「a.m.」「p.m.」です。日本語の「午前」「午後」で表現する場合はオプションで「lang=ja」を指定します。 |
音を鳴らす
音声を鳴らすには sound を用います。
再生可能な音声ファイルはWAVE(*.wav)又はOGG(.*ogg)です。
<item type="sound"> <sound>sample.wav</sound> </item>
タスクは同時に複数のアイテムを実行できます。
message とセリフを収録した sound を同時に指定するとフルボイスのような表現ができます。
ただし音声とメッセージはひとつのタスク内で1種類ずつしか実行できません。
<task> <item type="image">~<item> <item type="image">~<item> <item type="message">~<item> <item type="sound">~<item> </task>
taskset内にタスクを複数記述するとその中からランダムで一つ発生するようになります。
<taskset> <task> <item type="message">メッセージ1</item> </task> <task> <item type="message">メッセージ2</item> </task> <task> <item type="message">メッセージ3</item> <item type="sound">sample.wav</item> </task> </taskset>