メトロノームアプリケーションを作成し始めたばかりですが、タイマーで音色を再生するときに問題が発生しました。タイマーティックを設定します。たとえば、1秒ごとにサウンドを再生するメソッドを呼び出します。そして、音が一度だけ演奏され、何も演奏されないという問題が現れました。WPF Timer Tickで音を再生する - 音が反復しない
私の質問 - すべてのタイマーティックで音を鳴らすにはどうすればいいですか? MSDNから
<Window x:Class="Metronome.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBox Name="textBox1" />
<Button Name="button1" Content="Start" Click="button1_Click" />
<MediaElement Name="mediaElement1" Source="MetroBar1.wav" LoadedBehavior="Manual" />
</StackPanel>
</Grid>
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace Metronome
{
public partial class MainWindow : Window
{
const int secInMin = 60;
int beatRate;
double beatPerMsec;
DispatcherTimer timer1;
public MainWindow()
{
InitializeComponent();
timer1 = new DispatcherTimer();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
//beatRate = Convert.ToInt16(textBox1.Text);
//beatPerMsec = Math.Pow((beatRate/secInMin), -1) * 1000; //Amount of beats (timer ticks) per msec
// timer1.Tick += new EventHandler(metronome_Run);
timer1.Tick += metronome_Run;
//timer1.Interval = new TimeSpan(0, 0, 0, 0, Convert.ToInt16(beatPerMsec));
timer1.Interval = new TimeSpan(0, 0, 1);
timer1.Start();
}
private void metronome_Run(object sender, EventArgs e)
{
mediaElement1.Play();
}
}
}
なぜb/aの代わりにMath.Pow(a/b、-1)を書いていますか? :) – Adassko