« MP3,WMAのライセンスについて | メイン | 言語記憶・会話ソフトは作れますか? »
メッセージ表示部分を隠すボタンを作りたい(CGだけを表示する機能の搭載)
ADVゲームでありがちな「右クリックするとメッセージ表示部分を隠す」機能
すなわち、ゲームのスチル画像だけを表示する機能の搭載方法です。
一般的な市販ADVゲームでは右クリックするとこの動作をしますが、
コミックメーカー3では、右クリック操作ができないので、擬似的な対応となります。
←このようなボタンをクリックするとメッセージ表示部分を隠す。
という機能は搭載することができます。
2009/11/07:その2を追加
「×」ボタンをクリックした際のコマンドをやり直すバージョンを作成しました。
記事の下の方に掲載しています。
2009/09/27:rev.2
入力待ち画像の消去を追加。この為、「一発動作」になりました。
「コミックメーカーヘルプ」で「やってはならない」というコマンドの組み方をしていますが
コミックメーカー作者のみっくすさんに問い合わせを行い、問題についての確認を行いました。
本サンプルを作成する上でご協力頂きました:みっくすさん、濃崎さん
お二方には、心より感謝いたします。
機能の動作概略
こんな画面から、テキスト表示枠の右上、「×」ボタンをクリックすると、
スチル画像だけの表示になります。(システムライブラリによるメニューバーも併せて非表示にします)
もう一度クリックすると、元の画面に戻ります。(メッセージの表示状態が少し進むことがあります(後述))
機能の搭載方法
注:通常のメッセージの表示を行うレイヤーを「テキストレイヤー」レイヤーに指定している場合は搭載できません。
理由:「テキストレイヤー」レイヤーは「レイヤーの制御をする」コマンドで非表示にすることができないので。
メッセージの表示を行うレイヤーは「テキストレイヤー」レイヤー以外にして下さい。
(「テキストレイヤー」レイヤーでは非表示にできません)
まず、
こちらからサンプルファイルをダウンロードして下さい。 rev02の方
その2の方が欲しい方はこちら(「×」をクリックした際のコマンドを再度実行し直す)
その2についての説明は一番下で行っています。
(なお、本圧縮ファイルに含まれているbatsu.png,sample.png,toziru.png,枠部分.pngは再利用して頂いて構いません)
圧縮ファイルを解凍すると、消去ボタンサンプル.cf3がありますので、コミックメーカー3で開いて下さい。
消去ボタンサンプル.cf3のファイル構成は次の通りです。
「消去サンプル」ブック:
このサンプルの通常動作部分です。
ADVゲームで言う、ストーリー部分がここです。
「メッセージウィンドウ消去処理部」ブック:
スチル画像だけにする処理を行う部分になります。
(消去用のルーチンは必要に応じて場合分けしても良いかもしれません*1)
このコミックファイルはコミックランタイムのメニューバーの再表示のために、
サブルーチンコールとしてシステムブックを参照しています。
補注
*1:もしも、ブック毎に非表示にしたいレイヤーが違う場合(ゲームのシーンによって非表示にするレイヤーが違う)は
それに応じて消去用ルーチンを複数用意するようにして下さい。
この場合は、「×」ボタンのダイナミックレイヤー作成に関しても、別々のページにサブルーチンコールするようにして下さい。
今回のサンプルでは、レイヤー構成は以下の通りです。
・テキスト(「テキストレイヤー」ではなく「テキスト」という名前でレイヤーを作っている):テキスト表示部分
・テキスト表示背景:テキスト表示部分の背景
・画像レイヤー1:スチル画像を表示する部分
この状態で「画像レイヤー1」レイヤー以外のレイヤーを非表示にするように処理を行っています。
消去用ルーチンで一度「メッセージウィンドウを一時消去します」という表示が出るようにしていますが、これは
コミックメーカー3のメッセージ表示コマンドの入力待ちカーソルは、サブルーチンコールを行った場合、コール先でも
表示され続けてしまうという仕様があるからです。
(「メッセージウィンドウを一時消去します」という表示があるとき、入力待ちの三角マークが二つあるはずです)
実際のコミックファイルに適用する場合は、
1.インポート
「メッセージウィンドウ消去処理部」ブックを適用したいコミックファイルへインポートします。
2.画像ファイルのコピーor準備
サンプルで使用しているメッセージ表示枠や「×」ボタンを利用したい場合はコミックファイルと同じフォルダにコピーして下さい。
3.「×」ボタンの配置
サンプルファイルを参考にして、以下の「×」ボタンの作成部分をメッセージの表示枠を作っている所に入れます(ダイナミックレイヤーの作成)
表示枠を消去している所では、このダイナミックレイヤーを消去することも忘れないようにして下さい。
4.「メッセージウィンドウ消去処理部」ブック内の編集
「消去用ルーチン」の非表示レイヤーの部分を変更してください。
なお、この部分で一時的に「テキストレイヤー」レイヤーを使用していますので、問題があるようなら対応を行って下さい。
(表示位置がずれる可能性があります。)
(何故使っているのか:メッセージの表示を行っているレイヤーで行ってしまうと表示内容が消えてしまうので、別のレイヤーを使用する必要が有ります)
レイヤーを再表示する部分の変更も忘れずにしてください
以上で機能の搭載ができるはずです。
(何か問題があるようならコメントで質問して下さい。)
なお、toziru.pngはオマケです。(和風バージョンで「閉」と表示されます。30×30pxなのでご注意を)
(一応)サンプルの画像の仕様:
メッセージ表示枠:640×150px、枠の内部は620×130px 枠内部80%透過、枠部分は85%透過
「×」ボタン:15×15px 外側1pxに黒線(不透過) 黒線内部は80%透過
動作上の問題について
(特に読む必要はありませんが、こういう問題が起きる、という認識はあった方が良いかもしれません)
コミックランタイムの動作仕様のため、「メッセージの表示」コマンドで
こんにちは<KEY>
今日も良い天気ですね<KEY>
もし、よろしかったら、散歩に行きませんか?<KEY>
あ、ダメですか?<KEY>
では、またの機会に。<KEY>
というようなメッセージを表示する場合、表示先のレイヤーが3行までしか表示が行えないときに
最初の
こんにちは
だけが表示されている時に「×」ボタンをクリックして、メッセージの表示を
消去し、もう一度クリックして元の画面に戻ると
こんにちは
今日も良い天気ですね
もし、よろしかったら、散歩にいきませんか?
の3行が表示された状態で復帰します。
ただし、入力待ちはこんにちはの後の<KEY>の状態で入力待ちとなります。
つまり、この3行が表示された状態で3回クリックを行う必要が有ります。
この3行が表示された後で表示が行われる
あ、ダメですか?<KEY>
では、またの機会に。<KEY>
の2行に関しては、通常通りに表示されます。
この問題に関しては、コミックメーカーの「メッセージの表示」コマンドの仕様に起因するものです。
(サブルーチンコール先でレイヤーの操作を行ってしまうと、それまで”表示しようとしていた”
メッセージを全て表示してしまう)
この問題が原因となり、コミックランタイムが異常終了することはありませんのでご安心下さい。
2009/11/07追記:その2について
その2の動作については、上記の問題を間接的に回避しています。
「×」ボタンをクリック→mwdis.datというファイルに実行状態を保存→クリックしたら実行状態を復元
というシステムで組んでいますので、
「×」ボタンをクリックした時に実行していたコマンドを再び実行する形になります。
たとえば、上で紹介した
こんにちは<KEY>
今日も良い天気ですね<KEY>
もし、よろしかったら、散歩にいきませんか?<KEY>
というメッセージの表示コマンドに関しては、どの<KEY>の状態で「×」ボタンを押したとしても
再び「こんにちは」から表示のやり直しとなります。
・・・見てくれ的にはこちらの方が綺麗かもしれません。
問題を回避というのは、レイヤーの操作をする前の状態でセーブして、それをロードしているので
問題の処理部分を実行したという記録はされない、という意味です。
関連記事
- 表示されている画像を消去する。エフェクトつきで消去する方法
- メッセージを一行ずつ表示する
- メッセージを縦書き表示したい
- メッセージ表示用背景レイヤーの作成
- 一つのウインドウに複数フォントを混在させて表示
- メッセージ表示コマンドのメッセージを画像化
- 1つのレイヤーに複数の画像を表示できますか?
- 「表示範囲内の表示位置を変更する」とは?
- 「レイヤーの表示範囲にのみ、表示効果を適用する」とは
- 「すぐに画面へ反映させる」とは?
Copyright ©2005-2013 近藤 All Rights Reserved.| 2009年11月 7日
トラックバック
このエントリーのトラックバックURL:
http://faq.comicmaker.info/system/mt-tb.cgi/228
質問と回答
この記事についての質問・意見はこちらからどうぞ
質問した直後にはこのページには質問は掲載されません。
近藤(管理人)による回答が完了した時点(1日~3日ほど)で質問と回答が同時掲載されます。
尚、メールアドレスを記入していただいた質問につきましては、
メールアドレス宛に回答させていただき、このページには質問も回答も掲載致しません
(ただし、データ本文を修正するべきと判断した場合は質問の回答に基づき修正いたします)
ので、個人の開発環境に深く関係するような質問はなるべくメールアドレスをご記入下さい。
<<SPAM対策のため、以下の英字は使用しないでください>>
good,great,nice,homepage,find