ページ 11

フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 18:32
by フリーナ
DXライブラリでフェードアウトの処理をしようとすると途中でエラーがでます。
VC++ 2010EXpress使用してます。
最初のフェードインの関数を作って実行すると成功するんですが
フェードアウトの関数のほうはなぜか途中で「応答待ち」と出て処理がとまります。
なぜでしょうか?
普通におんなじなのに。

#include <DxLib.h>

void feedout()
{
int i;
    int character;
character = LoadGraph("character.png");

for(i = 255; i >= 0; i-- )
{
SetDrawBright(i, i, i);
DrawGraph(0, 0, character, TRUE);
ScreenFlip();
}

}

Re: フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 19:47
by うずら
このコードでならうまくいきましたが・・・(VS2013、Win8.1 Update1、DXライブラリ3.12c)
(載せていただいたものを若干改変。)

画像ファイルがないとか基本的なところを確認してください。
DXライブラリのバージョンなども確認するといいかもしれません。

コード:


#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  ChangeWindowMode(1);

  DxLib_Init();

  SetDrawScreen(DX_SCREEN_BACK);

  int i;
  int character;
  character = LoadGraph("character.png");

  for (i = 255; i >= 0; i--)
  {
    ClearDrawScreen();

    SetDrawBright(i, i, i);
    DrawGraph(0, 0, character, TRUE);
    ScreenFlip();
  }

  DxLib_End();
}


Re: フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 19:58
by フリーナ
回答ありがとうございます。
今、やってみようと思います。
あと、DXライブラリのバージョンってどうすれば確認できますか?

Re: フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 20:02
by みけCAT
フリーナ さんが書きました:DXライブラリのバージョンってどうすれば確認できますか?
生成されたLog.txtを見れば最初の方に書いてあります。

Re: フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 20:15
by みけCAT
メインループ以外の場所でScreenFlip()を呼んでいるのはあまりよろしくない設計です。

Re: フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 20:17
by フリーナ
>>生成されたLog.txtを見れば最初の方に書いてあります。[/quote]

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

Re: フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 20:20
by フリーナ
うずら さんが書きました:このコードでならうまくいきましたが・・・(VS2013、Win8.1 Update1、DXライブラリ3.12c)
(載せていただいたものを若干改変。)

画像ファイルがないとか基本的なところを確認してください。
DXライブラリのバージョンなども確認するといいかもしれません。

こちらの処理だとうまくいきました。
ただ、フェードイン、フェードアウトだとまたエラーがでて「応答待ち」になってしまいます。
どうすればいいでしょうか?フェードイン・フェードアウトの両方を成功させたいのですが・どうすればいいでしょう?

Re: フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 20:26
by みけCAT
フリーナ さんが書きました:ただ、フェードイン、フェードアウトだとまたエラーがでて「応答待ち」になってしまいます。
どうすればいいでしょうか?フェードイン・フェードアウトの両方を成功させたいのですが・どうすればいいでしょう?
対症療法としては、ScreenFlip();の直前にProcessMessage();を追加すると改善するかもしれません。

参考:http://dixq.net/g/13.html

Re: フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 20:32
by フリーナ
みけCAT さんが書きました:
フリーナ さんが書きました:ただ、フェードイン、フェードアウトだとまたエラーがでて「応答待ち」になってしまいます。
どうすればいいでしょうか?フェードイン・フェードアウトの両方を成功させたいのですが・どうすればいいでしょう?
対症療法としては、ScreenFlip();の直前にProcessMessage();を追加すると改善するかもしれません。

参考:http://dixq.net/g/13.html
無事、解決しました!!本当にありがとうございます!!

Re: フェードアウト処理がうまくいかないです。

Posted: 2014年8月13日(水) 21:19
by softya(ソフト屋)
対処療法なので、このまま使うのはNGですよ。