![]() |
今回はシステムボタンをクリックするとセーブ画面とかロード画面が表示されるようにするんだよね? |
![]() |
ん、あとコンフィグ画面もね。 |
![]() |
あ、そーいえば前にシステムボタン作った時にはコンフィグ画面を表示するボタンってなかったよね? |
![]() |
うん、だから今回新しく作るの。 |
![]() |
あ、そーなんだ。 |
![]() |
ってワケで、まずは5章で作ったシステムボタンプラグイン(ExSystemButtonPlugin クラス)をちょっと書き換えるね。 |
※ExSystemButtonPlugin クラスについては §5.10 参照。 | |
![]() |
ボタンを増やすの? |
![]() |
ん、だからまず createButtons メソッドを書き換えなくちゃいけないよね。 |
![]() |
前に作ったシステムボタンプラグインの createButtons メソッドとどこが違うかわかる? |
![]() |
ロードボタンとメッセージスキップボタンの間にコンフィグボタンが追加されてるね。 あとメッセージウィンドウを消すボタンがなくなってるみたいだね。 |
![]() |
今回は右クリックでメッセージウィンドウを消せるようにするから、 メッセージウィンドウを消すボタンは削除したんだ。 |
![]() |
あ、そうなんだ。 確かにそれならメッセージウィンドウを消すボタンは必要ないね。 |
![]() |
あと、コンフィグボタンについてだけど、まずボタンの画像はコレね。 |
<コンフィグボタン用画像(button_config.png)>
![]() |
これも他のボタンとおんなじで、左から通常時・押されてる時・マウスカーソルが乗ってる時・使えない時に表示される画像になってるんだよね? |
※他のボタンについては §5.10 参照。 | |
![]() |
ん、そうだよ。 じゃあ次はボタンが押された時に呼び出される onConfigButtonClick メソッドを作ってくね。 |
![]() |
どうやってボタンが押された時にコンフィグ画面を表示するの? |
![]() |
こうやるの。 |
![]() |
最初に kag.setRightClickOptions っていうメソッドを呼び出して、 それから kag.onRightClickMenuItemClick っていうメソッドを呼び出してるみたいだけど、 これって何やってるの? |
![]() |
じゃまず setRightClickOptions メソッドから説明するね。 |
![]() |
うん。 |
![]() |
でもその前に、このメソッドの引数になってる辞書配列の要素に見覚えない? |
![]() |
え? えっと、最初の要素が call で、それから jump、 storage、target、enabled… あっ、これってもしかして rclick タグの要素になってるんじゃない? |
![]() |
そのとーり。setRightClickOptions メソッドを呼び出すのは rclick タグを実行するのとおんなじなんだ。 だから、ここで [rclick call=true jump=false storage="config.ks" target="*initialize" enabled=true] を実行してることになるわけ。 |
![]() |
なるほどね〜。 |
![]() |
その次の onRightClickMenuItemClick メソッドは §5.10 でもちょっと説明したんだけど、覚えてる? |
![]() |
え、そーだったっけ? う〜ん、名前からすると右クリックとかメニューの関係っぽいけど、どんなメソッドだったかな…? |
![]() |
このメソッドを実行すると、名前の通り右クリックしたのとおんなじ動作をするの。 |
![]() |
あ、そうなんだ。 じゃあメニューとは関係ないの? |
![]() |
ん〜ん、メニューとも関係してるよ。 メニューの「メッセージを消す」を選択すると、このメソッドが呼び出されるの。 メッセージウィンドウを非表示にするのが右クリックのデフォルトの動作でしょ。 |
![]() |
なるほど、確かにそーだね。 |
![]() |
つまり、コンフィグボタンを押すと、まず onConfigButtonClick メソッドが呼び出されるわけね。 で、このメソッドの中で setRightClickOptions メソッドが呼び出されて、 右クリックサブルーチンが設定されるの。 |
![]() |
それから onRightClickMenuItemClick メソッドが呼び出されると、 右クリックするのとおんなじになるから、"config.ks" の "*initialize" っていうサブルーチンが呼び出されるんだね。 |
![]() |
ん、そーいうこと。 |
![]() |
あ、でも前にコンフィグ画面を作った時に *initialize っていうラベルなんてあったかな…? |
![]() |
なかったよ。 |
![]() |
…だよねぇ? |
![]() |
あの時は右クリックしたら直接コンフィグ画面を表示してたから、 ファイル名は "rclick.ks" にしてたし、 ラベル名は *rclick にしてたんだ。 |
![]() |
じゃあ今回はファイルとラベルの名前を変えるの? |
![]() |
うん。あとスクリプトもちょっと変えるよ。 |
![]() |
あ、そうなの? |
![]() |
ま、ちょっとだけだけどね。 まず、初期化のスクリプトはこんな感じ。 |
<コンフィグ画面の初期化スクリプト(config.ks 内に記述)>
![]() |
えっと、これってラベルの名前が *rclick から *initialize に変わって、 rclick タグの storage 属性が "rclick.ks" から "config.ks" に変わっただけってこと? |
![]() |
ん、そういうこと。 あとコンフィグ画面を閉じる時に実行するスクリプトはこれね。 |
<コンフィグ画面を閉じるスクリプト(config.ks 内に記述)>
![]() |
ん〜っと… 変わったのって rclick タグだけ、なのかな? |
![]() |
そだよ。 |
![]() |
storage 属性も target 属性も指定されてないけど、 この後右クリックしたらどーなるの? |
![]() |
call 属性と jump 属性を false にして rclick タグを実行すると、 右クリックがデフォルトの動作に設定されるんだ。 |
![]() |
デフォルトの動作って…メッセージウィンドウを消すってこと? |
![]() |
そう。 右クリックサブルーチンが呼び出されるのはボタンを押した時だけにしたいから、 セーブ/ロード/コンフィグ画面を閉じた後は、右クリックをデフォルトの動作に戻してるの。 |
![]() |
えっと、じゃあつまり、ボタンをクリックするとセーブとかの画面が表示されて、 普通に右クリックするとメッセージウィンドウが消える、ってこと? |
![]() |
そういうこと。 あと、コンフィグ画面用の領域アクション定義ファイル(config_bg.ma)の storage も書き換えとかないとね。 |
![]() |
あ、そっか。これも "rclick.ks" になってるから "config.ks" に書き直さなくちゃいけないんだね。 |
<領域アクション定義ファイル(config_bg.ma)の中身>
![]() |
これでコンフィグ画面関係は OK だから、次は onConfigButtonClick メソッドと同じようにして onSaveButtonClick メソッドと onLoadButtonClick メソッドも書き換えてみて。 |
![]() |
最初に setRightClickOptions メソッドを呼び出して、 それから onRightClickMenuItemClick メソッドを呼び出せばいいの? |
![]() |
ん、そうだよ。 |
![]() |
わかった。じゃあやってみるね。 |
![]() |
onSaveButtonClick メソッドはこんな感じで… |
![]() |
onLoadButtonClick メソッドはこうかな。 |
![]() |
ん、OK。 じゃついでにセーブ画面を閉じるスクリプトも書き換えといて。 |
![]() |
rclick タグを書き換えればいいんだよね? |
![]() |
うん。 |
![]() |
これでいいかな? |
![]() |
ん、これも OK。 じゃこれで完成だから、ちょっと実行してみよっか。 |
![]() |
は〜い! |
![]() |
必要なファイルはここに置いとくから実行してみて。 あと、Config.tjs は前にシステムボタンを作った時と同じように設定しといてね。 ただし、今回はセーブ/ロード画面を使うから、フリーセーブモードは false にしといてね。 |
※上記のスクリプトは 640×480 ピクセルの画面用です。 800×600 ピクセルの画面用のスクリプトもこちらからダウンロードできます(画面サイズの違いにより、スクリプトの内容が一部 640×480 ピクセルの画面用のものと異なっていますので、800×600 ピクセルの画面用のスクリプトをお使いの方は、本章でのスクリプトの説明内容を適宜読み替えてください)。 |
<フリーセーブモードの設定(Config.tjs より抜粋)>
![]() |
うん、設定できたよ。 |
![]() |
んじゃ実行してみて。 |
![]() |
りょ〜かい! |
<実行結果>
![]() |
ちゃんとコンフィグボタンも表示されてるね〜。 |
![]() |
じゃセーブ・ロード・コンフィグ画面がちゃんと表示されるかやってみて。 |
![]() |
それじゃ最初はセーブ画面から試してみるね。 |
<セーブ画面>
![]() |
うん、セーブ画面がちゃんと表示されたし、セーブもできたよ。 |
![]() |
じゃ次はロード画面だね。 |
<ロード画面>
![]() |
うん、ロード画面もおっけーだね。 |
![]() |
んじゃ最後はコンフィグ画面。 |
<コンフィグ画面>
![]() |
これもおっけーだよ。 |
![]() |
ん、うまくいったね! |
![]() |
うんっ! |
![]() |
それじゃ、第6章はこれでおしまい。 |
![]() |
次は何やるの? |
![]() |
選択肢を作るつもりだよ。 |
![]() |
え、選択肢って link タグを使えば簡単に作れるよね? |
![]() |
まぁね。 だからもうちょっと凝った選択肢を作るつもりだよ。 |
![]() |
凝った選択肢って? |
![]() |
link タグだとメッセージウィンドウの中に普通のメッセージと同じように選択肢の項目を表示するでしょ? |
![]() |
うん、そうだね。 |
![]() |
次の章で作る選択肢は、専用のレイヤを使って選択肢の項目ごとに背景画像が設定できるようにするの。 だから見た目はシステムボタンに近くなるし、あとメッセージウィンドウの外にも表示できるよ。 |
![]() |
へぇ、そうなんだ。 |
![]() |
それと、制限時間付きの選択肢も作る予定だよ。 |
![]() |
あ、それって時間内に選択肢を選ばないと時間切れになっちゃうやつだよね。 |
![]() |
そうそう。 ちなみに、次回からまたプラグインを作るから。 |
![]() |
じゃあ選択肢ってプラグインを使って作るの? |
![]() |
ん、そうだよ。 ってワケで、次の章もがんばってついてきてね! |