Problème d'actualisation de l'écran

olofolof Membre
15:48 modifié dans API AppKit #1
Salut à  tous, c'est encore moi...

Pour me faire la main avec Cocoa, je suis en train de faire un memory (un tableau d'images qu'il faut retourner pour faire des paires).

Ca fonctionne, à  un détail près. Je clic sur une premier image, elle s'affiche. Je clic sur une deuxième image, et j'aimerais qu'elle s'affiche et que 2 secondes après le programme test si l'image est identique à  la précédente. J'ai donc fait quelque chose du genre :

<br />&nbsp; &nbsp; [myCell setImage:[NSImage imageNamed:[myCell nomImage]]];<br />&nbsp; &nbsp; [matrix setNeedsDisplay:YES];<br />&nbsp; &nbsp; sleep(2);<br />


Je change l'image de ma cellule, je demande une actualisation de ma matrice de cellules et après j'attends 2 secondes.

Pourquoi est-ce que mon image ne s'affiche pas avant la pause de 2 secondes ?

J'espère que je ne dois pas passer par un NSTimer pour ça ?!?!


Merci !

Réponses

  • BruBru Membre
    15:48 modifié #2
    dans 1129391405:

    J'espère que je ne dois pas passer par un NSTimer pour ça ?!?!


    Si.

    setNeedsDisplay: est une demande de mise à  jour. Donc, cela signifie que la mise à  jour effective de l'image interviendra un peu plus tard. Le "un peu plus tard" signifie "à  la fin de la boucle d'événement".

    Or, le délai que tu provoques par sleep() provoque l'arrêt complet du thread : or ce thread est celui de la boucle d'événement.

    Plusieurs solutions :

    - utiliser une des méthodes display... de NSView qui affiche immédiatement la mise à  jour.

    - utiliser un NSTimer calé sur 2 secondes et qui déclenche la méthode de comparaison.

    Evidemment, le seconde solution est la meilleure.

    .
  • olofolof Membre
    15:48 modifié #3
    Merci,

    je m'attendais à  quelque chose d'un poil compliqué, mais ça n'était pas le cas. Ca fontionne, merci Bru !
Connectez-vous ou Inscrivez-vous pour répondre.