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
を参照。
|
|