Hallo omata,
ich denke, das habe ich soweit mal verstanden.
nun wollte ich mal doFadingOut bei einem channel anwenden.
meine OnUpdateTimeEvent sieht so aus:
Delphi-Quellcode:
procedure TForm1.OnUpdateTimeEvent(Basschannel: TBasschannel);
var TimeUp, TimeLength: String;
begin
channela.FadeTime := 5;
channela.FadeAuto := true;
channela.FadeStop := true;
label5.Caption := booltostr(channela.isComplete, true); // Hier sehe ich immer, ob true oder false
label6.Caption := booltostr(channela.isFadingOK, true); // und hier auch
label7.Caption := booltostr(channela.isFadeOutPosition, true); // und hier
if (channela.isFadingOK) and (channela.isFadeOutPosition) then
channela.doFadingOut;
if channela.Status in [sndplaying, sndpaused] then
begin
TimeUp := ChannelA.SongTimeInfo[SongTimeUp].asSecString;
TimeLength := ChannelA.SongTimeInfo[SongTimeLength].asSecString;
if TimeUp = '--:--' then TimeUp := '00:00';
if TimeLength = '--:--' then TimeLength := '00:00';
label3.caption := TimeUp +' von '+ TimeLength;
JvXPProgressBar1.Position := ChannelA.SongTimeInfo[SongTimeUp].asmillisecinteger;
end;
end;
also isComplete ist immer true wenn ein track abgespielt wird. is fadingOk auch. aber isFadeOutPosition wird immer erst true, wenn der Track zu ende ist, also findet nie ein FadingOut statt. warum ist das so? FadeTime ist ja gesetzt.
EDIT: ICh habe grad noch etwas gemerkt:
Delphi-Quellcode:
channela.FadeTime := 5;
channela.FadeStop := true;
Channela.doFadingOut;
wenn ich diesen code aufrufe, wird die lautstärke immer leiser bis man nichts mehr hört, doch der track läuft fröhlich weiter, obwohl die volume auf null ist. beim onUpdateTimeEvent wird ja die Position der JvXPProgressBar1 immer aktualisiert (das ist die position des tracks). daran sehe ich auch, dass der track auch nach dem doFadingOut noch weiterläuft. wenn ich dann die volume von ChannelA hochdrehe, höre ich den track wieder. aber FadeStop ist ja auf true, da sollte doch nach dem doFadingOut sofort ChannelA.Stop aufgerufen werden, oder?
gruss
urbanbruhin