ページ 11

アニメーションの再生

Posted: 2011年5月19日(木) 23:54
by small
エフェクトを再生するプログラムを作ったのですが、「問題が発生したため終了します。」と出てうまく出来ません。
どうすれば良いでしょうか?

言語はvisualC++2008です。

コード:

//画像の読み込み
LoadDivGraph( "media\\bakuhu.png", 20, 5, 4, 187, 179, Animation.bakudan );

//アニメーション再生
Animation_Efect( X_Player, Y_Player, 10, 0, 1, 20, Animation.bakudan );


//アニメーションの再生関数 	再生座標X		   再生座標Y		1コマの表示時間      アニメーションの角度	 アニメーション倍率			アニメーションの総数	  表示するアニメーション
void Animation_Efect( double Animation_X, double Animation_Y, int Animation_FPS, double Animation_Angle, double Animation_ExRote, int Animation_Frame, int *Animation_Graph ) {
		
		
	if( Anime_Count > Animation_FPS ){	   
		Animation.frame ++;	//表示する画像
		Anime_Count = 0;	
	    Animation.Flag = 1;
	}

	if( Animation.Flag == 1 ){
	DrawRotaGraph( Animation_X, Animation_Y, Animation_ExRote, Animation_Angle, Animation_Graph[Animation.frame-1], TRUE ); //アニメーションの表示
   }

	if( Animation.frame-1 == Animation_Frame ){//アニメーションの終了
		Animation.Flag = 0;
		Anime_Count	   = 500;	//初期値に戻す
	}

	Anime_Count ++;		
}
他に必要なことがあったら言ってください。説明が下手ですみません・・・。
よろしくお願いします。

Re: アニメーションの再生

Posted: 2011年5月20日(金) 00:18
by (回答者)
画像がしっかり読み込めているか。

Animation_Efect 関数に送る引数の値が正常であるか。

DrawRotaGraph の 第五引数 Animation_Graph[Animation.frame-1] ですが、
配列外にアクセスしてないか。

Anime_Count = 500;
で初期値に戻した瞬間 Anime_Count ++; が処理されてますが大丈夫なのか。

各変数の説明、初期化部分、等々正直情報が少ないため何がどうなっているか解りません。
本当にここで問題が発生しているのかどうかも解りません。
もう少し詳しい情報を頂けないでしょうか。

[名前が適切ではなかったので管理人が変更しました]

Re: アニメーションの再生

Posted: 2011年5月20日(金) 17:03
by small
ご回答ありがとうございます。

>>DrawRotaGraph の 第五引数 Animation_Graph[Animation.frame-1] ですが、
配列外にアクセスしてないか。

とのことで、DrawFormatString(0,20,Color,"%d",Animation.frame);
で確認してみたところ、数値が馬鹿でかい数字になっていました。
構造体の初期化は0で強制的にされる とどこかのサイトで書いてあったと思ったのですが・・・・。

とりあえず、Animation.frame から Animation_frame=0(構造体ではない)と、したところ、正常に動きました。

まだまだ課題はありますが、一つの山を越えられてよかったです。
またお世話になるかもしれませんがそのときはよろしくお願いします。