1、UIImageView 动画

  • 1.1 播放图片集

    @property (nonatomic, strong) UIImageView *playImageView;
    
    self.playImageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:self.playImageView]; // 创建图片集
    NSMutableArray *imageArray = [NSMutableArray arrayWithCapacity:0]; for (int i = 1; i < 30; i++) { // 添加图片
    [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg", i]]];
    } // 播放图片集
    self.playImageView.animationImages = imageArray; // 设置播放的图片集(需将图片添加到数组 imageArray 中)
    self.playImageView.animationDuration = 29; // 设置播放整个图片集的时间
    self.playImageView.animationRepeatCount = 0; // 设置循环播放次数,默认为 0 一直循环
    [self.playImageView startAnimating]; // 开始播放 // [self.playImageView stopAnimating]; // 停止播放动画
    • 效果

  • 1.2 汤姆猫

    #import <AudioToolbox/AudioToolbox.h>
    
    @property (nonatomic, strong) UIImageView *playImageView;
    
    // 创建播放视图
    self.playImageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    self.playImageView.image = [UIImage imageNamed:@"background.jpg"];
    [self.view addSubview:self.playImageView]; // 创建功能按钮
    const CGFloat viewWith = self.view.bounds.size.width;
    const CGFloat viewHeight = self.view.bounds.size.height; const CGFloat gap = 10;
    const CGFloat buttonWith = self.view.bounds.size.width / 5;
    const CGFloat buttonHeight = buttonWith; // 功能按钮图片集
    NSArray *buttonImageNameArray = @[@"fart.png", @"cymbal.png", @"drink.png", @"eat.png", @"pie.png", @"scratch.png"]; for (int i = 0; i < 11; i++) { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.playImageView addSubview:button]; self.playImageView.userInteractionEnabled = YES; if (i < 6) { // 两边功能按钮的布局 if (i < 3) { button.frame = CGRectMake(gap, viewHeight / 2 + (buttonHeight + gap ) * (i % 3), buttonWith, buttonHeight);
    }
    else { button.frame = CGRectMake(viewWith - buttonWith - gap, viewHeight / 2 + (buttonHeight + gap) * (i % 3), buttonWith, buttonHeight);
    } [button setBackgroundImage:[UIImage imageNamed:buttonImageNameArray[i]] forState:UIControlStateNormal]; } else { // 隐藏按钮的布局 if (i == 6){ // 头 button.frame = CGRectMake(viewWith/4, viewHeight/5, viewWith/2, viewHeight/4);
    }
    else if (i == 7){ // 肚子 button.frame = CGRectMake(viewWith/3, viewHeight/3*2, viewWith/3, viewHeight/7);
    }
    else if (i == 8){ // 左脚 button.frame = CGRectMake(viewWith/4*2, viewHeight/6*5, viewWith/6, viewHeight/7);
    }
    else if (i == 9){ // 右脚 button.frame = CGRectMake(viewWith/4, viewHeight/6*5, viewWith/5, viewHeight/7);
    }
    else{ // 尾巴 button.frame = CGRectMake(viewWith/9*6, viewHeight/7*5, viewWith/7, viewHeight/5);
    } // button.backgroundColor = [UIColor yellowColor];
    } button.tag = 100 + i; // 设置按钮事件
    [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
    } /********************** 点击按钮事件处理 ************************************/
    - (void)buttonClick:(UIButton *)button { switch (button.tag - 100) { case 0: // fart 放屁 [self playAnimation:@"fart"];
    [self performSelector:@selector(playVoice:) withObject:@"fart" afterDelay:0.5]; break; case 1: // cymbal 敲锣 [self playAnimation:@"cymbal"];
    [self performSelector:@selector(playVoice:) withObject:@"cymbal" afterDelay:0.5]; break; case 2: // drink 喝牛奶 [self playAnimation:@"drink"];
    [self performSelector:@selector(playVoice:) withObject:@"drink" afterDelay:0.5]; break; case 3: // eat 吃小鸟 [self playAnimation:@"eat"];
    [self performSelector:@selector(playVoice:) withObject:@"eat" afterDelay:0.5]; break; case 4: // pie 撇东西 [self playAnimation:@"pie"];
    [self performSelector:@selector(playVoice:) withObject:@"pie" afterDelay:0.5]; break; case 5: // scratch 抓屏幕 [self playAnimation:@"scratch"];
    [self performSelector:@selector(playVoice:) withObject:@"scratch" afterDelay:1.5]; break; case 6: // knockout 头 [self playAnimation:@"knockout"];
    [self performSelector:@selector(playVoice:) withObject:@"knockout" afterDelay:0.5]; break; case 7: // stomach 肚子 [self playAnimation:@"stomach"];
    [self performSelector:@selector(playVoice:) withObject:@"stomach" afterDelay:0.5]; break; case 8: // foot_left 左脚 [self playAnimation:@"foot_left"];
    [self performSelector:@selector(playVoice:) withObject:@"foot_left" afterDelay:0.5]; break; case 9: // foot_right 右脚 [self playAnimation:@"foot_right"];
    [self performSelector:@selector(playVoice:) withObject:@"foot_right" afterDelay:0.5]; break; case 10: // angry 尾巴 [self playAnimation:@"angry"];
    [self performSelector:@selector(playVoice:) withObject:@"angry" afterDelay:0.8]; break; default:
    break;
    }
    } /********************** 播放动画 ************************************/
    - (void)playAnimation:(NSString *)key { // 读取 plist 文件获取图片数量
    NSDictionary *imageNumDictionary = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"TomCat" ofType:@"plist"]]; int imageNum = [[imageNumDictionary objectForKey:key] intValue]; NSMutableArray *imageArray = [NSMutableArray arrayWithCapacity:0]; for (int i = 0; i < imageNum; i++) { [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%@_%.2d.jpg", key, i]]];
    } self.playImageView.animationImages = imageArray;
    self.playImageView.animationDuration = imageNum/13;
    self.playImageView.animationRepeatCount = 1; [self.playImageView startAnimating]; // 播放动画
    } /********************** 播放声音 ************************************/
    - (void)playVoice:(NSString *)key { // 添加声音
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:key ofType:@"wav"]]), &soundID); AudioServicesPlayAlertSound(soundID); // 播放声音
    }
    • 效果

      ------

最新文章

  1. flex总结
  2. poj1399 hoj1037 Direct Visibility 题解 (宽搜)
  3. action func用法记记
  4. Maven项目自动生成mybaties配置文件
  5. jQuery源代码学习之八——jQuery属性操作模块
  6. windows下安装KeystoneJS
  7. Log4Net IsInfoEnabled 一直 false 的问题
  8. jQuery RemoveAttr(checked)之后再Attr(checked)属性无效果的原因分析
  9. 关于feature创建Lookup列的BUG
  10. gradle command not found
  11. NGINX+UWSGI 莫名发生Nginx 502 Bad Gateway错误的排查过程
  12. 如何取消Linux下,vi中显示的^M符号
  13. Codevs 1082 线段树练习 3
  14. DHTML【10】--Javascript
  15. 在HBulider中如何快速的生成有序(ol)和无序(ul)列表
  16. WSL与Windows交互实践
  17. (六)QDialog,QMessageBox,QFileDialog,QColorDialog颜色,QFontDialog字体
  18. ideal中把项目打成war包,并放在tomcat运行,遇见的问题。。。
  19. excel 批量上传图片
  20. eclipse中svn项目重定向地址

热门文章

  1. 实验吧CTF题库-隐写术(部分)
  2. python爬西刺代理
  3. C过程思想,根据需求写方法就行
  4. 点击jQuery Mobile的按钮改变颜色
  5. Java中 单例(Singleton)的两种方式
  6. CSS——优先级
  7. JBPM具体应用之decision节点的使用
  8. 【285】ArcPy 暗色窗体设置
  9. POJ1012(约瑟夫问题)
  10. 使用alias让命令行更便捷