Toujours le même sujet: Son et video avec Lazarus
J'ai réécrit la procedure TCustomMPlayerControl.SetLoop(const AValue: integer) de mPlayerCtrl.pas :
[CODE=Lazarus]
Code:
1 2 3 4 5 6 7 8 9 10
| procedure TCustomMPlayerControl.SetLoop(const AValue: integer);
begin
if Running then
begin
if (AValue=0) then SendMPlayerCommand('loop 1');
FLoop:=AValue;
if AValue=1 then exit
else SendMPlayerCommand('loop '+IntToStr(FLoop))
end;
end; |
Tous les cas loop:= 0,1,2,... fonctionnent alors simplement après le play sans qu'il n'y ait rien à rajouter (le cas loop:=-1 donne quand même une exécution puisque l'affectation de la propriété ne peut se faire qu'avec un play précédent).
Comme j'ai viré le "if FLoop=AValue then exit" dont je ne vois vraiment pas l'intérêt, la valeur de loop figurant dans l'inspecteur d'objet peut être quelconque et n'intervient pas.
On peut même virer le "if Running then" mais je l'ai gardé (par précaution ?) bien que je n'en vois pas non plus l'utilité si on affecte loop juste après un play.
On peut évidemment aussi écrire une procedure publique "PlayLoop"
Code:
1 2 3 4 5
| procedure TCustomMPlayerControl.PlayLoop(ALoop:integer);
begin
Play;
loop:=ALoop;
end; |
et il suffit alors d'écrire l'instruction unique "PlayLoop(xx)" pour jouer le fichier avec xx passes.
Amitiés
Pierre