J'ai une interface cacao qui utilise le tracé de base. Lorsque j'appuie sur un bouton de l'interface, un tracé est tracé. Je voulais créer une séquence de graphiques en appelant la méthode de tracé plusieurs fois avec des appels à sleep() entre les deux. Mais il semble que même si l'appel à recharger des données est fait que rien ne se passe jusqu'à ce que la fonction se termine (ne montrant que le dernier graphique). Maintenant, je sais que CPAnimation existe, mais avant de commencer à l'utiliser, je me demandais ce qui se passe quand la fonction se termine, ce qui fait rafraîchir le graphique. Devrais-je céder au fil qui s'occupe du rafraîchissement au lieu d'utiliser le sommeil?Comment est-ce que je peux rafraîchir l'intrigue centrale sans retourner d'une méthode?
Répondre
Ok, j'ai compris comment. J'ai appelé la méthode reloadData d'une méthode dans un thread séparé (qui retourne toujours). Cela revient à appeler reloadData depuis un IBAction et aussi avec un NSTimer. Enfin, au lieu d'utiliser le sommeil, j'utiliserai NSConditionLock pour coordonner le traitement et le rafraîchissement
Probablement, Core Plot (ou votre code) définit la vue comme ayant besoin d'être affichée. Cela ne se produit pas immédiatement. Cela arrive quand vous revenez à la boucle d'événement.
Chaque fois que vous utilisez sleep
dans une application Mac OS X, vous tuez un chiot. Utilisez NSTimer à la place. Demandez à votre méthode de rappel de faire le travail nécessaire pour un graphique, et définissez les variables d'instance nécessaires pour que la méthode sache quel graphique elle doit dessiner, de sorte que la méthode dessine chaque graphique à tour de rôle jusqu'à ce qu'il soit épuisé.
Ou, mieux encore, de présenter une liste de graphiques que l'utilisateur peut choisir, au lieu de faire l'utilisateur de regarder tous les graphiques sous forme de diaporama. (À moins qu'un diaporama explicitement étiqueté soit ce que vous implémentez.)
Peter a raison: la méthode de rechargement de données ne dessine rien. L'intrigue est marquée comme ayant besoin d'être affichée et actualisée la prochaine fois que les couches sont dessinées à l'écran. Si vous utilisez sleep
, il n'a jamais la chance de dessiner.
Notez également que Core Plot est un projet assez jeune; CPAnimation
et les classes associées sont des stubs. Ils ne font vraiment rien pour l'instant. :-)
Voulez-vous dire que cpanimation ne fonctionne pas encore? –
Oui, c'est correct. –
oh, merci pour la réponse, en attendant j'ai de l'animation avec un peu de code personnalisé et c'est assez rapide pour ce dont j'ai besoin en ce moment. –
Core Plot, comme la plupart des frameworks de dessin Cocoa, est paresseux: il dessine à la fin de l'itération de la boucle d'exécution. C'est pour s'assurer que les choses ne sont pas dessinées trop souvent.
Plutôt que de dessiner immédiatement, les couches sont marquées comme nécessitant un dessin.
Comme il a été souligné par d'autres, une meilleure approche pour dormir est d'utiliser NSTimer pour éviter de bloquer la boucle d'exécution ou d'utiliser des méthodes NSObject comme performSelector withObject: afterDelay:
- 1. C Boucle principale sans unité centrale 100%
- 2. Comment puis-je retourner NULL d'une méthode générique en C#?
- 3. Comment est-ce que je peux énumérer DataTable?
- 4. Comment puis-je implémenter un OutputStream que je peux rembobiner?
- 5. Comment est-ce que je peux installer un perl séparé sans déranger le perl existant?
- 6. Je ne peux pas obtenir Domain.count() méthode statique pour travailler
- 7. Comment est-ce que je peux rendre à un cubemap?
- 8. Comment est-ce que je peux simplifier ce jquery répétitif?
- 9. Comment est-ce que je peux patcher des assemblys .NET?
- 10. retourner un nom de méthode
- 11. malheurs ajax. Soumettre sans rafraîchir. J'ai besoin d'aide
- 12. Comment rafraîchir UITableViewCell?
- 13. Comment puis-je retourner un IQueryable en C# 3.0 sans connaître son type?
- 14. Y at-il quelque chose que je peux remplacer AbsolutePath.Contains?
- 15. Générer un jeton que je peux prouver J'ai généré
- 16. Code asp.net en ligne, liste d'événements que je peux remplacer
- 17. Rhino Mocks: Comment puis-je retourner des numéros d'une séquence
- 18. Est-ce que je peux (ou devrais) simuler des méthodes sur l'objet testé autre que la méthode testée?
- 19. C# Gtk NodeView, comment rafraîchir
- 20. Que dois-je retourner de LINQ à SQL pour DataGridViews
- 21. E4X: Expression ne pas retourner ce que je m'attendais
- 22. Mettre à jour les cookies sans rafraîchir la page (Asp.net)
- 23. Comment est-ce que je peux compter les nombres uniques dans un tableau sans réarranger les éléments de tableau?
- 24. Comment est-ce que je peux sérialiser la variable avec le type de Int64 en JavaScript sans perte de précision?
- 25. Comportement de la Viewbox que je ne peux pas comprendre
- 26. Comment est-ce que je peux attraper un symbole que l'utilisateur est frappé sur le clavier?
- 27. C# - Je sais que je peux le faire dans LINQ, mais je ne peux pas le faire fonctionner
- 28. datagridview rafraîchir
- 29. wxpython: Comment est-ce que je peux redessiner quelque chose quand une fenêtre est restaurée?
- 30. Rafraîchir JPanel
Ajouté le tag-terrain de base (comme vous avez demandé dans une autre question). – M4N
merci thx mate! –
Encore une fois, peu de contributeurs au framework Core Plot sont actifs sur Stack Overflow. Vous pouvez obtenir de meilleures réponses à vos questions sur la liste de diffusion du projet: http://groups.google.com/group/coreplot-discuss?hl=fr –