Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu. - C#

0

Witam,
Mam problem z pewnym fantem w c#. W załączniku jest pokazany błąd. Dużo szukałem ale nie mogłem znaleźć rozwiązania. Jak rozwiązać ten problem?
A tutaj jest cały kod:

using System;
using System.Windows.Forms;
using System.Media;
using System.Diagnostics;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;

namespace Dzwiek
{
    public partial class Form1 : Form 
    {
        SoundEffect ms;
        ContentManager Content ;
        
        public Form1()
        {
            InitializeComponent();
        }
        Stopwatch sw = new Stopwatch();

        private void button1_Click(object sender, EventArgs e) 
        {
            if (timer1.Enabled == false)
            {
               timer1.Enabled = true;
               
           }
           else
           {
               timer1.Enabled = false;
           };
               sw.Start();
            
        }

        void metoda()
        {
            //SystemSounds.Beep.Play();
            ms = Content.Load<SoundEffect>("AA.wav");
            ms.Play();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            
          
            if (sw.ElapsedMilliseconds >= 200)
            {
                metoda();
                sw.Restart();
            }
        }
    }
}
0

Gdzie tworzysz instancję ContentManager?

0

nie masz nigdzie w kodzie content = new ContentManager pewnie powinno być w konstruktorze

0

W takim razie jakie parametry powinienem przekazać do klasy ContentMenager kiedy ją tworze?

0

Ok, udało już mi się to zrobić. Dziękuję za pomoc. Ale pojawił mi się inny błąd. Mam komunikat że nie można znaleźć pliku A jest on dodany do Solutions Items podaję jego nazwę przy funkcji Load (aa.wav) i nie może go znaleźć. A jak podam ścieżkę do pliku na dysku, to mam komunikat że nie można znaleźć tego pliku. Jak rozwiązać ten problem?

0

Nie wrzucaj pliku do katalogu, bo to tak nie działa, Musisz dodać plik do Resources.

0

@misiakufal nie musi wystarczy że zaznaczy plik w Solution Explorerze i wybierze Copy Local na Always albo Copy If Newer.
Ustawienie pliku jako Embeded Resource zwiększa rozmiar exe-ka/dll-ki oraz może wydłużyć czas jej ładowania do pamięci jeżeli jest to aplikacja która będzie instalowana kreatorem to kopiowanie pliku niezależnie od exe-ka jest moim zdaniem rozsądniejsze.

0

Dodałem, ale nadal to samo.

0

Ok, ale nadal mi nie znajduje tego pliku. Co mogę z tym zrobić?

0

W kodzie do pliku odwołujesz się przez Resources.nazwa_pliku

0

Nadal mi nie chce zadziałać. Może coś źle napisałem?

ms = Content.Load<SoundEffect>(@"Resources.AA.wav");
0

Resources to statyczna klasa, nie traktuj tego jako ścieżki, tylko jako statyczna klasa. natomiast AA (bez rozszerzenia) to tablica bajtów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1