[screensaver] use several PNG to create an animation

Hello,


 


I'm trying to use a gif to create a screensaver, just for fun.


I created 35png extract from that gif.


I, somehow, succed but it's getting slower and slower for each new image printed.


I'm using xcode with cocoa.


 


catsaver.m : http://pastebin.com/raw.php?i=PjBqNvRV


catsaver.h : http://pastebin.com/raw.php?i=bTBgSi8h


 


I first thought the screen resolution was responsible but it appears that even a low resolution make it laggy at a point.


 


I hope my english is ok, otherwise just tell me.


Réponses

  • MalaMala Membre, Modérateur

    Not surprising! Each time you call "animateOneFrame", you add a new NSImageView again and again...


     


    Add your NSImageView in initWithFrame and in animateOneFrame you just need to update its image.


  • AliGatorAliGator Membre, Modérateur
    Je croyais que c'était un forum français ici... (pour les questions en anglais y'a déjà  les forums Apple et plein d'autres...)
  • Alf1996Alf1996 Membre
    novembre 2013 modifié #4
    Et bien c'est simple ! La qualité du forum attire de nouveaux adeptes. Il va falloir localiser le forum : au boulot Muqqadar !! ;)
  • AliGatorAliGator Membre, Modérateur
    Bon bah du coup je m'en vais retourner sur les forums Apple moi ;) tchao !
  • PhibonacciPhibonacci Membre
    novembre 2013 modifié #6

    Thanks for you answer, I knew the issue was something like that.


    Could you show me a way to update the view instead of overloading it ?


     


    Edit :


    I guess I found it even so I have a warning for this IBOutlet declared like that.



    - (void)animateOneFrame
    {

    IBOutlet NSImageView *old;

    old = imageView;
    NSRect rect = NSMakeRect(0, 0, 2560, 1540);
    imageView = [[NSImageView alloc] initWithFrame:rect];
    [imageView setImageScaling:NSScaleToFit];
    [imageView setImage:img[i]];
    i += 1;
    if (i > 34)
    i = 0;
    [self replaceSubview:old with:imageView];
    return ;
    }
  • tabliertablier Membre
    novembre 2013 modifié #7

    Je ne savais pas que Fibonacci était Anglais. Je pensais qu'il était Italien!!


  • Phibonacci... du coup ça pourrait même être grec...


  • Non non, un italien, un matheux qui avait de la suite dans les idées!


  • AliGatorAliGator Membre, Modérateur

    Non non, un italien, un matheux qui avait de la suite dans les idées!

    :D bien trouvé celle-là  ^^
Connectez-vous ou Inscrivez-vous pour répondre.