CoreAnimation : les calques
Tchouboudou
Membre
Bonjour les gens...
ça y est, Léopard est là , et j'ai pas pu attendre avant d'installer les developer tools. J'ai regardé les exemples de CoreAnimation et la doc.
Cependant, il y a deux choses (une pourtant simple) que je n'ai pas bien compris.
La première, c'est la disposition des calques : bounds, anchorPoint et position. J'ai eu beau tester, j'ai pas réussi à placer un calque au milieu d'un calque parent.
La seconde, c'est les transformations. Alors là , c'est le flou total... Surtout au niveau des matrices...
Voili, voilou, si quelqu'un a déjà certaine connaissances en la matière, je l'attend avec impatience
Merci d'avance,
Tchouboudou
ça y est, Léopard est là , et j'ai pas pu attendre avant d'installer les developer tools. J'ai regardé les exemples de CoreAnimation et la doc.
Cependant, il y a deux choses (une pourtant simple) que je n'ai pas bien compris.
La première, c'est la disposition des calques : bounds, anchorPoint et position. J'ai eu beau tester, j'ai pas réussi à placer un calque au milieu d'un calque parent.
La seconde, c'est les transformations. Alors là , c'est le flou total... Surtout au niveau des matrices...
Voili, voilou, si quelqu'un a déjà certaine connaissances en la matière, je l'attend avec impatience
Merci d'avance,
Tchouboudou
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Autrement dit :
Ce qui te permet de composer le x' du vecteur d'arrivée à partir à la fois du x et du y du vecteur de départ, et de lui appliquer aussi une translation avec Tx. Et pareil pour y'.
Typiquement, pour appliquer une transformation affine correspondant à une rotation d'un angle R + une translation de (Tx,Ty) correspond donc à la matrice : Ce qui correspond aux équations :
Voilà . Après je ne sais pas comment ça s'applique à CoreAnimation, comment sont foutues les matrices, etc, mais je ne serais pas étonné qu'il y ait des outils dans Cocoa pour créer des matrices directement en lui donnant un angle et/ou une translation, et construire des matrices de transformation facilement...
--- EDIT
NB : En fait c'est ce que fait d'habitude NSAffineTransform, en masquant la gestion de la matrice de transformation derrière des méthodes aux noms sympas, genre rotateByDegrees, etc. Le appendTransform équivaut exactement à faire une multiplication de la matrice de transformation actuelle par une autre, le prependTransform multiplie dans l'autre sens, etc. Ce qui fait que pour l'utilisateur tout est transparent et il n'a pas à connaà®tre la logique du calcul matriciel...
Après n'ayant jamais fouillé dans CoreAnimation, il y a peut-être des outils plus adaptés pour CoreAnim directement, mais sinon sache qu'il est possible de créer une NSAffineTransform, assez facilement donc puisque tu précises les transformations que tu veux explicitement grace aux méthodes de cette classe Cocoa... et de récupérer la NSAffineTransformStruct (méthode [tt]transformStruct[/tt]) qui contient les coefficients de la matrice de transformation. Ca t'évitera de les calculer à la main... s'il n'y a pas un moyen plus élégant fourni par CoreAnim.
ça fonctionne exactement comme les NSView. Si tu n'as pas compris la différence entre bounds et frame je t'invite à consulter la doc "View Programming Guide for Cocoa - le lien est dans le cadre qui est en haut de la doc de NSView.
Il ont ajouté anchorPoint et position mais tu peux très bien te débrouiller sans.