2009-08-28 6 views
0

Situation: Débutant avec interface pour une application musicale. J'ai 2 grandes images, un le maître 'up' ou la vue normale, l'autre la vue complète 'down'. (Les boutons sont tous enfoncés, allumés, etc, les voyants sont allumés, etc.). Peut-être avoir quelques petites images aussi bien à copier. Dans Carbon, et le vieux Mac OS, je chargerais 2 GWorlds avec chaque image, puis j'utiliserais Copybits pour copier n'importe quel sous-programme pour le bouton qui a été cliqué selon les besoins, et blit comme approprié à la fenêtre.Boutons d'interface graphique dans Cocoa

Alors que je crois que je pouvais encore utiliser cette approche à Cocoa, il est dépréciée, le temps d'aller si moderne:

Q: Que remplacer cette ancienne approche CopyBits avec Cocoa? (plutôt simple était l'avant):) Retraité, ce qui serait parmi les meilleures (et les meilleures pour les débutants) des approches pour faire similaire dans Cocoa ... pour faire une image et divers sous-programmes en boutons de travail graphiques? Traiter les clics? Exemples d'objectif ici: similaire à GarageBand, etc, ou à toute belle interface instrument VST où ils dupliquent un classique analogique (Moog, etc.) Fondamentalement, prendre une image d'un synthé et faire fonctionner les 'boutons' et les boutons dans le cacao.

Je pensais que je aurais besoin de NSView et certains Quartz, puis en lisant ici, est venu à penser NSOpenGLView peut-être. Puis-je lire à propos de NSButtonCell peut-être? Faire l'image (s) un contrôle personnalisé? Doit être relativement rapide, car beaucoup d'E/S MIDI et de traitement peuvent se produire en même temps.

Répondre

2

Si vous voulez "go moderne", allez tout à fait moderne ....

Plus précisément, Étalez votre interface avec un tas de NSButtons, NSSliders, etc.etc.etc ... alors voir dans quelle mesure Vous pouvez utiliser des images personnalisées pour les boutons. Pour les curseurs, vous voudrez probablement créer une sous-classe, puis remplacer les méthodes de dessin.

Les différentes classes NSControl font une énorme quantité de lourdes charges liées au suivi des événements et à l'expérience utilisateur pour vous. Ne réinventez pas cette roue sauf si vous devez vraiment, vraiment.

Ils sont également conçus pour être sous-classés et personnalisés à volonté.

En ce qui concerne les performances, il sera probablement très bien. Le problème avec les applications audio n'est généralement pas celui de la performance du processeur brut, mais de la latence. Vous devez quand même pousser votre traitement audio hors de la boucle d'événement principale. Commencez simplement, voyez jusqu'où vous pouvez aller, puis personnalisez l'interface utilisateur en fonction des besoins. Tant que vous concevez intelligemment votre application, vous ne devriez pas jeter beaucoup de code.