トップページ > 過去ログ > 記事閲覧
ロード画面の表示
名前:U-meda 日時: 2007/01/20 19:31

よくゲームなどで画像やサウンドを先にロードして スタート画面を表示していますが そのロード中にロード画面を表示することはできますでしょうか? また、ロードしたデータ量をゲージとして表示する方法はありますか?

Page: 1 |

Re: ロード画面の表示 ( No.1 )
名前:管理人 日時:2007/01/21 04:30

 U-medaさんどうも、DXライブラリの管理人です。  ロード画面用の画像を先に読み込み、画面に描画しておいた状態でその他の 画像・音を読み込むという形になると思います。  ゲージは一つ、又は幾つかのファイルを読み込むたびに 読み込み終わったファイル数 と 読み込むファイルの総数  との割合を元に表示することが出来ます。 (より正確に「読み込み終わったファイルのバイト数 と 読み込むファイルの総バイト数」 にするのもアリです) サンプル:  Test1.bmp を 1000回読み込むプログラムです。  途中経過を DrawLoadingScreen 関数で描画しています。 #include "DxLib.h" // 読み込むファイルの総数 #define FILENUM 1000 // ゲージの幅 #define GAUGEWIDTH 200 // 画像ハンドル int GrHandle[FILENUM]; // 読み込んでいる画像の番号 int LoadingFile; // 読み込み画面描画関数 void DrawLoadingScreen( void ) { // 「読み込み中」の表示 DrawString( 0, 0, "Now Loading ...", GetColor( 255,255,255 ) ); // ゲージの全体を灰色で描画 DrawBox( 0, 32, GAUGEWIDTH, 56, GetColor( 128,128,128 ), TRUE ); // 現時点で読み込み終わっている分を白色で描画 DrawBox( 0, 32, LoadingFile * GAUGEWIDTH / FILENUM, 56, GetColor( 255,255,255 ), TRUE ); } // WinMain関数 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // ウインドウモードで起動 ChangeWindowMode( TRUE ); // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ); // 読み込む画像の数だけ繰り返し for( LoadingFile = 0; LoadingFile < FILENUM; LoadingFile ++ ) { // 画像の読み込み GrHandle[LoadingFile] = LoadGraph( "Test1.bmp" ); // 20個読み込み終わる毎に読み込み中画面を一回更新する if( LoadingFile % 20 == 0 ) { // 画面の初期化 ClearDrawScreen(); // 読み込み中画面を描画 DrawLoadingScreen(); // 裏画面の内容を表画面に反映 ScreenFlip(); // メッセージ処理 if( ProcessMessage() != 0 ) break; } } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }  因みに、読み込みと経過の描画を非同期で実行するには読み込みが完了する前に関数から 出てくる LoadGraph 関数か、マルチスレッドに対応した LoadGraph 関数が必要ですが、 現在のDXライブラリにはどちらの機能もありません。
Re: ロード画面の表示 ( No.2 )
名前:U-meda 日時:2007/01/25 00:58

返答有難うございます。 非同期実行は自分で研究してみます。

Page: 1 |