Autor Beitrag
Saarpoint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Di 31.05.05 22:12 
Hi!

Es ist ein Spiel und ich sitze seit 6 Monaten dran.
Für mich ein riesen Projekt :P

Gezippten Source-Code veröffentlichen? Source = Heiligtum! :schmoll:

Aber ein Auszug kann ich davon bieten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
           case ITemp of   // Würfel auf Screen positionieren
              1 : Begin
                   with DicePic1 do begin
                      Top := WHY[ITemp];
                      Left := WHX[ITemp];
                      Enabled := true;
                      Picture.Bitmap.Handle:=LoadBitmap(HInstance,                    
                      PChar(DiceImage[ITemp]));
                   end;
               end;
                  
                 // ... und so weiter für die anderen Würfel

            end; // Case

            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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: 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 :wink:

Wie gesagt, das mit Application.ProcessMessages
probier ich noch aus...

Bis dann!

Andy

_________________
Standart := false; Standard := true;
Saarpoint Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: 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... :roll:

Daher fand ich es sinnvoller, die Grafiken in 'ne Resource zu packen.

Andy

_________________
Standart := false; Standard := true;
feivel3333
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Mi 01.06.05 20:31 
Sorry, hab mich vor die Klotze gesetzt.

Ich hab Application.ProcessMessages vor die
Soundausgabe gesetzt und... es funzt! :D

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! :D

Andy

PS: Was ist mit deiner Signatur??? Da gibts nur 'ne Werbeseite...???

_________________
Standart := false; Standard := true;
feivel3333
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: Mi 01.06.05 21:08 
Gern geschehen.

Und wenn du mal wieder ein Problem hast, melde dich ruhig.

lg. Feivel
Saarpoint Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Mi 01.06.05 21:44 
Ok, werde ich machen :beer:
Falls mein Würfelspiel mal was werden sollte, kann ich es dir gerne zuschicken.
Die DOS-Version gibts übrigens auf meiner Homepage :wink:

Bis dann :wave:

Andy

_________________
Standart := false; Standard := true;