• ios-序列帧动画核心代码简单介绍以及封装


    • imageView的属性,isAnimating在这里用来当正执行;一个动画的时候,禁止开启其他动画.
    • UIImage imageNamed这个方法加载的图片是有缓存的,它是把所有的图片先加载到内存中,再执行动画
      • 优点是: 执行动画效率高,启动时间短.
      • 缺点: 内存可能占用过大,造成程序闪退
    • UIImage imageWithContentsOfFile 这种方式是通过加载图片的路径的方式加载图片.添加到可变数组的是图片的路径.在执行动画的时候是根据图片的路径来加载图片到内存中的.
    - (void)beginAnimationWithImageCount:(int)count imageName:(NSString *)imageName {
        
        // 如果当前的图片框正在执行一个动画, 那么不开启一个新的动画
        if (self.imgView1.isAnimating) return;
        
        // 1. 把要执行动画的图片设置UIImageView(图片框)
        NSMutableArray *arrayM = [NSMutableArray array];
        for (int i = 0; i < count; i++) {
            NSString *imgName = [NSString stringWithFormat:@"%@%03d", imageName, i + 1];
            
            // 通过+ imageNamed:这个方法加载的图片, 是有缓存的
            // UIImage *img = [UIImage imageNamed:imgName];
            
            // 没有缓存的加载图片的方式:
            // 1》 确定图片的完整路径
            NSString *img_path = [[NSBundle mainBundle] pathForResource:imgName ofType:@"png"];
            // 2》通过调用imageWithContentsOfFile:方法来加载图片
            UIImage *img = [UIImage imageWithContentsOfFile:img_path];
            
            
            // 把图片对象添加到数组中
            [arrayM addObject:img];
        }
        // 把要执行动画的图片设置给图片框
        self.imgView1.animationImages = arrayM;
        
        
        // 2. 设置动画的持续时间
        self.imgView1.animationDuration = 0.1 * self.imgView1.animationImages.count;
        
        
        // 3. 设置动画的重复次数
        self.imgView1.animationRepeatCount = 1;
        
        
        // 4. 启动动画
        [self.imgView1 startAnimating];
        
        
        // 清除图片内存
        // self.imgView1.animationImages = nil;
        // [self.imgView1 setAnimationImages:nil];
        
        // 等待动画执行完毕后, 再清除内存
        [self.imgView1 performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imgView1.animationDuration];
    
    }
    
    
    
  • 相关阅读:
    数独游戏 C++ 回溯法
    DirectX 90 3D 网格一
    DirectX 90 3D SetRenderState 设置渲染状态
    DirectX90 3D 字体
    DirectX 90 3D 外接体
    VS2005下配置OGRE
    DirectX 90 3D 网格二
    Java反射机制
    UBUNTU下安装 APACHE+PHP+MYSQL文本服务器!
    关于那个SMTP类及一个例子
  • 原文地址:https://www.cnblogs.com/adampei-bobo/p/5313845.html
Copyright © 2020-2023  润新知