Platform SDK: DirectX

ステップ 1 : スプライトのアニメーション

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectDraw C/C++ チュートリアル」を参照すること。

[Visual Basic]

donut.bmp イメージに含まれるドーナツの各インスタンスの高さと幅がわかっているため、ビットマップを列と行に分離して、各セルをドーナツの単一イメージにすることができる。

ddsd3.lFlags = DDSD_CAPS
ddsd3.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
Set spritesurf = dd.CreateSurfaceFromFile("donut.bmp ", ddsd3)
spriteWidth = 64
spriteHeight = 64
cols = ddsd3.lWidth / spriteWidth
rows = ddsd3.lHeight / spriteHeight

DirectDrawSurface7.BltFast メソッドをよく見ると、srcRect パラメータは、転送元サーフェス上からブリットされる矩形の左上と右下の点を定義する RECT 型であることがわかる。したがって、スプライト サーフェスの部分つまりセルをランダムに指定すれば、スプライト アニメーションが生成される。

col = currentFrame Mod cols
row = Int(currentFrame / cols)
rSprite.Left = col * spriteWidth
rSprite.Top = row * spriteHeight
rSprite.Right = rSprite.Left + spriteWidth
rSprite.Bottom = rSprite.Top + spriteHeight

'アニメーションされたスプライトをバックバッファに blt する。
ddrval = backbuffer.BltFast(rSprite2.Left, rSprite2.Top, spritesurf, _ 
         rSprite, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT)