ページ 11

フェード+効果音

Posted: 2010年6月13日(日) 00:24
by 深黒
int fie=LoadGraph( "field.bmp" ) ;
int ble=LoadGraph( "bless.bmp" ) ;
for(i=255;i>=0;i-=3){
ClearDrawScreen();
SetDrawScreen( DX_SCREEN_BACK ) ;
DrawGraph(0,0,fie,FALSE);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,255);
DrawGraph(300,300, ble, FALSE );
SetDrawBlendMode(DX_BLENDMODE_ALPHA,i);
DrawBox(300,300,430,488,GetColor(255,255,255),TRUE);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,255);
ScreenFlip() ;
}
SetDrawScreen( DX_SCREEN_FRONT ) ;
field(1);
こんな感じにプログラムを入力して、白→フェードしながらに画像を表示というのを作りました。
これに効果音を出せるように仕組んで、フェードしつつ効果音を出すというのがやりたいのですが、平行できません。
どうすればいいかアドバイスが欲しいです。

Re:フェード+効果音

Posted: 2010年6月13日(日) 00:56
by Dixq (管理人)
ゲームプログラミングの館にDXライブラリの使い方が一通り載っているので目を通して頂ければと思います。
例えば今回の件ならこの辺が参考になると思います。

http://dixq.net/g/33.html

画面消去や反映は複数個所に書くべきではなく、どこか1か所に書き、毎回そこをループする必要があります。
プログラムを書く時は処理の担当を明確にし、関数化すると解りやすいでしょう。

また、裏画面に設定する関数はループで呼ぶ必要はありません。

Re:フェード+効果音

Posted: 2010年6月13日(日) 13:46
by 深黒
返信ありがとうございます。
int fie=LoadGraph( "field.bmp" ) ;
int ble=LoadGraph( "bless.bmp" ) ;
ClearDrawScreen();
SetDrawScreen( DX_SCREEN_BACK ) ;
DrawGraph(0,0,fie,FALSE);
for(i=255;i>=0;i-=3){
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,255);
DrawGraph(300,300, ble, FALSE );
SetDrawBlendMode(DX_BLENDMODE_ALPHA,i);
DrawBox(300,300,430,488,GetColor(255,255,255),TRUE);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,255);
ScreenFlip() ;
}
SetDrawScreen( DX_SCREEN_FRONT ) ;
field(1);
指摘された部分を考えるとこんなプログラムになりました。

効果音が平行できないというのは、例えばfor文の前に効果音の文を入れると、効果音が鳴り終わらないとフェードの作業をしないため、うまくいかないという事です。
鳴らしつつ、フェードするというのがしたいです

Re:フェード+効果音

Posted: 2010年6月13日(日) 13:53
by シエル
効果音を鳴らすときの関数でPlayTypeという引数があると思いますが、
その引数がDX_PLAYTYPE_NORMALになってませんか?
DX_PLAYTYPE_BACKにすると再生した後すぐに制御を返してくれます。

Re:フェード+効果音

Posted: 2010年6月13日(日) 14:22
by 深黒
返信ありがとうございます。
変更したら成功しましたm(_ _)m 画像