J'ai un code ici qui limite la souris à une région à l'écran, elle fonctionne relativement bien, avec un seul gros problème. La souris ne se déplace pas proprement / en douceur lorsqu'elle s'exécute sur les bords de la région, elle saute à la place d'une manière très agitée, je pense que cela pourrait être dû à cgwarpmousecursorposition causant un retard sur chaque "chaîne".
3 Réponses :
Vous recherchez probablement CGSetLocalEventsSuppressionInterval (), une méthode obsolète de 10,6 ... cela fonctionne toujours en 10.7. P>
Oui, j'ai trouvé que l'autre jour, mais cela fonctionne parfaitement, alors je vais vous donner la réponse. Merci pour votre temps / effort.
Comme vous l'avez découvert, Cependant, il est obsolète à partir de 10.6. L'Etat des Documents Apple: P> Cette fonction n'est pas recommandée pour une utilisation générale en raison de cas spéciaux non documentés et d'effets secondaires indésirables. Le remplacement recommandé de cette fonction est Malheureusement, le remplacement à la place, utilisez La documentation ne fait aucune mention de ce comportement, mais il semble annuler l'intervalle de suppression après la chaîne. P> < / p> cgsetlocaleventsSuppressionInterval code> corrige votre problème.
cgeventsourcesetlocaleventsSuppressionInterval code>, ce qui permet d'ajuster l'intervalle de suppression d'une source d'événement spécifique, affectant uniquement des événements publiés à l'aide de cette source d'événement. P>
blockQuote>
cgeventsourcesetlocaleventsSuppressionInterval code> ne fonctionne pas avec
cgwarpmousecursorposition code> Mouvements. p>
cgassociatemouseandmousecursor (vrai) code> immédiatement après la chaîne: p>
Cgassociatemouseandmousecursorposition (vrai) ne supprime pas le retard pour moi malheureusement
Je pourrais obtenir Ceci fonctionne bien avec cgeventsourcesetlocalteventsSuppressionInterval code> Pour fonctionner avec
cgwarpmousecursorposition code> La manière suivante:
cgwarpmousecursorposition code> (et n'est pas obsolète), alors que
cgassociatemouseandmousecursorposition (vrai) code> n'était d'aucune aide pour moi. p> p>
Je ne pense pas que ce soit lent; Timing It, le plus long que je l'ai eu à prendre était de 0,006 secondes. Cela pourrait être mieux à quelques façons, cependant: vous devez définir la région délimitée dans une NS- ou CGRRECT, et je pense que vous pouvez couper la boucle.
Le rectangle n'est qu'un outil de démonstration temporaire. Je vais essayer de tester cela contre un bitmap noir et blanc, où les zones de pixels noirs sont respectueuses de la souris et les zones blanches que la souris ne peut pas entrer. La forme de la zone noire sera jolie bizarre et je pense donc que la boucle peut être nécessaire. Sauf si vous avez une meilleure solution?
Cela pourrait en fait faciliter la recherche de savoir si la souris est sortie de la zone acceptable. L'astuce consisterait à trouver le point acceptable le plus proche pour le déplacer, mais oui, je pense que vous aurez besoin d'une boucle pour cela. Quoi qu'il en soit, je suis surpris de simplement modifier l'emplacement et le delta de l'événement (ou même la modification et le retour d'une copie) ne fonctionne pas.
Oui, modifier apparemment l'emplacement de l'événement ne peut pas déplacer le curseur de la souris, cela aurait été trop simple. Je pense que je pense de déterminer le point acceptable le plus proche de déplacer le curseur, une approche utilisant un peu de trigonométrie pour les lignes de projet fonctionnerait, mais cela nécessiterait une sorte d'algorithme intense pour tester tous les points de chaque ligne jusqu'à ce qu'il puisse trouver le bord de La région ... Cela semble trop intensif en ressources car il pourrait y avoir quelque chose comme 200 lignes qui auraient que chacun doit avoir jusqu'à 200 pixels vérifiés pour Black / Blanc ....