Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

De_Struktor

unregistriert

1

03.06.2013, 21:35

Eventsound überfüllt Arbeitsspeicher??

Hallo,

Ich habe ein Problem bezüglich des Event Sound, der sobald eine Bombe gelegt wird und der Timer nach 3 Sekunden abgelaufen ist, soll der Sound abgespielt werden, sobald ich auf Debuggen drücke, kann ich nix bewegen, nur eine Bombe und die wird auch nach 3 Jahren erst gelegt, woran kann das liegen?

Hier der Sourcecode:

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
public bool PlaceBomb(ref Rectangle b_rect)
        {
           //bomb_rect = b_rect;
          if (Keyboard.GetState().IsKeyDown(Keys.Space))
            {
                if (!active[4])
                {
                    active[4] = true;
                    b_rect = new Rectangle(static_rect.X + 30, static_rect.Y, 30, 30);
                }
            }
          return true;
        }
        public void EventSound(Song event_Song)
        {
            timer.Start();
            if (PlaceBomb(ref bomb_rect))
            {
                timer.Start();
                if (timer.Elapsed.TotalSeconds >= 3)
                {
                    explosion = event_Song;
                    MediaPlayer.Play(event_Song);
                }
            }
        }


in der Maingameklasse:

C#-Quelltext

1
2
3
Block_map.myPlayer.Update(ice_Blocks, fire_Blocks, move_rect);
            Block_map.myPlayer.PlaceBomb(ref bomb_rect);
            Block_map.myPlayer.EventSound(mySong);


P.s ich habe auch alles initialisiert nur habe keine Lust für eine Zeile noch zu formatieren^^, sry an dieser Stelle.

Mfg

DeStruktor

edit: ich habe es auch mit einer Excetion überprüft und es wird alles ausgeführt so wie ich es will nur anscheinend überlastet die Cpu oder der Ram, eher Ram denke ich.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

03.06.2013, 21:47

Zeile 19 und 20 sehen für mich eher... merkwürdig aus. Du weißt schon, wie Timer und Events funktionieren?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

De_Struktor

unregistriert

3

03.06.2013, 21:50

Hoppla O.o .... dazu sag ich mal nix

stimmt zwar, aber es laggggggt trotzdem wie sau...
BC, das beim Timer war auch funktionsfähig, das hat mir nämlich die Exception gezeigt, sobald ich bombe platziere, kommt ein Laufzeitfehler.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

03.06.2013, 21:52

Vermutlich deshalb, weil Du den Timer komplett falsch verwendest. Zeig doch mal den Code mit der Initialisierung des Timers und den, der "EventSound" aufruft.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

De_Struktor

unregistriert

5

03.06.2013, 21:55

der Aufruf passiert ja, in der Frostbomber.cs
und die Initialisierung hier:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public Bomb frostBomb;
        public Kollision player_collision;
        // "has a relation"

        private Texture2D static_text;
        public Rectangle static_rect;

        private Texture2D move_text;
        public Rectangle move_rect;

        Texture2D bomb_text;
        Rectangle bomb_rect;
        
        private Rectangle[] destructed_Block = new Rectangle[216];
        private Rectangle[] static_Block = new Rectangle[225];

        Stopwatch timer = new Stopwatch();
        Song explosion;


(siehe Oben im ersten Beitrag: Block_map.myPlayer.EventSound(mySong);

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

03.06.2013, 21:56

Stopwatch ist KEIN Timer, sondern eine Stoppuhr. :nono:
Wo ist denn außerdem der Aufruf von "EventSound"? Ich vermute mal ganz stark Du verwendest Busy Wait. Das würde das Verhalten erklären und wäre natürlich falsch.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

De_Struktor

unregistriert

7

03.06.2013, 21:58

Ja ok, aber ich meinte dann stopwatch, wie schon gesagt, es hat ALLES vorher geklappt, nur wenn ich die Methode :

C#-Quelltext

1
MediaPlayer.Play(event_Song);

aufrufe, laggt es wie wild, denn bei der Laufzeitexception die ich selber aufgerufen habe, war alles flüssig.

Nochmal: EventSound wird in der mainclass aufgerufen!!

8

03.06.2013, 22:00

Anderes Thema: Warum übergibst du eine Membervariable an eine Memberfunktion der selben Klasse als Referenz?
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

03.06.2013, 22:01

Nochmal: EventSound wird in der mainclass aufgerufen!!
Und jetzt sollen wir raten wie? Ich dachte Du hättest mittlerweile verstanden, dass wir Dir ohne Code nicht helfen können.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

De_Struktor

unregistriert

10

03.06.2013, 22:02

C#-Quelltext

1
2
3
Block_map.myPlayer.Update(ice_Blocks, fire_Blocks, move_rect);
            Block_map.myPlayer.PlaceBomb(ref bomb_rect);
            Block_map.myPlayer.EventSound(mySong);


hatte ich doch schon gezeigt:

und zu steef, was genau meinst du?

Werbeanzeige