Comment creer un MouseOver: dans cocoa pour une NSview/NSWindow

GenoseGenose Membre
16:47 modifié dans API AppKit #1
Je travaille  sur une methode avec laquelle je pourrait faire  changer l'AlphaValue, jusque la tout va bien.
c'est quand je cherche pour recréer mon cher et tant  apprécié OnMouseOver (ben oui, avant le cocoa, je fesait du PHP principalement),que là  ! je ne trouve plus la maniere de le faire.

quelqu'un connait il comment recreer ce comprtement, où quand ma souris passe par deessus d'un Objet(NSview/Nswindow) un "machin" appelle ma methode -(id)SplachAlpha:(id)value

es ce les observers , les windowatpoint ?


merci de m'eclairé  là -dessus.

Réponses

  • ChachaChacha Membre
    16:47 modifié #2
    dans 1124975636:

    Je travaille  sur une méthode avec laquelle je pourrais faire  changer l'AlphaValue, jusque là  tout va bien.
    c'est quand je cherche à  recréer mon cher et tant  apprécié OnMouseOver (ben oui, avant le cocoa, je faisait du PHP principalement),que là  ! je ne trouve plus la manière de le faire.

    quelqu'un connaà®t-il (sait-il?) comment recréer ce comportement, où quand ma souris passe par dessus un Objet(NSview/Nswindow) un "machin" appelle ma méthode -(id)SplachAlpha:(id)value

    est ce les observers , les windowatpoint ?


    merci de m'éclairer  là -dessus.


    Bernard, au secours !
    Regarde du côté de
    <br />setAcceptsMouseMovedEvents:<br />mouseMoved: (à  surcharger)<br />mouseEntered: (à  surcharger)<br />
    


    +
    Chacha
  • août 2005 modifié #3
    Deux possibilités:
    Soit ce qui est important est un changement d'état lorsque le curseur rentre ou sort de la vue. Dans ce cas, le plus simple est de rajouter ça dans l'implémentation de ta vue:
    [tt]- (void) viewDidMoveToWindow {
    [self addTrackingRect:[self bounds]
    owner:self
    userData:nil
    assumeInside:NO];
    }[/tt]
    Et tu n'auras plus qu'à  surcharger les méthodes[tt]-(void)mouseEntered:(NSEvent*)event[/tt] et [tt]-(void)mouseExited:(NSEvent*)event[/tt] pour mettre à  jour une valeur interne qui signale que la souris est sur la vue ou non et demander de redessiner son contenu.

    Et autre possibilité, c'est la surcharge de mouseMoved, comme indiqué par chacha (qui a décidé de me griller aujourd'hui :P).
  • GenoseGenose Membre
    16:47 modifié #4
    <3 <3 <br />Ca fonctionne en mixant vos methode.

    o:) merci

    j'ai fait une catégorie qui integre NSView et les methode mouse


    @interface MonWindController : WindowwController

    @end


    @interface MonWindController(NSView)
    -(void)mouseExited:(NSEvent*)event;
    -(void)mouseEntered:(NSEvent*)event;
    @end



    @implementation MonWindController(NSView)
    -(void)mouseExited:(NSEvent*)event
    {
    NSLog(@\n\n>>>>>>>> mouse event  NSview  bye \n\n>>>>>>>>>>>>>>>>);
    }

    {
    NSLog(@\n\n>>>>>>>> mouseentered event NSview coucou \n\n>>>>>>>>>>>>>>>>);
    }

    @end



    et mon appel de methode est le suivant:
    [[[self window] contentView ] addTrackingRect:  [[self window]  frame]
                  owner:self
                userData:nil
              assumeInside:NO];

    j'ai fait un traking sur la fenetre et peut etre pas correctement d'ailleur ?! mais cela fonctionne comme prévu.

    maintenant  ma fenêtre  fait    des disparitions à  la demande(comme le dock)

    et merci  ;)
Connectez-vous ou Inscrivez-vous pour répondre.