Exemplo n.º 1
0
        /// <summary>
        /// SEを再生します。再生中のファイルがあればその再生の直後に鳴らします。
        /// </summary>
        public SoundObject PlaySE(string filename, double volume = 1.0,
                                  bool usePlayInterval           = true, bool ignoreError = false)
        {
            try
            {
                var data = new PlaySoundInfo
                {
                    FilePath        = filename,
                    Volume          = volume,
                    UsePlayInterval = usePlayInterval,
                    IgnoreError     = ignoreError,
                };

                return(PlaySE(data));
            }
            catch (FileNotFoundException)
            {
                // サウンドシステムの初期化に失敗すると、
                // 恒常的にこの例外が出るようになります。
            }
            catch (Exception ex)
            {
                if (!ignoreError)
                {
                    Log.ErrorException(ex,
                                       "{0}サウンドの再生に失敗しました。",
                                       Path.GetFileName(filename));
                }
            }

            return(null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// SEを再生します。再生中のファイルがあればその再生の直後に鳴らします。
        /// </summary>
        public SoundObject PlaySE(PlaySoundInfo data)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }

            lock (SyncRoot)
            {
                if (this.backend == null)
                {
                    return(null);
                }

                var fullpath = GetSoundFilePath(data.FilePath);
                if (data.UsePlayInterval && !CheckPlayInterval(fullpath))
                {
                    return(null);
                }

                var bsound = this.backend.Play(fullpath, data.Volume);
                if (bsound == null)
                {
                    return(null);
                }

                return(new SoundObject(bsound));
            }
        }