Phát, tạm dừng và dừng lại theo hàng đợi
tóm tắt
Sử dụng tín hiệu để phát, tạm dừng và dừng âm thanh.
Môi trường hoạt động
Điều kiện tiên quyết
Các phiên bản XNA được hỗ trợ |
|
Nền tảng được hỗ trợ |
|
Phiên bản Vertex Shader bắt buộc của Windows | 1.1 |
Phiên bản Pixel Shader bắt buộc của Windows | 1.1 |
Môi trường hoạt động
nền tảng |
Làm thế nào để làm việc với mẫu
điều khiển XboxBàn phím hoạt độngBộ | 360chuột | ||
---|---|---|---|
Phát và tạm dừng âm thanh | Một | Một | - |
Dừng âm thanh | B | B | - |
chất
Lưu ý: Những mẹo này dựa trên XNA Game Studio 2.0.
trường
<summary>
キュー
</summary>
private Cue cue = null;
Bạn đã khai báo một gợi ý mà bạn muốn sử dụng để phát, tạm dừng hoặc dừng âm thanh.
Truy xuất hàng đợi
// 再生するためのキューを取得します
this.cue = this.soundBank.GetCue("Sample");
Để truy xuất gợi ý, hãy sử dụng phương pháp GetCue từ SoundBank. Tên được truyền trong đối số chỉ định tên của hàng đợi mà bạn đã thiết lập khi bạn tạo nó trong XACT.
SoundBank.GetCue
phương pháp
Lấy một gợi ý từ một soundbank.
Tên | xâu | Tên của hàng đợi cần truy xuất |
Phát âm thanh
if (!this.cue.IsPrepared)
{
// 新しいキューを取得します
this.cue = this.soundBank.GetCue(cue.Name);
}
// 再生開始
this.cue.Play();
Để phát âm thanh, hãy sử dụng phương pháp "Cue.Play". Tuy nhiên, sau khi phát lại hoàn tất, nó không thể được phát lại bằng phương pháp Cue.Play. Bạn có thể xác định xem quá trình phát lại đã hoàn tất hay chưa bằng cách sử dụng thuộc tính "Cue.IsPrepared", vì vậy nếu quá trình phát lại hoàn tất, hãy sử dụng phương pháp SoundBank.GetCue để truy xuất lại gợi ý.
Cue.Play
phương pháp
Bắt đầu phát âm thanh theo gợi ý sẵn sàng.
Tạm dừng âm thanh
else if (this.cue.IsPlaying)
{
// 一時停止
this.cue.Pause();
}
Để phát âm thanh, hãy sử dụng phương pháp "Cue.Pause". Trong mẫu, chúng ta nhận được thuộc tính "Cue.IsPlaying" để xem nó có đang phát hay không và nếu nó đang phát, chúng ta tạm dừng nó.
Cue.Pause
phương pháp
Tạm dừng âm thanh đang phát.
Tiếp tục từ tạm dừng âm thanh
if (this.cue.IsPaused)
{
// 一時停止から再開する
this.cue.Resume();
}
Để tiếp tục âm thanh bị tạm dừng từ đầu, hãy sử dụng phương pháp Cue.Resume. Trong mẫu, thuộc tính "Cue.IsPause" được sử dụng để xác định xem nó có bị tạm dừng hay không.
Cue.Resume
phương pháp
Tiếp tục hàng đợi bị tạm dừng.
Dừng âm thanh
// サウンドを停止します
this.cue.Stop(AudioStopOptions.AsAuthored);
Để dừng âm thanh đang phát, hãy sử dụng phương pháp "Cue.Stop". Phương pháp này có thể được sử dụng trong khi phát lại hoặc tạm dừng. Có hai liệt kê "AudioStopOptions" để vượt qua trong các đối số, nhưng một trong hai có thể được sử dụng.
Cue.Stop
phương pháp
Dừng hàng đợi đang phát.
Tùy chọn | AudioStopOptions | Kiểm soát các thông số để dừng hàng đợi trong khi phát lại. |
Tất cả các mã
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
namespace UseCue
{
<summary>
ゲームメインクラス
</summary>
public class GameMain : Microsoft.Xna.Framework.Game
{
<summary>
グラフィックデバイス管理クラス
</summary>
private GraphicsDeviceManager graphics = null;
<summary>
スプライトのバッチ化クラス
</summary>
private SpriteBatch spriteBatch = null;
<summary>
スプライトでテキストを描画するためのフォント
</summary>
private SpriteFont font = null;
<summary>
オーディオエンジン
</summary>
private AudioEngine audioEngine = null;
<summary>
WaveBank
</summary>
private WaveBank waveBank = null;
<summary>
SoundBank
</summary>
private SoundBank soundBank = null;
<summary>
キュー
</summary>
private Cue cue = null;
<summary>
直線のキーボード入力の状態
</summary>
private KeyboardState oldKeyboardState = new KeyboardState();
<summary>
直線のゲームパッド入力の状態
</summary>
private GamePadState oldGamePadState = new GamePadState();
<summary>
GameMain コンストラクタ
</summary>
public GameMain()
{
// グラフィックデバイス管理クラスの作成
this.graphics = new GraphicsDeviceManager(this);
// ゲームコンテンツのルートディレクトリを設定
this.Content.RootDirectory = "Content";
}
<summary>
ゲームが始まる前の初期化処理を行うメソッド
グラフィック以外のデータの読み込み、コンポーネントの初期化を行う
</summary>
protected override void Initialize()
{
// オーディオデータの読み込み
this.audioEngine = new AudioEngine(@"Content\Audio.xgs");
this.waveBank = new WaveBank(this.audioEngine, @"Content\Wave Bank.xwb");
this.soundBank = new SoundBank(this.audioEngine, @"Content\Sound Bank.xsb");
// 再生するためのキューを取得します
this.cue = this.soundBank.GetCue("Sample");
// コンポーネントの初期化などを行います
base.Initialize();
}
<summary>
ゲームが始まるときに一回だけ呼ばれ
すべてのゲームコンテンツを読み込みます
</summary>
protected override void LoadContent()
{
// テクスチャーを描画するためのスプライトバッチクラスを作成します
this.spriteBatch = new SpriteBatch(this.GraphicsDevice);
// フォントをコンテンツパイプラインから読み込む
this.font = this.Content.Load<SpriteFont>("Font");
}
<summary>
ゲームが終了するときに一回だけ呼ばれ
すべてのゲームコンテンツをアンロードします
</summary>
protected override void UnloadContent()
{
// TODO: ContentManager で管理されていないコンテンツを
// ここでアンロードしてください
}
<summary>
描画以外のデータ更新等の処理を行うメソッド
主に入力処理、衝突判定などの物理計算、オーディオの再生など
</summary>
<param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
protected override void Update(GameTime gameTime)
{
// キーボードの情報取得
KeyboardState keyboardState = Keyboard.GetState();
// ゲームパッドの情報取得
GamePadState gamePadState = GamePad.GetState(PlayerIndex.One);
// Xbox360 コントローラの BACK ボタンを押したときにゲームを終了させます
if (gamePadState.Buttons.Back == ButtonState.Pressed)
{
this.Exit();
}
if ((keyboardState.IsKeyDown(Keys.A) && this.oldKeyboardState.IsKeyUp(Keys.A)) ||
(gamePadState.Buttons.A == ButtonState.Pressed &&
this.oldGamePadState.Buttons.A == ButtonState.Released))
{
if (this.cue.IsPaused)
{
// 一時停止から再開する
this.cue.Resume();
}
else if (this.cue.IsPlaying)
{
// 一時停止
this.cue.Pause();
}
else
{
if (!this.cue.IsPrepared)
{
// 新しいキューを取得します
this.cue = this.soundBank.GetCue(cue.Name);
}
// 再生開始
this.cue.Play();
}
}
if ((keyboardState.IsKeyDown(Keys.B) && this.oldKeyboardState.IsKeyUp(Keys.B)) ||
(gamePadState.Buttons.B == ButtonState.Pressed &&
this.oldGamePadState.Buttons.B == ButtonState.Released))
{
// サウンドを停止します
this.cue.Stop(AudioStopOptions.AsAuthored);
}
// 入力状態を記憶
this.oldKeyboardState = keyboardState;
this.oldGamePadState = gamePadState;
// 登録された GameComponent を更新する
base.Update(gameTime);
}
<summary>
描画処理を行うメソッド
</summary>
<param name="gameTime">このメソッドが呼ばれたときのゲー��時間</param>
protected override void Draw(GameTime gameTime)
{
// 画面を指定した色でクリアします
this.GraphicsDevice.Clear(Color.CornflowerBlue);
// スプライトの描画準備
this.spriteBatch.Begin();
// テキスト描画
this.spriteBatch.DrawString(this.font,
"A : Play and Pause \r\n" +
"B : Stop",
new Vector2(50.0f, 50.0f), Color.White);
// スプライトの一括描画
this.spriteBatch.End();
// 登録された DrawableGameComponent を描画する
base.Draw(gameTime);
}
}
}