Problème FmodEx CallBack avec mon composant
Bonsoir ;)
Je suis nouveau et j'aurai besoin d'un coups de main à propos d'un petit problème avec fmodex et un composant que je construis.
Je vous explique le tout. Je développe une application et il y a beaucoup de code un peu partout. J'ai décidé de construire un composant pour fmod pour réduire mes pertes de temps.
J'ai un problème avec les callbacks de fmodex.
J'ai une classe défini comme ceci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
type
TOnEnd = procedure(Sender:TObject) of Object;
TFmodPlayer = class (TComponent)
private
FOnEnd:TOnEnd;
published
property OnEnd:TOnEnd read FOnEnd write FOnEnd;
end;
implementation
function OnChannelCallBack(channel: Pointer; callbacktype: FMOD_CHANNEL_CALLBACKTYPE; commanddata1: Word; commanddata2: Word):FMOD_RESULT;stdcall;
begin
case callbacktype of
FMOD_CHANNEL_CALLBACKTYPE_END:showmessage('');
end;
Result:=FMOD_OK;
end;
procedure TFmodPlayer.Play;
begin
FRESULT:=Fmod_System_CreateStream(FSYSTEM,PAnsiChar(FFile),FMOD_UNICODE,NIL,FSOUND);
ON_FMOD_ERROR(FRESULT);
FRESULT:=Fmod_System_PlaySound(FSYSTEM,FMOD_CHANNEL_FREE,FSOUND,false,FCHANNEL);
ON_FMOD_ERROR(FRESULT);
FRESULT:=FMOD_Channel_SetCallback(FCHANNEL,OnChannelCallBack);
ON_FMOD_ERROR(FRESULT);
end; |
Je vous explique le problème maintenant. Le callback fonctionne mais j'aurai aimé remplacé le showmessage('') par ce qu'il y a dans l'évènement OnEnd.
J'ai alors voulu placer la procédure OnChannelCallBack dans ma classe mais j'obtiens le message d'erreur suivant :
Types incompatibles : 'procédure normale et pointeur de méthode'
Je voudrai remplacer :
Code:
1 2
|
FMOD_CHANNEL_CALLBACKTYPE_END:showmessage(''); |
par
Code:
1 2
|
FMOD_CHANNEL_CALLBACKTYPE_END:if assigned(FOnEnd) then FOnEnd(Self); |
J'espère qu'on pourra m'aider :D
Merci
NB: désolé si je me suis gourré dans l'endroit ou je post