Autor Beitrag
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Do 28.04.11 12:06 
In deinem Kommentar redest du vom Initialisieren, Laden, Freigeben udn Beenden, aber mit was gisbte das aus? Ich vermute jetzt einfach mal die Funktion "Musicplaying". Ich werd mir mal deinen Quelltext kopieren und in Ruhe anschauen, da ich schließich keine der Funktionen kenne... und Delphi-Hilfe hab ich auch nicht :/
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 28.04.11 12:17 
user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
und Delphi-Hilfe hab ich auch nicht :/
Erstens gibt es die auch online und zweitens:
Wenn dir nur das WinHlp32-Update fehlt, weil du Vista/7 und Delphi 7 oder älter hast, dann installier das Update einfach...
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Do 28.04.11 13:24 
Dankeschön :D

edit: Wo bekomme ich die Bass-Unit? Habe schon gegooglet, aber bin nicht fündig geworden :/
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 28.04.11 14:18 
www.un4seen.com/
(der Download-Button ist ganz oben auf der Seite - for "non-commercial use")
rushifell
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Do 28.04.11 20:34 
beastofchaos hat folgendes geschrieben:
In deinem Kommentar redest du vom Initialisieren, Laden, Freigeben udn Beenden, aber mit was gisbte das aus? Ich vermute jetzt einfach mal die Funktion "Musicplaying".

Ganz einfach: Beim Programmstart (z.B. ins FormCreate):
ausblenden Delphi-Quelltext
1:
IF not(StartBass) then ShowMessage('Bass konnte nicht initialisiert werden!');					

Beim Programmende (z.B. ins FormClose);
ausblenden Delphi-Quelltext
1:
EndBass;					

Danach musst Du die Streams einzeln laden und später (beim Programm-Ende) wieder freigeben.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
//Einmaliges Laden aller Streams beim Programmstart, bis zu 129 im Beispiel.
LoadMusicData(Dateiname+'aufprall.ogg',0,False); //Durch False nur einmal gespielt.
LoadMusicData(Dateiname+'hintergrundmusik.ogg',1,True); //Durch True in Endlosschleife gespielt
...
For i:=0 to 1 do
    Music_SetVolume(i,Volume); //relative Lautstärke festlegen (müsste zwischen 0 und 100 liegen (in Prozent))
...
IF Aufprall then //Abspielen des Soundeffekts im Spiel
   PlayMusic(0);
...
For i:=0 to 1 do //Freigeben der Streams beim Programmende
    FreeMusicData(i);

Kannst ja über Konstanten zur noch besseren Übersicht den Streams noch Namen geben.
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Fr 29.04.11 00:04 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
www.un4seen.com/
(der Download-Button ist ganz oben auf der Seite - for "non-commercial use")


Hab auf der Seite schonmal geguckt. Ganz oben steht doch "Platform: Win32, OSX" und darunter 2 Download-Buttons (mit WIndows- und Apple-Zeichn jeweils dran). Ich vermute, du meinst das.

Weiter unten im Text schon nur einmal unter "Licensing":
"BASS is free for non-commercial use. If you are a non-commercial entity (eg. an individual) and you are not making any money from your product (through sales, advertising, etc), then you can use BASS in it for free."

Aber wo Download sonst wäre, weiß ich nicht.
Die Platform hab ich jetz mal runtergeladen, aber ich komm mit den vielen Ordner nicht klar. Ist nicht einfach eine Bass-Unit dabei, die ich in meinen Programmordner lege, und dann hat sich das?


@rushifell:
Einmal hast du die Hitnergrundmusik. Wird die automatisch abgespielt ab dem Moment, wo du sie mit "LoadMusicData" lädst? Ich vermute das liegt dann an dem "True". Wenn ich auf "False" in den Parametern setze, kann ich das einzelnd mit "PlayMusic" abspielen, oder?
rushifell
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Fr 29.04.11 00:35 
Hab gerade die aktuelle Bass.dll ausprobiert. Funktioniert leider nicht mit meiner Unit. Das hatte ich schon befürchtet, weil ich das schon oft bei Updates der Bass.dll erlebt habe. Ein Grund auch für mich, nicht ständig die neueste Version zu benutzen. Musst die Unit leider an die Änderungen anpassen.

Nein, Du musst einfach mit PlayMusic die Hintergrundmusik starten. "True" ist nur, wenn Du das Lied bzw. den Soundeffekt in einer Endlosschleife abspielen möchtest. Bei "False" wird der Soundeffekt bzw. die Musik nur einmal abgespielt. Probier's am besten einfach aus.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.04.11 06:03 
user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Hab auf der Seite schonmal geguckt. Ganz oben steht doch "Platform: Win32, OSX" und darunter 2 Download-Buttons (mit WIndows- und Apple-Zeichn jeweils dran). Ich vermute, du meinst das.
Genau, auf dieser Seite ist dort oben der Download:
[url]www.un4seen.com/bass.html[/url]
Da warst du wohl schon richtig.

Und in diesem Thread habe ich gestern ein winziges Beispiel gepostet, das ich kurz mit der aktuellen Bass-Version (dynamisch eingebunden) erstellt hatte:
www.delphi-forum.de/....php?p=639463#639463
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Fr 29.04.11 11:42 
Aber mein Problem ist ja, dass eure Units in uses "Bass" stehen haben... und ohne Bass.pas bez Bass.dcu kann ich da ncihts machen. Diese "Platform", die ich da runter geladen habe, sieht so aus:
s. Anhang
Einloggen, um Attachments anzusehen!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 29.04.11 14:21 
Hallo beastofchaos,

du kennst schon den Unterschied zwischen Windows und MacOS-X, oder? ROFL

Du sollst ja auch die Win32-Datei (bass24.zip) runterladen und dort ist dann im Ordner "Delphi" die Datei "bass.pas" bzw. die gesamten Delphi-Projekte (bass.dpg) dabei.

Für diesen Beitrag haben gedankt: beastofchaos
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Fr 29.04.11 22:24 
Klar weiß ich den Unterschied zwischen Windows und Mac...
Bloß iwie kam ich da nciht drauf^^ War mir ziemlich sicher, auf Windows geklickt zu haben^^
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: So 01.05.11 17:44 
Also habe jetzt mal ein Hintergrund-Lied eingebaut und Sounds bei Kollision eingebaut. Doch wenn zwischen 2 Kollision vll eine halbe Sekunde liegt, wird der zweite Sound nciht abgespielt. Würde es helfen, wenn ich ein dynamisches Array von Audiostreams baue? Im Moment habe ich 2 - Hintergrundmusik und Kollisionssound...
Um aber dann nicht mehr laufende Streams zu löschen, weiß ich keine Funktion, die das prüft. Gibt es da bei Bass.dll eine spezielle Funktion (ich benutze dynamic_bass), die das prüfen kann?


Außerdem hab ich noch eine Frage. Wo bestehen noch Vorteile an globalen Variablen? Ich habe eine Funktion in meiner Unit "Vectors", die prüft, ob ein Ball einen Kreis trifft. Sie enthält auch folgendes internes statisches Array.
ausblenden Delphi-Quelltext
1:
2:
var
  X: Array[1..5of TLine; //5 Linien;

Da es bei der aktuellen Version bei einem starken Schuss möglich ist über ein Kreishindernis zu springen, hab ich die Funktion mal kopiert, in meine Main-Unit gepackt als Funktion des Haupt-Formulars, um ein bisschen rumzuprobieren. Da hab ich einfach mal dieses Array in die globalen Variablendeklaration gelegt und prompt funktioniert alles total glatt... (?) Weiß jem Rat, wieso das so ist?

Grüße, Thomas alias beast.

PS: Die neuste Version kommt vll heute abend, bei der dann auch dieKollision läuft und ein Lied für 3/4 Minuten im Hintergrund läuft. Ob ich Lautstärkereglung schon hinbekomme, ist eine Frage der Zeit :P
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: So 01.05.11 23:23 
Ich hab jetzt die neue Version hochgeladen (siehe Linke im ersten Post). Neu:

+ Sound (mit + und - Lautstärke einstellen
+ besser aufblinkende Hindernisse
+ bessere Awards
+ Fehlermeldungen verbessert

- Ordner kann noch nicht in "Programme" sein wegen Schreibrechten beim Editor. Der muss halt dann ausgelassen werden. Problem werd ich auch noch iwie in Griff kriegen ;)

Grüße, beast alias Thomas
Girofox
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 02.05.11 18:28 
Ich bin auch 15 und hab seit genauso langer Zeit angefangen, mit delphi zu arbeiten, wie du. Tolle Arbeit!
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Mi 04.05.11 21:26 
Ok jetzt hab ich wieder ein Problem, das ich nicht verstehe. Die Form mit dem SPiel ist meine Hauotform und der Editor ist "untergeordnet" und kennt die bass.dll nicht sozusagen, aber wenn ich von Minigolf zum Editor wechsel, läuft das Lied weiter und, wenn ich dann den Editor schließe, läuft das Lied einfach weiter. Im OnClose-Ereignis vom Editor steht "MainForm.Close" und in diesem wiederum steht "Unload_BASSDLL;". Also müsste das Lied doch beendet sein.

edit: Wenn ich in dem OnClose-Ereignis vom Editor Application.Terminate einfüge funktioniet es, aber das ist keine gute Lösung, weshalb ich das lieber iwie mit Unload_Bassdll lösen will. Wer kann mir helfen?

edit2: Ok, da steht MainForm.Close, obwohl ich in uses die UMain nicht stehen habe, da das eig einen Fehler von wegen "Circular Reference" ergibt und Delphi das nicht mag... Also hab ich in UMain uses UEditor stehen und lass dann einfach beim Editor alles vom Hauptformular als Variable speichern (vorm Wechsel zum Editor -> FCaller := MainForm).
Also hab ich einfach FCaller.Close hingeschrieben und es funktioniert ;)
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: So 22.05.11 17:49 
Also bei mir ist inzwischen einiges besser geworden. Statt den grauen öden Buttons hab ich nun ein MainMenu, das einem auch Einstellungen ermöglicht und Musik hochladen lässt. Bloß gibts da zwei Fragen von mir:

1. Es ist ja eig. so ein Minigame, was man nebenbei spielt - wäre da eine extra Hintergrundmusik nicht zu nervig bzw. überflüssig?


2. Ich arbeite ja mit einer OnIdle-Prozedur, die immer so schnell wie möglich arbeitet (-> kein fester Intervall, aber meist um den Intervall 36 herum bei mir, hab ich mal berechnet).
Der hat aber leider ein paar Hänger. Einige haben sich shcon mein minigolf ausprobiert - nun schießt mal und dann verschiebt mal, während die Kugel rollt, das Fenster. Was passiert? Während ihr die Maustaste auf dem oberen Leiste gedrückt haltet, stoppt der IdleHandler. Wenn ihr dann wieder loslasst kommt er iwo weiter weg an oder möglicherweise im Aus(wo ihr eine Fehlermeldung bekommen dürftet).
Ich könnte das Problem sicher mit einem Timer(auf Intervall 1, dann arbeitet er auch immer so schnell wie möglich) aus der Welt schaffen, aber ich würde gerne bei meinem IdleHandler bleiben :(
Wisst ihr Rat?


Gruß, Thomas

PS: Ich werde jetzt noch ein bisschen basteln und in 1 bis 2 Wochen die neue Version hochladen mit MainMenu, Soundsteuerung und ähnlichem. Ob ich die Hintergrundmusik dann wegmache, überleg ich dann noch... ;)
Avoliq
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 7
C#(VS 2008)
BeitragVerfasst: So 12.06.11 13:27 
Also ich habe dein Minigolf jetzt auch mal getestet und muss erstmal sagen macht echt laune ;-)
allerdings habe ich auch noch nen Fehler entdeckt und zwar habe ich mir im Editor ne Map mit ziemlich vielen kleinen Barrieren gebastelt nun stellt das prog i-einen fehler im lvl fest und meldet, dass dieses neu geladen werden muss. soweit so gut jetzt kommt dann allerdings eine fehlermeldung namens 3. fehlermeldung die das nächste level laden will weil dieses probleme macht allerdings ist kein weiteres lvl vorhanden und ich hänge in einem ewigen kreis aus diesen beiden fehlermeldungen die sich nun ständig abwechseln

mfg Avoliq

(sry für zeichensetzung,rechtschreibung,groß-klein schreibung bin ziemlich verkatert^^)