Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectMusic Visual Basic チュートリアル」を参照すること。
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 : モチーフの演奏