| Autor |
Beitrag |
Saarpoint
      
Beiträge: 199
Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
|
Verfasst: Mo 30.05.05 21:54
Hallo Leute!
Bin hier langsam am verzweifeln.
Mein Problem:
Ich will ein Würfel (TImage) auf dem Spielfeld erscheinen
lassen und dann erst einen Sound wiedergeben.
Ich habs mit SND_ASYNC und SND_SYNC probiert - nix!
Immer wird der Sound abgespielt und dann erst das Image angezeigt.
Da nach dem Sound eine MessageBox erscheien soll, ist mir SND_ASYNC
lieber, so dass der Sound komplett abgespielt wird. Dies bremst jedoch
das Programm aus, so dass das Image erst danach angezeigt wird.
Dabei steht "Wuerfel.Show;" VOR "sndPlaySound(...)"
Trotzdem wird zuerst die WAV abgespielt. Warum?
Hatte jemand schon das gleiche Problem und evtl. eine Lösung für mich?
Gruß, Andy
_________________ Standart := false; Standard := true;
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Di 31.05.05 19:25
Hi,
so ganz ohne Quellcode ist das natürlich nicht so einfach zu beantworten. Vor allem kann ich dir keine Lösung sagen, da ich ja nicht sehe, was du da geschrieben bzw. gemacht hast.
Wie wird der Würfel erzeugt?
Wie wird er genau dargestellt?
Warum Würfel.Show?
Ist es ein Riesenprojekt, oder könntest du es mal gezippt hier reinposten? Dann können wir es uns sicher wesenlich leichter vorstellen, was du da machst.
|
|
Saarpoint 
      
Beiträge: 199
Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
|
Verfasst: Di 31.05.05 22:12
Hi!
Es ist ein Spiel und ich sitze seit 6 Monaten dran.
Für mich ein riesen Projekt
Gezippten Source-Code veröffentlichen? Source = Heiligtum!
Aber ein Auszug kann ich davon bieten:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| case ITemp of 1 : Begin with DicePic1 do begin Top := WHY[ITemp]; Left := WHX[ITemp]; Enabled := true; Picture.Bitmap.Handle:=LoadBitmap(HInstance, PChar(DiceImage[ITemp])); end; end; end; STemp := GamePath + '\SND\STREET' + IntToStr(Random(6)+1)+'.WAV';
sndPlaySound(PChar(STemp),SND_SYNC); |
Mein generelles Problem liegt darin, dass warum auch immer, Delphi Sounds einer Grafikausgabe vorzieht!
Ob ich jetzt den Würfel anzeige und Sound ausgebe (wie oben) oder den Sound-Befehl vor das Case
setze - der Sound wird immer als erstes abgespielt, dann erscheint die Grafik.
Warum???
Gruß, Andy
_________________ Standart := false; Standard := true;
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Mi 01.06.05 07:21
Was passiert, wenn du vor die Soundausgabe
1. Application.ProcessMessages
und
2. eine MessageBox setzt?
Erscheint dann die Messagebox auch vor dem Darstellen des Bitmaps?
Zudem würde ich vorschlagen, der Einfachheit halber das Bild durch
Image1.Picture.LoadFromFile( 'bild.bmp' );
zu laden. Warum von hinten durch die Brust?
Ist es vielleicht einfach nur ein zeitlicher Faktor, dass der Bildaufbau so lange dauert, dass Delphi schon mal den nächsten Befehl ausführt, bevor das Bild da steht?
|
|
Saarpoint 
      
Beiträge: 199
Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
|
Verfasst: Mi 01.06.05 19:03
Hi!
Das erste muss ich noch ausprobieren.
LoadFromFile kann ich nicht nutzen, da die
Würfel in einer Resource liegen.
An der Zeit kann es eigentlich nicht liegen,
da der Würfel 50x50 Pixel groß ist und ein
AMD64 3200+ ihn versucht dazustellen
Wie gesagt, das mit Application.ProcessMessages
probier ich noch aus...
Bis dann!
Andy
_________________ Standart := false; Standard := true;
|
|
Saarpoint 
      
Beiträge: 199
Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
|
Verfasst: Mi 01.06.05 19:07
Nochmal ich.
LoadFromFile würde ausserdem jedesmal bei
der Anzeige des Würfels auf die Festplatte zugreifen,
was noch mehr Zeit verschwendet.
Ausserdem werden die Würfel oft und schnell hintereinander
dargestellt. Da freut sich der Lesekopf der Festplatte nicht so...
Daher fand ich es sinnvoller, die Grafiken in 'ne Resource zu packen.
Andy
_________________ Standart := false; Standard := true;
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Mi 01.06.05 19:20
Hast du den Rest mal getestet, mit der Messagebox und anstatt über eine Ressource zu gehen, über das LoadFromFile ? Funktioniert das damit ersatzweise?
|
|
Saarpoint 
      
Beiträge: 199
Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
|
Verfasst: Mi 01.06.05 20:31
Sorry, hab mich vor die Klotze gesetzt.
Ich hab Application.ProcessMessages vor die
Soundausgabe gesetzt und... es funzt!
Die Würfel werden ausgegeben und gleichzeitig spielt der Sound.
Erst nachdem der Sound zu Ende ist, erscheint die MessageBox.
Also genau so, wie ich es wollte! THX!
Andy
PS: Was ist mit deiner Signatur??? Da gibts nur 'ne Werbeseite...???
_________________ Standart := false; Standard := true;
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Mi 01.06.05 21:08
Gern geschehen.
Und wenn du mal wieder ein Problem hast, melde dich ruhig.
lg. Feivel
|
|
Saarpoint 
      
Beiträge: 199
Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
|
Verfasst: Mi 01.06.05 21:44
Ok, werde ich machen
Falls mein Würfelspiel mal was werden sollte, kann ich es dir gerne zuschicken.
Die DOS-Version gibts übrigens auf meiner Homepage
Bis dann
Andy
_________________ Standart := false; Standard := true;
|
|