Tillkalla en funktion i annan klass

Permalänk

Tillkalla en funktion i annan klass

Hej.

Har skrivit detta:

public static void playThemeSound() { SoundPlayer playTwo = new SoundPlayer(@blablalbla....); playTwo.Play(); playTwo.PlayLooping(); }

Den spelar lite musik... Sen har jag deklarerat en knapp i en annan klass vid namn :

protected override void Update(GameTime gametime)

Det är ett spel alltså.

Jag vill nu få över en slags playTwo.Stop(); metod i knapp klassen. Så att musiken stängs av när jag klickar.

Vet inte hur jag ska kunna deklarera playTwo.Stop(); i den klassen?
Kan väll inte ändra på namnet på Update klassen? om det är där skon klämmer alltså.

Tackar i förväg!

Visa signatur

Jaaa men just precis.

Permalänk

Är rätt svårt att urskilja hur du har strukturerat ditt projekt. Så jag gissar nu lite bara:

Först och främst måste du hålla reda på din variabel playTwo. Du kan göra detta på två sätt. Antingen skapar du en klass som ser lite ut som denna:

public class ThemeSound { private SoundPlayer sound; public ThemedSound (string file) { this.sound = new SoundPlayer(file); } // Fancy, fancy, saker. public static CreateInstanceOfThemedSound () { return new ThemeSound(@blablalbla....); } public void Play () { this.sound.Play(); this.sound.PlayLooping(); } public void Stop () { this.sound.Stop(); } }

Denna använder du sedan i din klass med Update; ThemeSound themedSound = new ThemedSound(@blablalbla....); eller ThemeSound themedSound = ThemedSound.CreateInstanceOfThemedSound();
Eller så delar du upp det som du själv vill.

Du hade också kunnat använda statiska klasser, med det blir inte lika snyggt i min mening.

public class ThemeSound { public static void Play (SoundPlayer sound) { sound.Play(); sound.PlayLooping(); } public static void Stop (SoundPlayer sound) { sound.Stop(); } }

Men då måste du skapa och hålla reda på SoundPlayer i din klass med Update i.

Ta och sök lite efter “C# Classes”. Verkar vara en bra start: http://msdn.microsoft.com/en-us/library/vstudio/x9afc042.aspx