AVFoundation introuvable..
Mick
Membre
Bonjour à tous,
je suis sous snow leopard xcode 3.2.6 : impossible de trouver AVFoundation. Il y a une astuce ??
je suis sous snow leopard xcode 3.2.6 : impossible de trouver AVFoundation. Il y a une astuce ??
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Y a-t-il un équivalent pour mac ? dois-je me plonger dans les audioUnit et tout le toutim ?
J'aimerais maintenant qu'on puisse entendre un "tick" au moment de "l'allumage" de la vue. e soucis est qu'il ne faut pas que le son mette 3 h avant de se faire entendre. J'ai essayé avec un [[NSSound soundWithName:]play], mais cela foire un peu (pas synchro).
Sur un sample code, j'avais vu qu'on pouvait utiliser un avaudio et que cela résolvait le problème. Mais cela n'existe pas sur mac.
D'où ma question : quelle stratégie adopter ?
Y a-t-il une technique autre que les NSTimer pour faire ce "clignotant" ?
Si quelqu'un a une piste je suis preneur (autre thread ?..) et comment mettre en oe“uvre cela ?
Voici le code actuel :
Pour faire clignoter tu dois agir depuis le thread principal, passage obliger pour tout ce qui est UI. Pour le son, tu peux le faire en thread secondaire comme tout le reste d'ailleurs.
Ce qu'il faudrait que tu fasse c'est restructurer tout ce qui est opération de chargement de donnée pour le faire dans un thread secondaire et uniquement retourner au mainthread pour l'affichage.
Un bon moyen de faire ça c'est avec du GCD à tous les niveaux.
En effet, les Timers fonctionnent avec la RunLoop, et à chaque itération de la RunLoop cette dernière regarde, entre autres, si les timers qui ont été schedulés sur cette Run Loop doivent être déclenchés. Mais les Timers sont par défaut schedulés sur le mode "Default", alors que quand tu interagis avec l'écran, genre pendant un scroll d'une TableView par exemple, la RunLoop fonctionne dans un mode "Interaction" et ne regarde pas les Timers qui sont uniquement ne mode "Default".
Il faut donc créer un timer avec "timerWithTimeInterval..." et non "scheduleTimerWithTimeInterval..." pour avoir un timer non encore schedulé sur la RunLoop, et ensuite l'ajouter manuellement à la RunLoop, mais en utilisant le mode "Common Run Loop Mode" et non le mode "Default". Et dans ce cas ton Timer sera vérifié/déclenché même quand la RunLoop est en mode "interaction utilisateur".
[/color][/color]
Il y a parfois des saccades quand je "mets le son". J'ai l'impression que c'est le [tink play] qui bricole quand il se passe des choses (scroll etc..). Ca marche quand même (en même temps, si l'utilisateur de l'app met le métronome, il est pas sensé scroller des views, mais bon...), mais il y a la sensation que "ça rame" quand on bricole l'interface.
N'y a-t-il pas un moyen de bufferiser (ok, c'est moche) le son avant lecture à la manière d'un AVAudioPlayer sur iOS ?