J'ai réécrit la procedure TCustomMPlayerControl.SetLoop(const AValue: integer) de mPlayerCtrl.pas :
[CODE=Lazarus]
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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"
et il suffit alors d'écrire l'instruction unique "PlayLoop(xx)" pour jouer le fichier avec xx passes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TCustomMPlayerControl.PlayLoop(ALoop:integer); begin Play; loop:=ALoop; end;
Amitiés
Pierre
Partager