Core Animation et effets dans IB
hdex
Membre
Salut a tous les cocoaculteurs et autres amateurs de chocolat (c'est la saison).
Je suis en train de fignoler une de mes applis et Core animation me simplifie bien la vie.
J'ai toutefois une petite question ...(vous saviez bien que ça allait venir ...)
J'ai besoin d'afficher une fenêtre et de la faire disparaitre apres quelques secondes.
C'est une facon de faire des notifications genre Growl mais sans Growl (je ne cherche pas à ré-inventer la roue, juste avoir un systemes d'alerte basique si Growl n'est pas installé).
J'ai donc ajouté 2 effets dans IB pour ma fenetre (ripple pour "order in" et dissolve pour "order out") et ajouter le code suivant :
affichage de la fenetre
ferme la fenetre
Je savais d'avance que "ripple" ne marcherait pas chez moi (Mac trop vieux - pas de Core Image) mais "dissolve" ne marche pas non plus.
Quelqu'un saurait si c'est aussi a cause de Core Image (je pensais qu'une partie des fonctions CI pouvait être simulé) ou faut il coder autrement.
En attendant, je simule "dissolve" en rendant la fenêtre transparente ...
Merci d'avance,
Je suis en train de fignoler une de mes applis et Core animation me simplifie bien la vie.
J'ai toutefois une petite question ...(vous saviez bien que ça allait venir ...)
J'ai besoin d'afficher une fenêtre et de la faire disparaitre apres quelques secondes.
C'est une facon de faire des notifications genre Growl mais sans Growl (je ne cherche pas à ré-inventer la roue, juste avoir un systemes d'alerte basique si Growl n'est pas installé).
J'ai donc ajouté 2 effets dans IB pour ma fenetre (ripple pour "order in" et dissolve pour "order out") et ajouter le code suivant :
affichage de la fenetre
[[calvaWindow animator] orderFront:self];
ferme la fenetre
[[calvaWindow animator] orderOut:self];
Je savais d'avance que "ripple" ne marcherait pas chez moi (Mac trop vieux - pas de Core Image) mais "dissolve" ne marche pas non plus.
Quelqu'un saurait si c'est aussi a cause de Core Image (je pensais qu'une partie des fonctions CI pouvait être simulé) ou faut il coder autrement.
En attendant, je simule "dissolve" en rendant la fenêtre transparente ...
Merci d'avance,
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
http://web.mac.com/philippe.robinet/Core_Animation/filtres_IB.html
De plus orderFront et orderOut agissent immediatement donc Core Animation n'a rien a faire.
Donc pour faire simple, je ne fais pas d'effet à l'affichage :
et je ferme la fenetre avec :
La question subsidiaire ... pourquoi ça fonctionne la première fois mais pas les suivantes ?
Ma fenêtre est une NSPanel (case Utility et HUD cocher) et "release when deactivated" n'est pas coché.
Je ne comprends pas. Toutes les vues sont au sein d'une fenêtre.
La question est : est-ce que ces effets peuvent agir sur une sous-vue de la content view, ou est-ce limité à la content view ?
Personnellement, à ce jour, je n'ai pas réussi à les faire fonctionner sur une sous-vue, ce qui limite grandement l'intérêt de la chose.
L'exemple dans la page que je donne en référence ci-dessus marche plusieurs fois.
Cela doit dépendre de l'endroit où tu as réglé l'effet dans IB. Si tu l'as mis dans Order In, ou oRder Out, c'est clair que cela ne fera qu'à l'apparition/disparition de la fenêtre.