擬似メニューバー 消去型では、メッセージの表示は表示エフェクトなしになっている。 表示エフェクトありでメッセージの表示を使うには制限がある為、ユーザーの混乱を招く可能性が高かったからだ。 表示エフェクトありは、2通りの終え方がある。 新機能を作る時、メモを取りながら進めるといい。テキストエディタなどでもいいが、チラシの裏に手書きする方が整理しやすいかもしれない。 @どんな機能か書き出す。 Aその機能を実現するにはどんな動作が必要か考えて、箇条書きする。 B各動作で具体的にどうコマンドを並べるか書き出す。 Cコミメカ3で作ってみる。 D失敗したらA、Bを見直す。動作の途中にテキストの表示を挟んで、どの箇所が悪いのか点検する。例:テキストの表示:「ページ1」の一番下。数値変数1は「%数値変数1%」。<KEY> 成功するまで繰り返す。 E成功したら、容量を削減する為に、まとめられるところを探す。 例: 数値変数3←数値変数1×100 数値変数3←数値変数3÷数値変数2 IF[数値変数3]≦26  数値変数1+50  ELSE  数値変数1−50 END 見つけた箇所を切り取り、新しいページに貼付けて最後に〔サブルーチンから復帰〕を入れる。元の場所には、新しいページのサブルーチンコールを入れる。動作が正常か確認する。 G違う数値変数に対して同じ処置を行う場合、 例 「A」 数値変数A 「B」 数値変数B 少し工夫して、Fが出来る。 F、Gは必ずしもやらなくていい。しかしプレイヤーの側から考えれば、作品ファイルの容量が軽いにこしたことはないだろう。 ********************************************************************* 『擬似メニューバー』 @プレイ中いつでも各種機能が使える A 1.プレイ中、文章の最後で一時停止する 2.ボタンをクリックすると各種機能を使用する 3.ボタン以外をクリックすると次の文章へ進む 4.Enter、Shiftキーを押すと次の文章へ進む 5.〔選択肢を使用する〕使用中もボタンをクリックして各種機能を使用出来る B 1.プレイ中、文章の最後で一時停止する  〔メッセージの表示〕の後に一時停止するには、二種類の方法がある。  一つは、〔メッセージの表示〕エフェクトあり≠フ最後に<KEY>を入れる。  もう一つは、〔メッセージの表示〕エフェクトなし≠フ次に〔しばらく待つ〕を入れる。 2.ボタンをクリックすると各種機能を使用する  プレイヤーが「ボタンをクリックする」には、ボタンの画像のダイナミックレイヤーを作成する。  1の一時停止中にボタンがクリック出来るようにするには、ダイナミックレイヤーActiveMode対応表の、○の組み合わせのどれかを行う。 5.〔選択肢を使用する〕使用中もボタンをクリックして各種機能を使用出来る  〔選択肢の表示〕を使用する時、ID指定無しのダイナミックレイヤーは自動的に削除される。〔選択肢の表示〕使用中もボタンが使用可能になるには、ボタンのダイナミックレイヤーはIDを0以外の数値にする必要がある。 ********************************************************************* 『保存』 @プレイ途中にセーブする機能 A 1.プレイを一時的に止める 2.全てのボタンをクリック出来ないようにする 3.保存画面を開く 4.既存のセーブデータのデータ番号、画面画像、保存日時の一覧を表示する 5.セーブするデータ枠を選ぶ 6.選んだデータ枠にセーブする 7.保存画面を閉じる 8.プレイを再開する B 2.全てのボタンをクリック出来ないようにする 全てのボタンをクリック出来ないようにするには、二つの方法がある。 一つは、全てのダイナミックレイヤーを削除してしまう。 もう一つは、画面全体を覆う別のダイナミックレイヤーをボタンの上に作成してしまう。 前者は、削除したボタンを後で使いたい時にもう一度ボタンを作成しなければならない。擬似メニューバー以外にもボタンがある時などは厄介。 後者は、その心配が無い。 4.既存のセーブデータのデータ番号、画面画像、保存日時の一覧を表示する 〔セーブコントロール:セーブファイルを開く〕読み込みのみ≠ニ〔セーブコントロール:セーブファイルを閉じる〕を使用する。 二つのコマンドの間に、指定したセーブデータの画面画像、保存日時を呼び出すことが出来る。 画面画像は _smallimage.bmp 。コミックメーカー3では通常、BMP画像は扱えない。この _smallimage.bmp は隠しコマンドの一つであり、特別。 保存日時は〔セーブコントロール:セーブファイルから変数の内容を復元する〕を使用する。登録キーワードヾupplement.SaveDate 代入先変数$_system:date$。 この登録キーワード、代入先変数も隠しコマンド。登録キーワードは保存日時が保存されている。$_system:date$は通常ユーザーは使用出来ない。代入先変数≠ノは変数の候補一覧が表示されるが、$_system:date$は隠しコマンドなので表示されない。そもそも代入先変数は普通は数値変数だけ。 5.セーブするデータ枠を選ぶ 6.選んだデータ枠にセーブする 7.保存画面を閉じる 8.プレイを再開する ********************************************************************* 『続きから』 @セーブデータをロードする機能 A 1.プレイを一時的に止める 2.全てのボタンをクリック出来ないようにする 3.ロード画面を開く 4.既存のセーブデータのデータ番号、画面画像、日時の一覧を表示する 5.セーブされているデータ枠のみ選択可能にする 6.ロードするデータ枠を選ぶ 7.ロードする 8.ロードする時、音量を現在の音量に変える 9.データ枠を選ばない場合は、ロード画面を閉じる 10.通常プレイを再開する 5.セーブされているデータ枠のみ選択可能にする セーブデータがある場合のみ、選択出来るようにしたい。 7.ロードする 〔セーブコントロール:セーブファイルから実行状態を復元する〕を使用する。 セーブファイル名≠ノ、ロードするセーブデータのファイル名を入れる。 これは『保存』で保存した時のセーブファイル名と同じにする。 8.ロードする時、音量を現在の音量に変える ロードする時、保存時の音量が再現される。この音量が現在の音量と合っていない場合がある。現在の音量に直したい。 ********************************************************************* 『最初に戻る』 @メニューに戻るか確認する機能 A ・プレイを一時的に止める ・全てのボタンをクリック出来ないようにする ・確認画面を開く ・選択肢を表示する ・はいを選んだら、メニューに戻る ・いいえを選んだら、プレイを再開する ・どちらを選んだ場合も、確認画面を閉じる B サブルーチンコールダイナミックレイヤーの場合、「はい」選択直後に「メニュー」に移動すると一つストックが残る。 ストックが大量に残ると保存しなければいけないデータが増え、保存に時間がかかる。 サブルーチンから復帰してから「メニュー」に移動しなければならない。 移動ダイナミックレイヤーで「はい」直後に移動するのは問題無い。「いいえ」を選択した後に通常プレイに戻れない。 ********************************************************************* 『終了確認』 @終了するか確認する機能 A ・プレイを一時的に止める ・全てのボタンをクリック出来ないようにする ・確認画面を開く ・選択肢を表示する ・はいを選んだら、即終了する ・いいえを選んだら、プレイを再開する ・確認画面を閉じる B 備え付けメニューバーを消去する為の画像を「終了」に入れる。どこかで使わなければ一緒にパッケージにしてくれない。「終了」ならば〈文章〉レイヤーの中身がぱっと消えてもすぐにウィンドウを閉じてしまうので問題無い。通常のプレイ中は使わないページなので邪魔にならなくてちょうどいい。 ********************************************************************* 『読み返し』 @文章を読み返す機能 A ・読んだ文章を保存する ・保存量が一定以上になった場合、古い文章は削除する ・読み返しボタンをクリック ・プレイを一時的に止める ・全てのボタンをクリック出来ないようにする ・読み返し画面を開く ・保存した文章を表示する ・読み返し画面を閉じる ・通常プレイを再開する B 文章を文字列変数{文章}に入れて、{履歴}に足すと同時に〔メッセージの表示〕で表示する。 〔メッセージの表示〕に直接文を入れて、同じ文を{文章}に入れて{履歴}に足す、という形にすると、文の量が2倍になってそれだけ容量が増してしまう。 {履歴}に無制限に入れていくことは出来ないので、古い履歴は消して新しい履歴を入れられるスペースを作る。 ********************************************************************* 『既読スキップ』 @既読部分をスキップする機能 A ・通常プレイ中、既読状況を読み出す?。 ・未読の場合、既読として既読状況を更新する ・既読の場合、何もしない ・次の文章に進む ・通常プレイ中にスキップボタンをクリックすると、既読スキップを開始する。 ・既読状況を読み出す ・既読であれば、スキップを続行する ・未読であれば、通常プレイに戻る ・次の文章に進む ・既読スキップ中、画像のエフェクトは無視する ・既読スキップ中、画面をクリックすると通常プレイに戻る ・選択場面で通常プレイに戻る B 既読情報を保存するには〔セーブコントロール:変数の内容をセーブファイルに記録する〕を使用する。読もうとしている文章と照らし合わせるには〔セーブコントロール:セーブファイルから変数の内容を復元する〕を使用する。 パート別に分ける。プレイの進行によって読む文章が変わる場合、単純に「プレイを開始して11番目の文章」と判別すると、1番目から11番目の間に分岐がある場合、選択肢Aを選んだ後の文章なのか、Bを選んだ後の文章なのか判別出来ない。 文章の固まりごとに「『始めに』パートの6番目の文章」のように判別する。 パートを文字列変数{パート}に、パート内の何番目かを数値変数[判別]に入れる。 数値変数の読み込みの登録キーワードに変数は使えない。登録キーワードに$パート$と入れても、そのまま$パート$という登録キーワードを探し、その時{パート}に入っている「始まり」を代入して登録キーワードを探すことはない。代入してくれれば楽なのだが、現在の仕様なので仕方ない。 文章を表示する前に判別するか、表示した後に判別するか。 ********************************************************************* 『環境設定』 ・プレイを一時的に止める ・全てのボタンをクリック出来ないようにする ・環境設定画面を開く ・各項目の選択肢を表示する ・各項目の選択によって設定を変える ・環境設定画面を閉じる