ローディングで伸びてゆくバー

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
小太郎

ローディングで伸びてゆくバー

#1

投稿記事 by 小太郎 » 14年前

今ロードバー(?)を作っています。
関数ポインタを使って、一つ画像が読み込まれたらバーをちょっと伸ばすといったことを繰り返し、もしNULLだったらbreakでロードループを抜けるといった形にしたいのですが、肝心の関数ポインタを良く理解できずに困っています。
質問なのですが、下の様にするとエラーが出てしまう。じゃあどうすれば下の様な形にできるのでしょうか?
なんか質問の内容がめちゃくちゃですみません、わかりにくかったらもう一度説明いたしまう

コード:

#include "DxLib.h"

int (*Loading[])()=
{
	LoadGraph("画像/test1.png"),
	LoadGraph("画像/test2.png"),
	LoadGraph("画像/test3.png"),
	NULL,
};

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
		ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);

		int Handle[3],i=0;

		while(!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()){

				if(Loading[i]() != NULL)	Handle[i]=Loading[i]();
				else						break;

				i++;
				printfDx("OK!\n");
		}

		printfDx("All completed!!\n");
		ScreenFlip();
		WaitKey();

		DxLib_End();
		return 0;
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ローディングで伸びてゆくバー

#2

投稿記事 by softya(ソフト屋) » 14年前

少なくとも関数ポインタにはなっていないです。
これだったらファイル名を配列にしてLoadGraph()のファイル名を配列で与える方式にすべきでしょう。
関数ポインタの出番ではありません。

あとDXライブラリで最近非同期読み込みが公式サポートされたので、それを使うとスムーズなnow loadingが実現します。

SetUseASyncLoadFlag  非同期読み込みを行うかどうかを設定する
GetASyncLoadNum  行っている非同期読み込みの数を取得する
CheckHandleASyncLoad  ハンドルが非同期読み込み中かどうかを取得する

「DXライブラリ置き場 リファレンスページ」
http://homepage2.nifty.com/natupaji/DxL ... html#R21N1
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

小太郎

Re: ローディングで伸びてゆくバー

#3

投稿記事 by 小太郎 » 14年前

そうですね、確かに名前を配列に格納して与えるべきでした
ポインタ関数を一度でも使ってみたいと思いすぎて無駄なところにむりくりねじ込んでしまったみたいですorz

教えてもらった三つの関数をテストしてみたところすごく使える、自分の求めていた関数そのものだったようで、こちらを使っていこうと決めました。そっちのほうがバーだけじゃない、もっといいロード画面ができそうですし。

ソフト屋様ありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る