locked
É possível obter a duração em tempo real do SoundEffectInstance que esta sendo executado?? RRS feed

  • Pergunta

  • Olá, 

      Estou com certa dificuldade em uma questão que seria teoricamente simples, obter o tempo real de uma execução de um SoundEffectInstance, segue a forma como estou tentando trabalhar: 

    Imports Microsoft.Xna.Framework.Audio
    Imports Microsoft.Xna.Framework

    Partial Public Class MainPage


        Inherits PhoneApplicationPage

    Private stream01 As IO.Stream=TitleContainer.OpenStream("resources/batida01.wav")
    Dim instancia01 As SoundEffectInstance
    Private Som01 As SoundEffect = SoundEffect.FromStream(stream01)

     Public Sub New()

            InitializeComponent()

    instancia01 = Som01.CreateInstance


       If instancia01.State = SoundState.Playing Then
                instancia01.Stop()
            
            Else

                instancia01.Play()
               
            End If

    'Apenas consigo obter a duração total do som, porém não em tempo real

    duracao.text = som01.duration.seconds.tostring
    Alguém pode me dar um help nisso? Obrigado!



    • Editado Fabio Abdala segunda-feira, 18 de agosto de 2014 23:37
    segunda-feira, 18 de agosto de 2014 23:10

Respostas

  • Bom dia,

    Veja se te ajuda:

    http://msdn.microsoft.com/en-us/library/system.single.aspx

    Att,


    Ricardo Cortes Microsoft Contingent Staff

    Esse contedo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support


    quarta-feira, 20 de agosto de 2014 14:28
  • Boa tarde Ricardo,

     Obrigado, ajudou sim, porém realmente não foi possível obter o tempo real através da classe, acabei usando um timer pra poder controlar esse valor:

    Private tempoinstancia01 As DispatcherTimer = New DispatcherTimer AddHandler tempoinstancia01.Tick, AddressOf tempoinstancia01_Tick tempoinstancia01.Interval = New TimeSpan(0, 0, 1)

     Private Sub tempoinstancia01_Tick(sender As Object, e As EventArgs) If instancia01.State = SoundState.Stopped Then instseg01.Text = "00" End If If instancia01.State = SoundState.Playing Then instseg01.Text = instseg01.Text + tempoinstancia01.Interval.Seconds End If

    End Sub

     Obrigado pelo Help!


    • Editado Fabio Abdala quarta-feira, 20 de agosto de 2014 18:36
    • Marcado como Resposta Fabio Abdala quarta-feira, 20 de agosto de 2014 18:38
    quarta-feira, 20 de agosto de 2014 18:35

Todas as Respostas

  • Bom dia Fabio,

    Mas esse sue código gerou algum erro?

    Att,


    Ricardo Cortes Microsoft Contingent Staff

    Esse contedo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    terça-feira, 19 de agosto de 2014 14:02
  • Olá Ricardo,

     Desculpe eu não fui claro na minha pergunta, o que eu preciso é um método que me volte o tempo que já foi percorrido sobre a execução do som, o código que informei esta funcionando normal, porém não consigo achar uma maneira de obter esse tempo da instancia, apenas consigo o tempo total que o som tem, através do método:

    duracao.text = som01.duration.seconds.tostring

     Não acho forma alguma de obter o tempo já percorrido, se você souber algum método, eu agradeço.

    Obrigado!


    • Editado Fabio Abdala quarta-feira, 20 de agosto de 2014 02:15
    quarta-feira, 20 de agosto de 2014 02:14
  • Bom dia,

    Veja se te ajuda:

    http://msdn.microsoft.com/en-us/library/system.single.aspx

    Att,


    Ricardo Cortes Microsoft Contingent Staff

    Esse contedo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support


    quarta-feira, 20 de agosto de 2014 14:28
  • Boa tarde Ricardo,

     Obrigado, ajudou sim, porém realmente não foi possível obter o tempo real através da classe, acabei usando um timer pra poder controlar esse valor:

    Private tempoinstancia01 As DispatcherTimer = New DispatcherTimer AddHandler tempoinstancia01.Tick, AddressOf tempoinstancia01_Tick tempoinstancia01.Interval = New TimeSpan(0, 0, 1)

     Private Sub tempoinstancia01_Tick(sender As Object, e As EventArgs) If instancia01.State = SoundState.Stopped Then instseg01.Text = "00" End If If instancia01.State = SoundState.Playing Then instseg01.Text = instseg01.Text + tempoinstancia01.Interval.Seconds End If

    End Sub

     Obrigado pelo Help!


    • Editado Fabio Abdala quarta-feira, 20 de agosto de 2014 18:36
    • Marcado como Resposta Fabio Abdala quarta-feira, 20 de agosto de 2014 18:38
    quarta-feira, 20 de agosto de 2014 18:35