トップページ > 記事閲覧
フェードインの時間の指定方法
名前:特売みかん 日時: 2017/04/25 20:43

こんばんは。お世話になります。 ttp://dxlib.o.oo7.jp/dxprogram.html#N9 このページを見てフェードを作成したのですが、 フェードの始まりから終わりまでの時間が思い通りにならず困っています。 どのように書けば時間を指定できるのでしょうか? ご教授おねがいします。 また、初心者ですので簡単なコードを提示していただけると幸いです。 どうぞよろしくお願いします。
メンテ

Page: 1 |

Re: フェードインの時間の指定方法 ( No.1 )
名前:たろう 日時:2017/04/26 19:11

特売みかんさんこんにちは、 私にも答えられそうなのでとりあえず・・・ ttp://dxlib.o.oo7.jp/dxprogram.html#N9と ttp://dixq.net/g/38.html をくっつけただけです。 「速度」の数字を大きくするほど早くなります #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int c=0 , 速度=1; int GraphHandle ; if(速度<1){速度=1;} //安全装置 SetGraphMode( 640 , 480 , 16 ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // test1.bmpを読みこむ GraphHandle = LoadGraph( "test1.bmp" ) ; // 描画先を裏画面にセット SetDrawScreen( DX_SCREEN_BACK ) ; // 時間待ち WaitTimer( 1000 ) ; while( 1 ){ ClearDrawScreen(); // 裏画面のデータを全て削除 if(c>=0 && c<256) //cが0~256の時 SetDrawBright( c , c , c ); //段々あかるく(c= 0->255) if(c>=256 && c<400) //cが256~400の時 SetDrawBright( 255 , 255 , 255 ); //通常の明るさ if(c>=400 && c<400+256) //cが400~400+256の時 SetDrawBright( 255-(c-400) , 255-(c-400) , 255-(c-400) );//段々暗く(c= 255->0) DrawGraph( 0 , 0 , GraphHandle , FALSE ) ; //画面全体に白い四角形を描画 c+=速度; //cをカウントアップ if(c>=400+256) break; //暗くなり終わったら終了 if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了 ScreenFlip() ; // 裏画面データを表画面へ反映 } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
メンテ
Re: フェードインの時間の指定方法 ( No.2 )
名前:yumetodo 日時:2017/04/27 11:38

固定fpsにするか可変fpsにするかで違います。 で、その処理をあちこちにばらばら書くのはバグのもとなので関数化しましょう。 せっかくC++にはLambda式があり、templateがあるのですから。 ttps://bitbucket.org/yumetodo/dxlib_n4095/src/9b767e5c17f846321ae1c89003d9365957a75091/dxlib_n4095/main.cpp animation_cfr_syncが固定fps、animation_vfr_syncが可変fpsです。 void animation_cfr_sync(const std::chrono::duration<Rep, Period>& time, std::size_t count, Func&& f); time : アニメーションを実行する所要時間 count: ループ実行回数 f : (std::size_t, std::size_t)を引数にとる、実行する関数オブジェクト(lambda式)もしくは関数ポインタ。 第一引数はループカウンタの値、第二引数はcountが渡される void animation_vfr_sync(const std::chrono::duration<Rep, Period>& time, Func&& f) time : アニメーションを実行する所要時間 f : (std::chrono::nanoseconds, std::chrono::nanoseconds)を引数にとる、実行する関数オブジェクト(lambda式)もしくは関数ポインタ。 第一引数はループ開始からの現在の時間、第二引数はtime が渡される std::chrono::nanosecondsとかは ttps://cpprefjp.github.io/reference/chrono/duration.html を参照。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存