Sound の鳴動処理と管理

Sound オブジェクト

Sound オブジェクトは Xojo でサウンドを再生するときに使用します。プロジェクトフォルダにサウンドファイルをドラッグドロップするだけで簡単に利用できます。プロジェクト内でファイル名に即した名前が自動的につけられますので、必要に応じて変更します。

Sound の再生

サウンドを再生するメソッドには以下のものが用意されています。
Play …… 1回サウンドファイルが再生されます。
PlayLooping …… サウンドファイルが繰り返し再生されます。

サウンドの停止

サウンドを停止するメソッドには以下のものが用意されています。
Stop …… サウンドファイルの再生を停止します。

サウンドの管理

一度サウンドを再生したあと、もう一度同じサウンドを再生するには必ず Stop メソッドでサウンドの停止処理を行う必要があります。あるサウンドを1回再生したあと、音がなっていないからと言ってすぐに Play することはできません。もう一度再生するには明確に Stop でサウンドを停止させる必要があります。

そのため通常は Stop コマンドを実行したかどうかを管理する変数が必要になります。また、プロジェクトにドラッグドロップしてサウンドファイルを追加すると、アプリケーションの実行時にすべてメモリ上にロードされるため、メモリを不用意に圧迫することもなります。簡単に数音のサウンドを使用する場合はこれでも良いかもしれませんが、数多くのサウンドを再生したい場合にはサウンドの管理を行うクラスを作成することになるでしょう。

サウンドファイルはプロジェクトファイルに入れずに別にフォルダを用意してその中に入れておき、必要に応じてメモリ上に読み込み、不要になったら破棄する、という繰り返しで管理する方法も考えてみましょう。ただし、ファイルから毎回読み込んでいると(特にゲームなどの場合は)読み込みに時間がかかり過ぎて再生のタイミングを逸することもありますので、用途に応じてハンドリングしましょう。

DatabaseRecord の日付の値に Nil を設定した場合、そのメンバーに登録されない

以下のコードのように DatabaseRecord のメンバーとして日付の値を設定する場合、その日付の値が Nil だった場合、メンバーの値として Nil になるのではなく、メンバーそのものが登録されないため、注意をしてください。

Dim row As DatabaseRecord
Dim theBD, theWrongBD As Date

theBD = New Date( 2010, 4, 1 )
theWrongBD = Nil

// row にはメンバー「誕生日」が追加される
row.DateColumn( “誕生日” ) = theBD

// row にはメンバー「誕生日」が追加されない
row.DateColumn( “誕生日” ) = theWrongBD   // theBirthday

d = New date( 0, 0, 0 ) とした場合、年月日としては 1961/1/1 が設定されるので、これで判断する方法も選択肢にしないといけない場合があると思われます。

date 型を継承した myDate 型を作成し、計算型プロパティを1つ作成して、1961/1/1 の場合には Nil を返すなど、自分なりに使いやすいクラスを作るほうが幸せかもしれません。