Autor Beitrag
Scarecraft
Hält's aus hier
Beiträge: 16



BeitragVerfasst: Do 17.04.08 20:48 
Huhu ich habe ein Problem , es geht um DirectX.AudioVideoPlayback;

Ich versuche mal schnell meinen code aufzulisten (so kurz wie möglich ) :


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
private void button2_Click(object sender, EventArgs e)
        {
           
            OpenFileDialog open = new OpenFileDialog();
            open.InitialDirectory = @"C:\\";
            open.Filter = "Audio files (*.wav; *.mpa; *.mp2; *.mp3; *.au; *.aif; *.aiff; *.snd; *.wma)|*.wav; *.mpa; *.mp2; *.mp3; *.au; *.aif; *.aiff; *.snd; *.wma|" +
            "MIDI Files (*.mid, *.midi, *.rmi)|*.mid; *.midi; *.rmi|" +
            "All Files (*.*)|*.*"
            if (open.ShowDialog() == DialogResult.OK)
            {



                
                listBox1.Items.Clear();
                listBox1.Items.Add(System.IO.Path.GetFileName(open.FileName));
                
               listBox1.SetSelected(0true);
               Properties.Settings.Default.filename = open.FileName;
               listBox1_DoubleClick(null,null);
               
                

            }
        }
void PlayerStarten(object sender, EventArgs e)
        {

            
                 Audio audioPlayback = new Audio(listBox1.Text);
                audioPlayback.Play(); 

               // audioPlayback.Volume = Vol.Value;
                audioPlayback.Ending += new EventHandler(SongzuEnde);
              

                
               
               


                notifyIcon1.BalloonTipTitle = "Aktueller Song:";
                notifyIcon1.BalloonTipText = listBox1.Text;
                notifyIcon1.ShowBalloonTip(10);

           
            
        }

So und nun zu meinem Problem kind:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
private void PlayerStoppen(object sender, EventArgs e)
        {

            
            audioPlayback.Stop();

            
            
        }


So also : ich starte den player in "PlayerStarten" und ich möchte ihn beenden bei "Playerstoppen" ich habe schon sehr viel probiert , aber es klappt einfach nicht .Da der player nur zwischen den { und } in Playerstarten bekannt ist ,arg.
ich denke ich muss den player schon früher einbinden , was aber sehr schwer ist da die datei die er spielen soll eine Variable ist (open.Filname) . ich brauch eure hilfe !!!!

Moderiert von user profile iconChristian S.: Color- durch C#-Tags eresetzt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 17.04.08 22:33 
Erst einmal: Roter Code ist zwar hübsch anzuschauen, aber benutze in Zukunft doch lieber die [cs]-Tags ;) .

Dein Problem scheint nichts mit DirectX zu tun haben, sondern eher mit den Grundlagen von C#. Du musst "audioPlayback" einfach als Feld der Klasse und nicht als lokale Variable deklarieren, dann ist das Objekt auch in der anderen Methode sichtbar.
Sollte das dir überhaupt nichts sagen, dann ist es dringende Zeit für ein Anfänger-Tutorial.
Scarecraft Threadstarter
Hält's aus hier
Beiträge: 16



BeitragVerfasst: Do 17.04.08 23:06 
Ja sagen tut mir das schon was , so is das ja nicht .
naja erstma danke für deine antwort khabarakh(schwerer name) :P
ich bin neu in C# (dürfte ja schon aufgefallen sein) und deswegen versuche ich learning by doing mit dem Galileo open book.
Naja ich komme nun leider net ganz so an der stelle weiter . Alles andere ergibt sich ja draus . ich hab auchnochmal nachgeschaut aber wirklich weiter kommen (bin ma ehrlich ) tuh ich nun auch nicht wirklich . Also ich weis das ich den Player net einfach so in der methode deklarieren kann da sie ja nur dann in den Klammern verfügbar ist. Soweit bin ich auch schon .naja zu meiner frage : ich muss doch Audioplayback im Programm.cs in static class Program bekannt machen ? oder lieg ich da völlig falsch ?
MFG Scarecraft
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 18.04.08 13:11 
Du willst ja aus zwei Methoden deiner Form auf ein Objekt zugreifen, also ist es das einfachste, dieses Objekt in der gesamten Form-Klasse bekannt zu machen; Program.cs brauchst du dafür nicht. Und dazu musst du eben in der Klasse ein neues Feld deklarieren und dafür die bisherige lokale Variable weglassen. Ich werde keinen Code posten, da du so etwas Grundlegendes einfach selbst können musst, aber wenn es immer noch nicht klar ist, kannst du auch einmal in der Doku nach "Felder, C#" suchen ;) .

user profile iconScarecraft hat folgendes geschrieben:
danke für deine antwort khabarakh(schwerer name) :P
Dient zur Abschreckung *g* .
Scarecraft Threadstarter
Hält's aus hier
Beiträge: 16



BeitragVerfasst: Fr 18.04.08 14:50 
Ah danke hab es nun dank deiner und des openbooks hilfe geschafft , war viel eonfacher als ich es mir vorgestellt habe ..

Naja wenn ich schonmal hier bin kann ich gleich noch eine frage loswerden ?
hab ein Event , das startet wenn ich was in eine Listbox ziehe .
Nunja das klappt alles toll , aber ich möchte nicht den ganze link "C:\\bla\\blaaaa\bla.mp3"
sondern nur :"bla.mp3" stehen haben ,,...
hatte das selbe prob bei openfile hab das so gelöst :

ausblenden C#-Quelltext
1:
listBox1.Items.Add(System.IO.Path.GetFileName(open.FileName));					


Naja hier der Eventcode:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
private void Form1_Load(object sender, EventArgs e)
        {
           

            listBox1.AllowDrop = true;
            listBox1.DragOver += new DragEventHandler(listboxOnDragOver);
            listBox1.DragDrop += new DragEventHandler(listboxOnDragDrop);

        }
        void listboxOnDragOver(object obj, DragEventArgs dea)
        {
            if (dea.Data.GetDataPresent(DataFormats.FileDrop))
                dea.Effect = DragDropEffects.Move;
        }
        void listboxOnDragDrop(object obj, DragEventArgs dea)
        {
            if (dea.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string[] dateien = (string[])dea.Data.GetData(DataFormats.FileDrop);
                listBox1.Items.AddRange(dateien);

                
                

                
            }
        }

Danke schonmal
schönen tag noch scarecraft !
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 18.04.08 18:02 
Hallo!

Bitte erstelle für eine neue Frage auch einen neuen Thread. Dann kannst Du dem auch einen passenden Titel geben und ihn in der richtigen Sparte platzieren. Danke! :-)

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.