使用UISegementControl实现简易汤姆猫程序

//
//  TomViewController.m

#import "TomViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface TomViewController ()

@property (nonatomic, retain) UIImageView * imageView;

@property (nonatomic, retain) AVAudioPlayer *player;

@end

@implementation TomViewController

- (void)dealloc
{
    self.imageView = nil;
    self.player = nil;
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // 初始化imageView属性
    self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"angry_00.jpg"]];
    _imageView.frame = [UIScreen mainScreen].bounds;
    [self.view addSubview:_imageView];
    [_imageView release];

    // 准备title数组
    NSArray *titles = @[@"吃鸟", @"生气", @"放屁"];
    // 使用title数组初始化UISegmentControl
    UISegmentedControl *segmentControl = [[UISegmentedControl alloc] initWithItems:titles];
    // 配置属性
    // 设置frame,每一个item等分总的宽度
    segmentControl.frame = CGRectMake(60, 20, 200, 30);
    segmentControl.tintColor = [UIColor yellowColor];// 字体,边框颜色
    //segmentControl.selectedSegmentIndex = 0;

    [self.view addSubview:segmentControl];
    [segmentControl release];

    // 给segementControl设置关联事件
    [segmentControl addTarget:self action:@selector(handleSegmentControl:) forControlEvents:(UIControlEventValueChanged)];

}
#pragma mark - UISegementControl的关联事件实现方法
- (void)handleSegmentControl:(UISegmentedControl *)sender {
    // sender.selectedSegementIndex 获取选中的分段下标
    switch (sender.selectedSegmentIndex) {

        case 0:// 吃鸟
            [self eat];
            break;

        case 1: // 生气
            [self angry];
            break;

        case 2: // 放屁
            [self fart];
            break;

        default:
            break;
    }

}
#pragma mark - 吃鸟的方法实现
- (void)eat {
    // 先停止播放,再释放上一次使用的播放器对象
    [self.player stop];
    self.player = nil;
    // 如果正在播放动画,点击不响应
    if (_imageView.isAnimating) {
        return;
    }
    // 调用获取动画数组的方法 制作动画
    _imageView.animationImages = [self getAnimationArrayWithImageName:@"eat" andImageCount:40];

    _imageView.animationDuration = 4;
    _imageView.animationRepeatCount = 1;// 点击播放一次
    [_imageView startAnimating];// 开启动画

    //创建播放器对象(包括 准备文件路径, 准备播放器NSURL对象,初始化播放器对象 三步)
    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSBundle mainBundle]pathForResource:@"p_eat.m4a" ofType:nil]] error:nil];
    [_player release];
    [_player play];

}
#pragma mark - 生气的方法实现
- (void)angry {

    [self.player stop];
    self.player = nil;

    if (_imageView.isAnimating) {
        return;
    }

    _imageView.animationImages = [self getAnimationArrayWithImageName:@"angry" andImageCount:26];
    _imageView.animationRepeatCount = 1;
    _imageView.animationDuration = 2;
    [_imageView startAnimating];

    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSBundle mainBundle]pathForResource:@"angry.m4a" ofType:nil]] error:nil];
    [_player release];
    [_player play];

}

#pragma mark - 放屁的方法实现
- (void)fart {

        [self.player stop];
        self.player = nil;

        if (_imageView.isAnimating) {
            return;
        }

        _imageView.animationImages = [self getAnimationArrayWithImageName:@"fart" andImageCount:28];
        _imageView.animationDuration = 4;
        _imageView.animationRepeatCount = 1;
        [_imageView startAnimating];

        self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"fart003_11025.m4a" ofType:nil]] error:nil];
        [_player release];
        [_player play];

}

// 提供一个返回动画数组的方法 两个参数(图片名 和 对应图片的数量)
- (NSMutableArray *)getAnimationArrayWithImageName:(NSString *)name andImageCount:(int)count {
    // 准备图片数组
    NSMutableArray *imageArray = [NSMutableArray arrayWithCapacity:count];
    // 循环取出一组动画中的全部图片
    for (int i = 0; i < count; i++) {

        NSString *imageName = [NSString stringWithFormat:@"%@_%02d.jpg", name, i];// %02d:占位为2, 10以内的十位用0

        UIImage *image = [UIImage imageNamed:imageName];// 创建UIImage对象

        [imageArray addObject:image]; // 照片添加到数组中

    }

    return imageArray;

}

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

@end
时间: 2024-11-10 13:20:33

使用UISegementControl实现简易汤姆猫程序的相关文章

用树莓派实现会说话的汤姆猫

会说话的汤姆猫很多人都玩过,对着它说话,它就会用猫的音调重复你说的话.这篇文章就是介绍如何使用树莓派来实现这个功能. 测试设备: 树莓派3B+ ReSpeaker 2-Mics Pi HAT(USB的麦克风应该也可以) 耳机/音箱(需要带插头的) 1.ReSpeaker硬件安装 ReSpeaker是直接扣在树莓派上的,将树莓派的针脚全部插入到ReSpeaker中. 2.ReSpeaker驱动安装 通过SSH连接到树莓派后,首先更新包源,然后安装git,下一步会使用git下载代码: sudo ap

在汤姆猫上运行服务

1.cd /usr/local/tomcat/ 2.在此基础上可以创建几个目录,分别叫/tomcat/webapps,在webapps创建libincla目录,并在此目录下分别创建/WEB-INF和并在WEB-INF之下分别创建/classes和/lib,代表我们要部署一个服务了. mkdir /tomcat/webapps –pv cd webapps mkdir libincla [[email protected] libincla]# tree WEB-INF/ WEB-INF/ ├──

汤姆猫的安装、使用。

先要提供jdk-7u9-linux-x64.rpm(如以上版本) 安装jdk(java需要用到的编译开发工具) [[email protected] ~]# rpm -vih jdk-7u9-linux-x64.rpm Preparing...                ########################################### [100%]    1:jdk                    #################################

IOS 开发笔记-基础 UI(7)汤姆猫(UIImageView 的序列帧动画、图片加载,方法重构、Bundle 图片素材)

使用UIImageView.UIButton实现一个综合小案例---汤姆猫 回忆:UIImageView 来自UIView,UIView 来自UIResponder,UIButton 来自UIControl,UIControl 来自UIView 单独看实现,代码实现其实比较简单,但是创意很难得,美工要求很高! 是一个了不起的游戏! 功能分析 (1)点击对应的按钮后,让汤姆猫展现对应的动画 步骤分析 (1)搭建UI界面,同时也是准备素材 (2)监听按钮点击 (3)根据点击的按钮执行对应的动画 说明

IOS 学习04 汤姆猫开发

IOS开发,一个简单的汤姆猫开发,截图如下: 1.1以前一直觉得这个小游戏不错,很好玩,现在学习IOS才发现其实这个程序真心很简单,其实这个还不是个完整,还没有声音,以后再来完整. 1.2 创建项目,导入图片,在项目images.xcassets中保存PNG图片,这里只保存6个按键图片,图片文件直接拉进就可以,如下图: 1.3 相信大多数人都玩过这个小游戏,其实这就是一个动画,而动画就是由多个图片连在一起播放的,最后看起来就是动画了. 1.4 知道了动画的原理,那就好办了,我们再来导入按键相对应

[iOS基础控件 - 3.4] 汤姆猫

需求: 1.点击按钮播放相应动画 2.点击汤姆猫身体部分(头.脚.尾巴)显示动画 3.当前正在播放动画不可触发其他动画 4.优化缓存.内存管理 A.序列帧动画 #1. png格式的文件可以不带扩展名访问,而且可以放到”Images.scassets”的组中预览,jpg只能放到support file中了,而且访问的时候要写上扩展名 #2. 在ViewController中的属性栏可以设置storyboard模型的大小 #3. 拖入文件夹的时候要选择“Create Groups"才能正确引用,不要

汤姆猫游戏核心代码 ios/objective-c

#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *tomImageView; @end @implementation ViewController //敲汤姆猫的头部.前提:一系列动画已经导入. (IBAction)btnKnockOutonclicked:(UIButton *)sender{ [self tomImate

一个不会说话的汤姆猫游戏源码

实现“会说话的汤姆猫” App 互动效果,除了不能发出声音,动画效果与原App十分类似.基本原理是,根据选择的不同动作,播放对应的图像序列.支持图片缓存. 游戏项目源码下载:http://code.662p.com/view/7150.html 详细说明:http://ios.662p.com/thread-1874-1-2.html

iOS开发:纯代码实现汤姆猫小游戏

演示效果如下: 代码如下: 1 // 2 // CKViewController.m 3 // 纯代码实现汤姆猫 4 // 5 // Created by FrankChen on 14-12-10. 6 // Copyright (c) 2014年 diaozhatian. All rights reserved. 7 // 8 9 #import "CKViewController.h" 10 11 @interface CKViewController () 12 { 13 //