zoukankan      html  css  js  c++  java
  • 利用NSTimer实现序列帧动画

       开始接触IOS的时候,object-C中的UIImageView中可以利用animationImages来实现序列动画,但是在实际应用时出问题了,触发的时候加载速度有点慢,在想办法解决加载速度的时候,偶然在别人的博客看到了NSTimer的用法,突来了想法。

       思路,利用NSTimer间隔的去替换UIImageView的image,这里先说下有关于image的imageWithContentsOfFile和imageNamed,开始我很乐意区使用imageNamed,因为不用写繁琐的代码,但是这是错误的,在很多论坛都有提及image的imageWithContentsOfFile和imageNamed对内存的问题,imageNamed会有缓存,而imageWithContentsOfFile是即用即清除,所以建议尽可能的要去自己使用imageWithContentsOfFile。

       代码


    #import "ViewController.h"

    @interface ViewController ()

    @end

    @implementation ViewController

    @synthesize imageView;

    NSTimer *timer;

    int imageIndex;

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 1024, 768)];
        [self.view addSubview:imageView];

        imageIndex = 0;
        
        timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(changeImage) userInfo:nil repeats:YES];
    }

    - (void) changeImage{
        imageIndex += 1;
        NSString *imageName = [NSString stringWithFormat:@"飞兽%d",imageIndex];
        NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageName ofType:@"jpg"];
        /*
         imageNamed:(NSString *)name;会产生缓存
         imageWithContentsOfFile:(NSString *)path;不会产生缓存
         */
        imageView.image = [UIImage imageWithContentsOfFile:imagePath];
        if (imageIndex == 20) {
            imageIndex = 0;
        }
    }

    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }

    @end
  • 相关阅读:
    最小费用最大流问题
    成大事必备9种能力、9种手段、9种心态
    转 fpga学习经验2
    算法 FFT理论1
    FPGA进阶之路1
    FPGA:亲和力激活竞争力
    1030 又回来了
    转 fpga学习经验1
    调查:近半大学生愿接受15002000元月薪
    转 观点:哪些人适合做FPGA开发(精华)
  • 原文地址:https://www.cnblogs.com/UnrealEra/p/3583570.html
Copyright © 2011-2022 走看看