Platform SDK: DirectX

ステップ 7 : 別のプライマリ セグメントへの移行

[Visual Basic]

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

[C++]

Dmdonuts は、2 つの状況で異なったプライマリ セグメントを挿入する。ゲーム レベルが変化したときと、任意のレベルでアステロイドに最初に衝突したときである。次のコードは、CheckForHits 関数から抜粋したものである。この関数は、現在のレベルで衝突が最初に発生したことを検出すると、DirectMusic コンポーザに、現在の (導入) テーマからアクション テーマへの移行部を作成するよう指示する。IDirectMusicComposer::AutoTransition を呼び出した場合も、移行部と次のアクションセグメントが挿入され、それらが自動的に演奏される。この場合、移行部は次の小節境界から開始される。

if (gapSegment[SEGMENT_TRANS_1])
{
    gapSegment[SEGMENT_TRANS_1]->Release();
}
gpComposer->AutoTransition(
        gpPerformance,                 // パフォーマンス。
        gapSegment[SEGMENT_2],         // 次のプライマリ セグメント
        DMUS_COMMANDT_FILL,            // 装飾タイプ。
        DMUS_COMPOSEF_MODULATE |       // 新しいキーへ転調し、
        DMUS_COMPOSEF_MEASURE,         // 小節を開始する。
        gapChordMap[gnCurrentStyle] [gnCurrentChordMap], 
                                       // 現在のコード マップを使う。
        &gapSegment[SEGMENT_TRANS_1],  // 作成された移行部セグメント。
        NULL, NULL                     // セグメント状態は必要ない
);
 

最初のセグメントを停止する必要がない点に注意すること。移行部または新しいプライマリ セグメントが演奏されると、最初のセグメントは自動的に停止する。

次項 : ステップ 8 : モチーフの演奏