ゲームキット目次       ゲームキット索引

BGameSound

継承:なし

宣言: be/game/GameSound.h

ライブラリ: libgame.so

アロケーション:コンストラクタのみ

概要

BGameSoundクラスは、ほかのゲームサウンドクラスの基本となるものです。このクラスを直接使うことはありません。代わりに継承されたクラスを使うことになります


朝の爆発音

たくさんの爆発音や、不気味なエイリアンの声や、そのほかのスリリングなオーディオの楽しみの音はプレイヤーを幸せにしません(?)。様々なBGameSoundからの継承されたクラスはこれをスナップにします(?)。


プレイヤーのクラスを選ぶ

音を再生するのはシンプルで、ほとんどの適切なクラスの継承されたオブジェクトのインスタンスを生成し、 StartPlaying()関数を呼ぶだけです。どうやって、適切なクラスを決定するのか?いくつかのヒントを挙げると

ほとんどのゲームの要求は、 BSimpleGameSoundBFileGameSoundクラスで満たされます。そしてもちろん、これらのクラスのどれも要求を満たさなかったら、継承クラスをあなた自身で書いてもいいのです。


Polyphony

時々、プレイヤーは同じ時間に同じ音の多数のコピーを鳴らす必要がある。例えば、3way砲を発射し、二つのターゲットに当たったとすると、一度に2つの爆発が聞こえなくてはいけない。それぞれのBGameSound (またはBGameSoundから継承した)オブジェクトは、一度に一回しか再生できない。従って、あなたが許可するそれぞれのポリフォニーのチャンネルから鳴らすためにサウンドのコピーをする必要がある。

これは、このようなシンプルクラスを簡単に使用できる様にする。

   class MultipleEffect {

   public:

      MultipleEffect(BGameSound * sound, int polyphony) {

         m_fx = new BGameSound *[polyphony];

         m_fx[0] = sound;

         for (int ix=1; ix<polyphony; ix++) {

            m_fx[ix] = sound->Clone();

         }

         m_current = 0;

         m_polyphony = polyphony;

      }

      void StartPlaying() {

         int id = atomic_add(&m_current, 1) % m_polyphony;

         m_fx[id]->StartPlaying();

      }

   

   private:

      int32 m_current;

      int32 m_polyphony;

      BGameSound *m_fx;

   };

<<<試してみて、このクラスを洗練してくれ>>>

このクラスのコンストラクタは、BGameSoundから派生した音楽と、一度に再生できるタイムの最大の数を特定します(?)。それは、適切な複製の数を生成しStartPlaying()関数の実装は自動的に最も古い物を選択し、再利用します(?)。 Since StartPlaying()関数が再生している音楽上で最初から再生し直すために、これはちゃんと動作する(?)。 &mdashもし、ポリフォニーが3なら、すでに3つの音楽が再生しており、最も古いものはリセットされ、最初から再生し直される。

現在のバージョンのBeOSでは、 BSimpleGameSoundの複製を作ると、サウンドデータのバッファも複製されるので、メモリ内にサウンドエフェクトの複製をもつことが出来る。この方法で多くのメモリを素早く使用するために、コードを書くときに注意しておいて下さい。


パフォーマンスの立証

パフォーマンスが関わることには多くのことがあり、もちろん出来る限り多くのシステム上でゲームを動かしたいと思うだろう。Beはこれら3つの状況でアプリケーションをテストするとこを推薦する。

これは、徹底的なリストではありません。出来る限り多くの環境でソフトウェアを試すべきです。


コンストラクタとデストラクタ


BGameSound()

                                                         
  

BGameSound(BGameSoundDevice *device = NULL)

サウンドオブジェクトを初期化します。

現在では deviceNULLでなくてはいけません。


~BGameSound

                                                         
  

virtual ~BGameSound()

BGameSoundによって使用されているメモリを解放します。

ノードがプロデューサーによってBBufferGroupsが作られセットされたなら、デストラクタによって削除すべきです。


メンバ関数


Clone()

                                                         
  

virtual BGameSound *Clone(void) const = 0

ゲームサウンドオブジェクトのコピーを返します。基底クラスでは実装されません。派生クラスで実装しなければなりません。


Device()

                                                         
  

BGameSoundDevice *Device(void) const

サウンドをプレイする責任のあるBGameSoundDeviceへのポインタを返します。デフォルトのデバイスが使用されていたら NULLか返ります。


Format()

                                                         
  

const gs_audio_format &Format(void) const

サウンドのフォーマットを示すgs_audio_format構造体を返します。


Gain() see SetGain()


GetAttributes() see SetAttributes()


ID()

                                                         
  

gs_id ID(void) const

BGameSoundオブジェクトに取り付けられているサウンドへのIDを返します。サウンドが選択されていなかったら、0が返ります。


Init()

protected:

                                                         
  

status_t Init(gs_id soundHandle)

オブジェクトによって再生されているサウンドを特定します。

返値

B_OK初期化は成功した。

B_ERRORコンストラクタは失敗した。

他のエラー。プレイヤーは他のエラーを返すかもしれません。


InitCheck()

                                                         
  

status_t InitCheck(void) const

オブジェクトの初期化が成功したかどうかを示す、status_t型の変数を返します。B_OKの返値は全てがうまく行っていることを示す。他のエラーはコンストラクタでエラーになったことを示す。


IsPlaying()

                                                         
  

virtual bool IsPlaying(void)

サウンドが再生されていればtrueが返り、そうでなければfalseが返ります。


LockMemoryPool()

                                                         
  

static status_t LockMemoryPool(bool lockInCore)

この関数はBGameSoundのメモリープール(バッファによって得られる)がメモリーでロックされているかどうかを調べる。プールをロックすることは、パフォーマンスを良くする可能性があるが、メモリの要求も増えて仮想メモリを使用する能率が落ちるかもしれない。

ロックの状態をセット出来るのは派生クラスのコンストラクタだけです。状態を一度セットしてしまうと変更出来ません。

返値

B_OKプールのロック状態はセットされました。

EALREADYロック状態はすでにセットされている。


Pan()は SetPan()を参照して下さい。


SetAttributes() , GetAttributes()

                                                         
  

virtual status_t SetAttributes(gs_attribute *inAttributes, size_t inAttributeCount)

virtual status_t GetAttributes(gs_attribute *ioAttributes, size_t inAttributeCount)

SetAttributes()関数inAttributes配列にマッチするサウンドの属性をセットします。inAttributeCountはリストの中にいくつの属性があるか示します。

GetAttributes()はサウンドの現在の属性を示します。ioAttributesリストはinAttributeCount gs_attribute構造体のリストを含みます。それぞれのエントリは配列のスロットに格納された属性が入っているattributeフィールドを示します(?)。関数が変えるときにこれらの属性が満たされます。

返値

B_OK属性の変更は記録された

B_ERRORプレイヤーは適切に初期化されなかった。


SetGain() , Gain()

                                                         
  

status_t SetGain(float gain, bigtime_t rampDuration = 0)

float Gain(void)

SetGain()はサウンドのゲイン(ボリューム)をセットします。もし rampDurationがゼロでなかったら、ゲインの変更はrampDuration時間取ります。 ゲインは現在の値から新しい値に、述べられた(rampDuration)マイクロ秒で変更されます。rampDurationが0なら、変更は即座にされます。

Gain()関数は現在のゲインを返します。

ゲインは0.0 (無音)から1.0 (最高)までの値を取ります。

返値

B_OKゲインの変更は記録された。

B_ERRORオブジェクトは適切に変更されなかった。

他のエラー。派生クラスは他の適切なエラーを返してもよい。


SetInitError()

protected:

                                                         
  

status_t SetInitError(status_t initError)

InitCheck()が返ったときにセットされたエラーコードを返します。派生クラスはそれらのコンストラクタからこれを呼び出さなくてはなりません。


SetMaxSoundCount()

                                                         
  

static int32 SetMaxSoundCount(int32 maxSoundCount)

この関数は一度に使用できるBGameSoundから派生したオブジェクトの最大数を特定します。この値は32から1024の間の値であるはずです。もし、この範囲外だったら、32または1024の値が取得されます。実際の値のセットが返ります(?)。


SetMemoryPoolSize()

                                                         
  

status_t SetMemoryPoolSize(size_t poolSize)

poolSizeによって特定されうるサウンドバッファのバイト数でメモリープールのサイズをセットします。 この値は128キロバイトから4メガバイトの間でなくてはいけません。そうでなかったらB_BAD_VALUEが返ります。

一度アロケートされたメモリープールは変更できません。

一般的にこの関数は、新しいBGameSoundのサブクラスを実装している時にしか呼ばれません。

返値

B_OKメモリープールのサイズはセットされました。

B_BAD_VALUE要求されたプールサイズは不適切です。

EALREADYメモリープールはすでにアロケートされてます。そのサイズは変更できません。


SetPan() , Pan()

                                                         
  

status_t SetPan(float pan, bigtime_t rampDuration = 0)

float Pan(void)

SetPan()はサウンドのパンを指定します。-1.0から1.0のこの値は、サウンドの場所を示します(完全に左から、完全に右まで)。0の値は、サウンドはユーザーの前に直接現れることを示します(?)。rampDurationが、0でなかったら、ポジションの変更はrampDurationかかります。サウンドは最初のポジションから新しいポジションへ、述べられた(rampDuration)マイクロ秒だけかかって、移動します。もしrampDurationが0なら、変更はすぐ行われます。

Pan()は現在のパンを返します。

返値

B_OKパンの変更は記録された。

B_ERRORオブジェクトは適切に初期化されなかった。

他のエラー。派生クラスは適切なエラーを返しても良い。


StartPlaying() , StopPlaying()

                                                         
  

virtual status_t StartPlaying(void)

virtual status_t StopPlaying(void)

StartPlaying()関数は音の再生を始めます。StopPlaying()は再生を終了します。

StartPlaying()関数をすでに再生している音に対して実行すると、音は止まって最初から鳴り始めます。

これらは全てがうまくいったら、 B_OKを返します。もし、そうでなかったら、適切なエラーコードを返します。そのエラーは派生クラスが用いているものとはかぶりません。


ゲームキット目次       ゲームキット索引

訳者 big56

eir@mb.kcom.ne.jp

専門学校情報が満載♪ 給料前でお金がない・・ 給料前でお金がない・・
[PR] | ヒーリング会社案内 作成se 転職川口栃木荻窪池袋中国SEO対策消費者金融車 買取テンプレート沖縄旅行免許合宿二輪引越しプレゼントゴルフ会員権留学レーシックマッサージFXアフィリエイトFXホームページ制作デイトレードハワイ旅行タイバンコクハワイ レンタカーベスト ハワイ ホテル レーツバリ島Hawaii hotelsHawaii Activitiesbhhrハワイホテルテキスト広告
【運営会社「パラダイムシフト」サービス】 ハワイ現地オプショナルツアーリラックマ) - ビジネスクラス航空券 - 格安航空券(1) - 格安航空券(2) - 海外ホテル - 韓国旅行 - タイムシェア - ホテル 予約
無料ホームページ - 携帯ホームページ - 無料ホームページ作成 - レンタルサーバー - ブログ - ヴィラ - ハワイ コンドミニアム - バリ島 ホテル - プーケット ホテル - 旅行 口コミ - 旅行情報 - 国際電話 - ホノルルマラソン - 掲示板監視 - 風評被害 - ホテル比較 - ノースウェスト航空 - ファイナルチェッカー