ChannelPlaying() verursacht Fehlermeldung [gelöst]

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Klip

Betreff: ChannelPlaying() verursacht Fehlermeldung [gelöst]

BeitragMo, Jan 02, 2006 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Folgender Code verursacht bei mir Fehlermeldungen:

Code: [AUSKLAPPEN]

   If ChannelPlaying(channel_menu_bgmusic) = False
      channel_menu_bgmusic = PlaySound(sfx_start)
   EndIf


Der Debugger meint, es wäre ein Null Object.

Ich lade sfx_start:TSound ganz normal mit LoadSound().
channel_menu_bgmusic:TChannel ist genau wie obrige Variable global deklariert.

Ich verstehe nicht, wo der Fehler liegt.
Ich will in meinem Hauptmenü den Sound nur einmal laufen haben, nicht sechsmal übereinander, deswegen die Überprüfung.

EDIT:
Ich habe das Abspielen auch schon so probiert:
PlaySound channel_menu_bgmusic,sfx_start

Das führt zu gleicher Fehlermeldung 0.o
  • Zuletzt bearbeitet von Klip am Di, Jan 03, 2006 15:30, insgesamt einmal bearbeitet
 

Dreamora

BeitragMo, Jan 02, 2006 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann kann wohl die File nicht geladen werden. Vielleicht verwendest du ein nicht unterstütztes Format wie mp3 oder dergleichen?
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Klip

BeitragMo, Jan 02, 2006 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verwende .ogg.

Der Sound wird abgespielt, so ist das nicht.

Setze ich vor die ChannelPlaying()-Funktion einen Kommentar (und vor das EndIf), dann wird der Sound gespielt, halt nur mehrmals übereinander, soll heißen, ich muss öfters StopChannel() einsetzen.

Alle anderen Befehle wie StopChannel, PauseChannel, PlayChannel, etc. funktionieren einwandfrei mit dieser Datei. Nur ChannelPlaying nicht Sad

rema

Betreff: Re: ChannelPlaying()

BeitragMo, Jan 02, 2006 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
- Heisst die Variabel auch wirklich channel_menu_bgmusic ?
- ist diese auch als TSound deklariert?
- vielleicht ist diese Local deklariert statt Global ?

Am besten am Anfang des ganzen Quellcodes immer Strict einsetzten.!!!

Und abfragen nicht mehr mit IF var=False sondern IF NOT var ... den je nachdem kann dies auch zu Problemen führen...

Code: [AUSKLAPPEN]

   If Not ChannelPlaying(channel_menu_bgmusic)
      channel_menu_bgmusic = PlaySound(sfx_start)
   EndIf

Klip

BeitragDi, Jan 03, 2006 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmal der ganze Code auf einen Blick:

Code: [AUSKLAPPEN]

   Global sfx_start:TSound            ' menu-music
   Global channel_menu_bgmusic:TChannel   ' channel for it



Function MainMenu()
      DebugLog("entered main menu")
FlushKeys()
   If Not ChannelPlaying(channel_menu_bgmusic)
      channel_menu_bgmusic = PlaySound(sfx_start)
   EndIf

...


Ergebnis ist immer noch dieselbe Fehlermeldung. Die Variablennamen kommen nicht doppelt vor und die Datei ist geladen (sfx_start).

EDIT:
Habe es jetzt so gelöst:
Nach dem Ladebildschirm spiele ich sfx_start im genannten Channel einmal ab und stoppe den Channel _sofort_ wieder. Dann funktioniert alles ohne Fehlermeldung.

Wahrscheinlich muss man einen Channel erst einmal benutzen, bevor alle Befehle funktionieren. Seltsam.

Ich danke für jegliche Hilfe : )

Markus2

BeitragDi, Jan 03, 2006 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

   Global sfx_start:TSound            ' menu-music
   Global channel_menu_bgmusic:TChannel   ' channel for it



Function MainMenu()
      DebugLog("entered main menu")
FlushKeys()
   If Not ChannelPlaying(channel_menu_bgmusic)
      channel_menu_bgmusic = PlaySound(sfx_start)
   EndIf

...


Hm,

wenn das der ganze Source ist würde ich ja vorher
prüfen ob channel_menu_bgmusic = NULL ist
weil ChannelPlaying(NULL) ohne Objekt ja kein Sinn macht .

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group