差分

ナビゲーションに移動 検索に移動

Xamarin.Mac/効果音を再生する

847 バイト追加, 2015年9月30日 (水) 09:11
編集の要約なし
[[Xamarin.Mac]]で効果音を再生したい。
==実装==
==NSSoundを使う==
NSSoundを使うと簡単に効果音を再生できる。
<source lang="csharp">
var path = Path.Combine(NSBundle.MainBundle.BundlePath, "Contents", "Resources");
var file = Path.Combine(path,"se-033ase001.mp3");
var sound = new NSSound(file, byRef:false);
<source lang="csharp">
var path = Path.Combine(NSBundle.MainBundle.BundlePath, "Contents", "Resources");
var file = Path.Combine(path,"se-033ase001.mp3");
var url = new NSUrl(file, isDir: false);
===欠点===
AVFoundationということで同APIのサポートが(実用レベルで)追加された[[Xamarin.Mac]]の2015年中頃のバージョン以降に限定される。古い[[Xamarin.Mac]]を購入しバージョンアップしていない人や[[MonoMac]]の人は残念賞なようだ。なお、[[Xamarin.iOS]]もこの方法を利用できる。
 
==共通==
再生開始までのタイムラグを無くすため、音声再生に関するクラスインスタンスの生成はウインドウ初期化時(AwakeFromNibメソッド)などで行い、[[フィールド変数]]として保持しておくことが望ましい。
<source lang="csharp">
AVAudioPlayer _player;
 
public override void AwakeFromNib()
{
base.AwakeFromNib();
 
var path = Path.Combine(NSBundle.MainBundle.BundlePath, "Contents", "Resources");
var file = Path.Combine(path,"se-033a.mp3");
var url = new NSUrl(file, isDir: false);
 
_player = AVAudioPlayer.FromUrl(url);
_player.PrepareToPlay();
}
 
 
public override void MouseDown(NSEvent theEvent)
{
Task.Run(() => _player.Play());
}
</source>
==関連項目==
匿名利用者

案内メニュー