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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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 :
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FMOD_CHANNEL_CALLBACKTYPE_END:showmessage('');
J'espère qu'on pourra m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FMOD_CHANNEL_CALLBACKTYPE_END:if assigned(FOnEnd) then FOnEnd(Self);
Merci
NB: désolé si je me suis gourré dans l'endroit ou je post
Partager