JS ADV.js イベントで使う変数を初期化する
//変数playerNameをgameVarsオブジェクトに登録したところ gameVars: { playerName: 'DORAEMON' }次にsystemVarsオブジェクトには効果音などシステム関係のデータを入れます。SEオブジェクトが一つだけ登録されており、ここにはメッセージ・ウィンドウをクリックしたときの効果音をonContinueプロパティに、選択肢を回答したときの効果音をonSelectChoiceプロパティに設定できます。値はgame_data.adv.jsに登録した効果音名を入れます。
//SEオブジェクトに各種効果音を登録したところ systemVars: { SE: { onContinue: 'beep01', onSelectChoice: 'beep02' } }templateプロパティはPrototype.jsライブラリのTemplateクラスを利用するために使用し、テンプレートにしたいデータの集まり(オブジェクト)を追加します。
//配列templateにテンプレート用オブジェクトを登録したところ template: [ { name: 'WIZARD-CODE', favorite: 'JavaScript game' }, { name: 'DORAEMON', favorite: 'dorayaki' } ]そしてinitVarsはゲームで使う変数を初期化するメソッドです。paramプロパティに入れるデータは、これらの三つのデータをまとめたオブジェクト({}で閉じられたデータ)で、上記の三つのデータをイベント・オブジェクトのparamプロパティに設定すると次のようになります。
......... ......... { type: 'initVars', param: { gameVars: { playerName: 'DORAEMON' }, systemVars: { SE: { onContinue: 'beep01', onSelectChoice: 'beep02' } }, template: [ { name: 'WIZARD-CODE', favorite: 'JavaScript game' }, { name: 'DORAEMON', favorite: 'dorayaki' } ] } } ......... .........下にこのあいだのクイズ問題のイベントデータを抜粋してみました。gameVarsオブジェクトに登録できるデータは文字列、数字、配列と様々です。ちなみに関数/メソッドも登録できますが、そのままでは返り値などが利用できません。Prototype.jsの説明によると、関数/メソッドを機能させるには、toTemplateReplacementsメソッドをgameVarsオブジェクトに設定しなければなりません。詳しくは後述します。 もしくは、こちらを参照ください⇒日本史クイズのイベントデータを
//QUIZ SAMPLE { name: 'quiz001', flag: null, story: null, data: [ { type: 'initVars', param: { gameVars: { //名前はプレイヤーに入力させるため、始めは空にしておく playerName: '', //正解数をここに入れる rightAnswers: 0, //全問題数をここに入れる totalQuestions: 3, //正解数に応じてコメントを用意 //正解数をそのまま配列のインデックスに使えるように並べている evaluation: [ 'おお勇者よ、全問不正解とは情けない', 'ひっかけ問題に引っかかったのかな?', '惜しい、あと一問!', '全問正解、すばらしい!' ] } } }, ......... .........