先日のアニメーションの再生について

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

先日のアニメーションの再生について

#1

投稿記事 by small » 14年前

こんばんは。
この前アニメーションの再生について質問させていただいたsmallです。
今回質問したのは、再生させたい画像が別の画像になってしまって、昨夜からずっと悩んでいます。そこで、皆の力を借りたいと思って質問させていただきました。

環境はVisualC++2008で、C言語です。

コード:


 //アニメーション構造体
 struct Animation{
	 int Flag;					//アニメーション再生中?
	 int FPS;
	 int Frame;					//総コマ
	 double X;					//アニメーション座標X
	 double Y;					//アニメーション座標Y
	 double Angle;				//角度
	 double ExRote;				//倍率
	 int *name;					//名前


	 int bakudan[20];			//アニメーションのグラフィック[爆弾]
	 int bakuhatu[4];			//アニメーションのグラフィック[爆発]
	 //画像をココに追加する
	
 };

//アニメーションの再生	再生座標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 ) {
		
		
		//アニメーションデータの初期化
	    Animation.Flag = 1;					//フラグを立てる
		Animation.X = Animation_X;			//アニメーションの再生座標X
		Animation.Y = Animation_Y;			//アニメーションの再生座標Y
		Animation.FPS   = Animation_FPS;	//1コマの表示時間
		Animation.Angle = Animation_Angle;	//角度
		Animation.ExRote= Animation_ExRote;	//倍率
		Animation.Frame = Animation_Frame;	//表示する画像[配列]
		Animation.name  = Animation_Graph;	//表示する画像[画像名]
	

	
	
	
}

//アニメーション画像の表示
void Animation_Disp(){

	//アニメーションの再生
	if( Animation.Flag == 1 ){
		if( Anime_Count > Animation.FPS ){	   //1コマの表示時間
			Animation_frame ++;				   //表示する配列
			Anime_Count = 0;					//カウンタの初期化
	}
			//1コマの表示
			DrawRotaGraph( Animation.X, Animation.Y, Animation.ExRote, Animation.Angle, Animation.name[Animation_frame-1], TRUE );
	
   }

	if( Animation_frame-1 == Animation.Frame ){	//アニメーションの終了
		Animation.Flag = 0;	//フラグを下げる
		Animation_frame= 0;	//表示する配列を0に戻す
		Anime_Count	   = 0;	//初期値に戻す
	}
     Anime_Count ++;		 //アニメーション表示速度カウント
}

//自機がダメージ受けたときの処理
void Attack_Enemy_Process(){

//アニメーションの再生
	Animation_Efect( X_Player, Y_Player, 5, 0, 1, 4, Animation.bakuhatu );
	}
症状: 再生したいアニメーションの画像をAnimation.bakudan から Animation.bakuhatu にするとAnimation.bakudanの画像が再生されてしまう。
試してみたことは、
//アニメーションの読み込み[爆弾]
LoadDivGraph( "media\\bakudan.png", 20, 5, 4, 187, 179, Animation.bakudan );
//アニメーションの読み込み[爆発]
LoadDivGraph( "media\\anime_magic_fire04.png", 4, 4, 0, 80, 78, Animation.bakuhatu );

//アニメーションの読み込み[爆弾]
LoadDivGraph( "media\\bakudan.png", 20, 5, 4, 187, 179, Animation.bakudan );
この部分を削除して再生してみました。
すると、エラーは発生せずに、デバッグできました。
しかしAnimation.bakuhatuを再生させてみても画像が表示されませんでした。
これは画像の種類、名前によって表示できるものとできないものがあるのでしょうか?
画像名:bakuhatu.png 

もっと詳しく説明してほしい箇所・情報不足な箇所があれば、教えてください。
よろしくお願いします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 先日のアニメーションの再生について

#2

投稿記事 by h2so5 » 14年前

small さんが書きました: 症状: 再生したいアニメーションの画像をAnimation.bakudan から Animation.bakuhatu にするとAnimation.bakudanの画像が再生されてしまう。
試してみたことは、
//アニメーションの読み込み[爆弾]
LoadDivGraph( "media\\bakudan.png", 20, 5, 4, 187, 179, Animation.bakudan );
//アニメーションの読み込み[爆発]
LoadDivGraph( "media\\anime_magic_fire04.png", 4, 4, 0, 80, 78, Animation.bakuhatu );

//アニメーションの読み込み[爆弾]
LoadDivGraph( "media\\bakudan.png", 20, 5, 4, 187, 179, Animation.bakudan );
この部分を削除して再生してみました。
すると、エラーは発生せずに、デバッグできました。
どのようなエラーメッセージが出たのでしょうか?

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 先日のアニメーションの再生について

#3

投稿記事 by ISLe » 14年前

Animation_Efect関数の中で、Animation_frameを0に初期設定しないとダメなのではないでしょうか。
ついでにAnime_Countも。

small

Re: 先日のアニメーションの再生について

#4

投稿記事 by small » 14年前

ご回答ありがとうございます。

>>Animation_Efect関数の中で、Animation_frameを0に初期設定しないとダメなのではないでしょうか。

ごめんなさい。それは、ヘッダーファイルで既に初期化しています。
記載せず説明不足ですみません。


>>どのようなエラーメッセージが出たのでしょうか?

語弊のある内容ですみません。
訂正してない場合もしてある場合もエラーは出ていません。

おかしな箇所は
画像Aの設定→アニメーションする関数→画像Aの表示

と、させたいが

画像Aの設定→アニメーションする関数→画像Bの表示

となってしまうということです。

[処理の流れ]
LoadDivGraph( "media\\anime_magic_fire04.png", 4, 4, 0, 80, 78, Animation.bakuhatu );  
→  Animation_Efect( double Animation_X, double Animation_Y, int Animation_FPS, double Animation_Angle, double Animation_ExRote, int Animation_Frame, int *Animation_Graph )  
→  Animation_Disp()

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 先日のアニメーションの再生について

#5

投稿記事 by ISLe » 14年前

small さんが書きました:>>Animation_Efect関数の中で、Animation_frameを0に初期設定しないとダメなのではないでしょうか。
ごめんなさい。それは、ヘッダーファイルで既に初期化しています。
記載せず説明不足ですみません。
ヘッダーファイルでの初期化ってプログラムの実行開始時に一度だけ行われるのと違いますか。
アニメーションデータを設定するたびにリセットしなければならない変数ではないですか。

small

Re: 先日のアニメーションの再生について

#6

投稿記事 by small » 14年前

あ、できました!
どうやら縦の配列の数がおかしくて、変になっていたみたいです。
他の画像で試したら正常に動いたので、今の画像の縦の配列を色々試行錯誤して解決しました。

本当にお世話になりました。
ありがとうございます。

閉鎖

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