コミメカ3研究中間報告書 この報告書は、擬似メニューバーコミメカ3版開発に伴って行なわれている研究の中間報告をする物である。 ……だったが、今後は擬似メニューバーの為だけではなく色々な方面にも手を広げていく予定である。 2009/10/26現在のコミックメーカー3最新バージョン3.12に基づいている。 Windows XP以外での研究は行なっていない為、全ての環境下において再現可能かどうかは不明である。 「中間報告」である為、コミックメーカー3のバージョンアップに伴い随時修正を行なう。 追加・修正事項には☆が付いている。 日本語がちょっとおかしくても寛大な目で見ていただきたい。 ダイナミックレイヤー 選択肢の表示 ユーザーレイヤー グラフィックの表示 変数 メッセージの表示 しばらく待つ 条件分岐 セーブコントロールコマンド 隠しコマンド ・ダイナミックレイヤー ダイナミックレイヤーは全てのユーザーレイヤーの一番上に来る。 ダイナミックレイヤーの上にテキストレイヤーでメッセージを表示することは不可能。 (表示設定をした場合、ダイナミックレイヤーの下に表示される) ダイナミックレイヤーの上にユーザーレイヤーで画像・メッセージを表示することも不可能。 (表示設定をした場合、ダイナミックレイヤーの下に表示される) 太文字・色変え・サイズ変えなどはメッセージの表示と同じように使用可能。 アニメーション表示は1コマ0.5秒、目パチには少し遅いが、他にも応用が可能。 表示エフェクトありのメッセージ表示の表示途中に、ActiveMode「Wait/MassageWait〜」のページ移動ダイナミックレイヤーをクリックすると、表示が全て終わるまで移動しない。 表示エフェクトありのメッセージ表示で 表示エフェクトありのメッセージ表示で ActiveMode、クリック可能か否かの対応表(ID指定無し・有り共通、無効は除く) (Ver.3.01でバグが修正されました)
ID指定無し・有りのクリア方法対応表
ダイナミックレイヤーID指定の注意 どれをどのIDに指定したのか混乱しやすい。 →メモを取りながら作業するべし。 そのIDに指定してクリアしないとずっと消えない。 →どこで指定してどこで消すのか、と決めてから設定するべし。 「上級者向け」と書いてあるが、指定してもいいのか? →……責任は負えません……。 利点・特徴 ID別に消去が出来る。 複数のダイナミックレイヤーに対し同じIDが使用可能。(IDは1〜999、兼用個数の上限は不明) 選択肢の表示によるクリアが不可能である為、同時使用が可能。 選択肢の表示を後から被るように設定すると、選択肢の表示の方が上に表示される。 クリックカブル動作「無効」の場合、選択肢の表示を一時的に覆い隠すことが可能だが、選択肢自体は使用可能。 「〜有効」は、選択肢の表示を覆い隠し、使用不可にすることが可能。クリアは不可。 ・選択肢の表示 同じブック内のページしか移動先ページに指定出来ないのはコミメカ2同様。 全てのユーザーレイヤーより上に表示される。 メッセージの表示と同時使用が可能。 表示と同時にID未指定ダイナミックレイヤーをクリアする。 ID指定ダイナミックレイヤーはクリアしない。 ID指定ダイナミックレイヤーの後に被るように設定すると、そのダイナミックレイヤーより上に表示される。 太文字・色変え・サイズ変えなどはメッセージの表示と同じように使用可能。 その為、選択肢の項目別に色変えすることも可能。 選択メッセージを「<B>&文字列変数&」「<clWhite>&文字列変数&」のようにすると、文字列変数が空白でもその項目箇所に一本の線が現れ、その線も選択可能。 解決策:文字列変数に<B>なども入れて、選択メッセージは「&文字列変数&」にする。 クリア方法は四つ。(四つ目を教えていただきました) 項目をどれか選択する、制限時間を越える、別に選択肢の表示を用意しその項目をどれか選択する。そして、IDを2001に指定したダイナミックレイヤーのクリア。 三つ目は特殊。以下、一部の現象を回避するには↑四つ目の方法が有効。 ID指定ダイナミックレイヤーによって覆い隠す・一時的に使用不可にするには可能。(上記ID指定利点・特徴参照) 「しばらく待つ」コマンドの「すべてのキー操作〜」も一時的に選択肢の表示を使用不可に出来る。 「しばらく待つ」コマンドの「ダイナミックレイヤーの〜」実行中は、選択肢使用可能。 選択肢の表示中に実行モード保持ノーチェックでサブルーチンコールのID指定ダイナミックレイヤーをクリックすると、復帰した時に選択肢の表示は終了され、次のコマンドが実行される。 ただしクリアされたわけではなく、選択肢の文章はそのまま表示され続け、「しばらく待つ」コマンド「ダイナミックレイヤーの〜」を入れれば復活する。 ・ユーザーレイヤー 非表示にする+画像読み込み ということも可能。 一番最初、画像読み込みまたはグラフィック表示設定をする前にレイヤー表示をすると、設定位置の左上に小さな白の四角が現れるので注意。 そのレイヤーに画像を読み込まない限り白の四角は表示が続く。 読み込み・グラフィック表示設定前に、白背景以外に一度表示させたい時は、透明なPNGを用意。 (白背景が続くのであれば、紛れてしまうので問題無い) 1×1で充分。ただ透明なPNG。 その際、レイヤー制御内の読み込みの場合、サイズ変更と同時使用しない方が良い。 その際、グラフィックの表示での設定の場合、表示内のレイヤーの位置変更はしない方が良い。 これにより、白い四角は現れない。 ・グラフィックの表示 「指定範囲に合わせて〜」が無くなった為、サムネイルなどを作る時は別個縮小画像を用意する必要がある。 グラフィックの表示はフェードアウトなどは可能か? 可能。 背景(背景レイヤーに限らず、表示効果を指定したい画像の後ろに表示されている画像)が一色なら、背景に使用している画像で表示効果を使用。 その際、グラフィックの表示内でレイヤーの位置変更はしない方が良い。 背景が一色でなければ、上記の透明1×1PNGを使用し、表示効果を設定。 その際、グラフィックの表示内でレイヤーの位置変更はしない方が良い。 グラフィック表示後、そのユーザーレイヤーを非表示にするか、引き続き使うのか要確認。 ・変数 初期値が設定出来ない。 0または空白以外に初期値が欲しければ、一番最初のページ(例:スタートページ)で変数を調整しておくことで代用出来る。 乱数は0〜999。上限値を変更する方法はあるが、サポート対象外。 %変数%←%@乱数%mod(上限値)とすることで代用出来る。 ↑の方法は、例えば上限値に5を入れると%変数%=0〜4となる。 ・メッセージの表示 テキストレイヤーか、ユーザーレイヤーか選択出来る。 テキストレイヤーを選択すると、全てのユーザーレイヤーの上に表示される。 その代わり、その後のレイヤー制御・グラフィック表示で自動的に同時に消去される。 グラフィック表示が表示効果ありだと、表示効果が終わった瞬間に消去される。 テキストレイヤーでもユーザーレイヤーでも、ダイナミックレイヤーより下に表示される。 テキストレイヤーでもユーザーレイヤーでも、次の選択肢の表示で消去されることはない。 テキストレイヤーと複数のユーザーレイヤーとで、同時にメッセージ表示することも可能。 同一レイヤーに対する次のメッセージ表示で、メッセージが切り替わる。 ユーザーレイヤーのメッセージ表示は、そのユーザーレイヤーを非表示にしても、画像を読み込んだりグラフィックの表示で使ったりしない限り、次のそのレイヤー指定のメッセージ表示がされるまでずーっと維持される。 ユーザーレイヤーにメッセージ表示をした後、そのレイヤーに表示効果ありでグラフィックを表示すると、文章のフェードアウトなども可能。 つまり、他の画像と同時に同じ表示効果で変化させることも可能。 ただし表示始めは↓の二通りだけ。 表示エフェクトあり(一文字ずつ表示)・なし(一括表示)が選択出来る。 一括表示は、ウェイトタイム設定(<W1>など)・メッセージ表示内キー待ち(<KEY>)が無効になる。 一括表示で一定時間、またはキーの入力を待ちたい時は、しばらく待つを使用する。 表示エフェクトありの▽は、待機中に〔ダイナミックレイヤーのクリア:ID2002〕で表示が消せる。 コミックメーカー2では使用出来なかった「!"'()?;:*/」も使用出来る。 ・しばらく待つ 「ユーザー操作による解除」は「すべての〜」「ダイナミックレイヤー〜」のどちらでもダイナミックレイヤーによる解除が可能。(ダイナミックレイヤーActiveMode対応表参照) 「制限時間による解除」「ユーザー操作による解除」の二つは同時選択も出来る。 ・条件分岐 一つにつき判断出来る条件は一つ。 二重三重に囲むことで、複数の条件を同時に判断することが出来る。 条件は数値変数・文字列変数の二種類。 数値変数は、数値または数値変数との比較が可能。 文字列変数は、文字列または文字列変数との比較が可能。 比較対象文字列は、%(数値変数)%や$(文字列変数)$を複雑に入力することも可能。 「そうでなければ」は、指定条件と指定条件以外の二種類に対して動作をしたい時に便利。(例:⊆+そうでなければ) ↑必ず入れる必要はない。 ・セーブコントロールコマンド 実行状態をセーブファイルに記録する その時の状態をとにかく全部保存する。 ユーザーレイヤーもダイナミックレイヤーも変数もどのブック・ページ・箇所からサブルーチンコール中なのかも画面画像も保存日時も。(08/02/29修正) セーブした時点でどの箇所を実行中かはセーブされない。 ダイナミックレイヤーは新しい物から順に保存されてしまう。 複数のダイナミックレイヤーを重ねている状態で保存するのは場合によっては危険。 ……まぁつまり、セーブシステムにはデフォルトで危険な点があるわけです。 今度みっくすさんに報告しようかな……。 〔メッセージの表示〕表示エフェクトあり≠フ表示途中の場合、その時表示しているメッセージ+続きが保存される。 セーブファイルから実行状態を復元する セーブされたそのままが再現され、そのセーブ箇所から再開される。 サブルーチンコール前の箇所がセーブされているので、サブルーチンコール前の箇所から再開される。 ダイナミックレイヤーは新しい順に保存されたのを順に表示するので、ばらばらっと、セーブ時とは逆の順序で表示されてしまう。 ロードすると、そのロードコマンド以降は実行されない。 ロードしようとしてもセーブファイルが無い場合は無視されて、続くコマンドが実行される。 セーブ時の音量も再現される。例えばBGMの音量を50にしてセーブして終了する。もう一度起動するとBGMは終了時と同じ音量50で流れる。ここでBGMを音量100にして、音量50のセーブデータをロードすると、BGMの音量は50になる。だがBGMをOFFにして、音量50のセーブデータをロードすると、音量50のはずがBGMは流れない。 変数の内容をセーブファイルに記録する 文字列変数の保存の実装は暫く先だそうです。 各登録キーワードには数値のみを保存し、どの数値変数から保存したかという情報は保存しない。 違う数値変数同士で同じ登録キーワードを使っても問題ない。 ☆保存する値は数値変数ではなくただの数値も可能。 セーブファイルから変数の内容を復元する 文字列変数の読み込みの実装は暫く先だそうです。 各登録キーワードには数値のみが保存されており、どの数値変数から保存したかという情報は復元しない。 違う数値変数同士で同じ登録キーワードを使っても問題ない。 ◆隠しコマンド 配布元サイト様ではサポート対象外です。 普通にコミックメーカー3で作品を作るなら、隠しコマンドは使いません。 擬似メニューバー等の特殊な使い方をしたい場合のみ使用します。 よくわからない人は触らないのが懸命です。 興味がある人のみ反転してください。 ・登録キーワード「System.MusicVolume」 画面を閉じた時のBGMの音量をコミメカ3側が自動保存する。 起動すると↑で保存した音量でBGMを流す。 c_save00.sviがある時は普通に数値変数に読み取ることが可能だが、起動中に音量を変えた後に読み取ると変更前の音量が出される。 ・登録キーワード「System.UseMusic」 画面を閉じた時のBGMのON・OFFをコミメカ3側が自動保存する。 起動すると↑で保存したON・OFFに従ってBGMを流す。 c_save00.sviがある時は普通に数値変数に読み取ることは可能だが、起動中にON・OFFを変えた後に読み取ると変更前の状態が出される。 ・登録キーワード「System.SoundVolume」 画面を閉じた時の効果音の音量をコミメカ3側が自動保存する。 起動すると↑で保存した音量で効果音を流す。 c_save00.sviがある時は普通に数値変数に読み取ることが可能だが、起動中に音量を変えた後に読み取ると変更前の音量が出される。 ・登録キーワード「System.UseSound」 画面を閉じた時の効果音のON・OFFをコミメカ3側が自動保存する。 起動すると↑で保存したON・OFFに従って効果音を流す。 c_save00.sviがある時は普通に数値変数に読み取ることは可能だが、起動中にON・OFFを変えた後に読み取ると変更前の状態が出される。 ・_smallimage.bmp セーブ時の画面画像が、各セーブファイルごとに保存される。 BMPファイルが新たに作られるわけではない。セーブデータの中に画像データが保存される。 どんな画面サイズだろうが80×60に縮小される。 その時表示されている全てのユーザーレイヤーが保存される。 テキストレイヤー、ダイナミックレイヤーは画像には保存されない。 デフォルトと違う画像が使いたい場合は、別の画像の80×60の_smallimage.bmpを作り、使う作品で1度以上使用する。 読み込むには、
☆・登録キーワード「Supplement.SaveDate」 そのセーブデータをセーブした日時が入っている。 例:2009/01/01 1:01:01 何故か時だけ、一桁の時は前に0がつかない。 ☆・文字列変数{$_system:date$} 備え付けメニューバーのセーブ日時を表示する時に使用される。 表示に使うのみで、保存には使われない。 ・数値変数%_musicvolume% その時のBGMの音量が入っている。 ただし、音量をいじらない初期状態では音量は100なのにこの変数は0。 ・数値変数%_soundvolume% その時の効果音の音量が入っている。 ただし、音量をいじらない初期状態では音量は100なのにこの変数は0。 以上。 戻る |