Studio ついんくる ||Lesson-Lesson12 アペンドスキル後編||

Lesson12 アペンドスキル後編

[前編はこちら]


サブルーチンを使おう!

実はこれはかなり便利な機能です。 自分が楽になるばかりではなく、ソースの量もうまくいけばかなり減るはずです。 サブルーチンとは、プログラムが行う行動のマニュアルといえます。例えば前編 に掲載されている、「サブウィンドウを作る」で使用するソースですがあの動作を何度も行うと、
[current layer="message1"]
[position layer="message" visible="true"]

[position layer="message" visible="false"]
[current layer="message0"]
とサブウィンドウを表示を表示させるたびに、何度も記述する必要が出てきます。 これは非常に面倒な作業になるので、ひとつの指示で同じ作業を行わせることができるようにするのがサブルーチンです。 サブルーチンを作るには下のように記述します。
*call_swindow
[current layer="message1"]
[position layer="message" visible="true"]
[return]

*leave_swindow
[position layer="message" visible="false"]
[current layer="message0"]
[return]
お気づきでしょうか?実はサブルーチンはラベルと変わらなかったのです。 少し違うといえば、最後に[return]と書かれていることですが、これは指示を受けた場所に 戻りなさい。という意味です。これについては下のソースを見てください。

;メッセージレイヤーの設定
[position layer="message0" color="0xFFFFFF" width="600" height="140" left="20" top="320" draggable="true"]
[position layer="message1" color="0xFFFFFF" width="450" height="100" left="95" top="80"]

;サブウィンドウの呼び出し
[call target="*call_swindow"]

[link target="*Ravel01"]選択肢1[endlink][r]
[link target="*Ravel02"]選択肢2[endlink]
[s]
;サブウィンドウを撤去
[call target="*leave_swindow"]

;呼び出すサブルーチン
*call_swindow
[current layer="message1"]
[position layer="message" visible="true"]
[return]
;撤去するサブルーチン
*leave_swindow
[position layer="message" visible="false"]
[current layer="message0"]
[return]

注目すべきはcallタグです。これはtargetで指定したサブルーチンを呼び出す(使用する)タグですが、 サブルーチンの[return]は、そこに戻る役割を持つのです。

Tip

なぜサブルーチンにreturnタグを記述するのでしょうか? ためしに該当の行を;でコメントアウトしてみると分かりますが、通常ソースは水のように上から下へ進みます。なので returnタグが無いと、次の行、つまりサブルーチンの次に書かれたソースへ進んでしまうのです。これはリンクで選択肢を表示 させるときに[s]と記述したときと同じ理由です。


Tip

サブルーチンは何度でも呼び出して使用することができるので非常に重宝する機能ですが、 ソースが長くなるとサブルーチンをどこに記述したか分かりにくくなってしまうことがあります。 それを防止するためには、サブルーチンをソースの一番最後の部分にまとめて記述しておくと良いでしょう。


マクロを使ってみよう

マクロとサブルーチンは働きを見る限り同じようで、本当は全く異なるものです。 サブルーチンは事前に指示されたこと意外は何もできませんでしたが、マクロは事前の指示に加え 後から指示を追加することができます。ここでは簡単にマクロの使い方を紹介していきます。 では下のソースを見てください。
[macro name="date"]
[ch text="%m"]月[ch text="%d"]日
[endmacro]

[date m="12" d="30"]

このソースでマクロと呼ばれる部分は[macro name="date"]から[endmacro]にはさまれた部分で、 この場合、マクロの名前は"date"です。 そして、マクロを呼び出しているのが[date m="12" d="30"]の部分です。 作ったマクロは通常のタグと同じように使えるのです。 そして、追加記述も自分で作ることができます。例でいうmとdです。この追加記述に書かれた文字は、 マクロの%m、%dへ当てはめられます。マクロで%〜とした部分には後から代入できるのです。 代入するには、%〜とした〜の部分を追加記述として使用します。
しかし、そうするとサブルーチンと比べて 毎回追加記述を書かなければならず、面倒になる場面も出てきます。そのような場合のために、マクロに 標準の値を決めておくこともできます。標準の値を記述するには%hogehoge|標準値 とします。
一度に言われると混乱してしまうかもしれませんが、まとめて例を見ましょう。
[macro name="date"]
;メッセージレイヤーを透明化
[position layer="message0" opacity="0"]
;背景画像を裏ページに読み込む
[image storage="%img|hogehoge.jpg" layer="base" page="back"]
;画面切り替えの効果を実行
[trans layer="base" method="universal" rule="こすり(左から右へ).png" time="3000" children="false"]
;文字を表示 [ch text="%m"]月[ch text="%d"]日
[endmacro]

[date m="12" d="30"]

上のソースを実行すると、背景が画面切り替えの効果を行いながら変更され、日にちが表示されます。
指定できるのは、背景の画像ファイル名と日付の数字です。[date m="12" d="30"]として数字が代入されているのが 確認できると思います。そしてimgは指定していません。 背景画像ファイルは標準値が存在しているのでマクロ実行時に追加記述を行わなくても 実行が可能となっています。変更したい場合のみに記述すればいいのです。


Tip

上のソースに登場したchタグは文字を表示させる働きを持ちます。 私達が通常表示してきた文字も、chタグで囲まれた状態と同じように処理されているのです。


Tip

マクロに値ばかりではなく、記述そのものを後から代入したい場合は*を書きます。
[font *]
のように使用します。

[次へ進む]

Back to the Lesson([top]>[Lesson]>[Lesson12 アペンドスキル後編])