`

会说话的汤姆猫

    博客分类:
  • ios
ios 
阅读更多
//
//  ViewController.m
//  20150816_ios_汤姆猫
//
//  Created by YueWen on 15/8/16.
//  Copyright (c) 2015年 YueWen. All rights reserved.
//

#import "ViewController.h"
#define EAT 40       //吃东西的图片的个数
#define FART 28      //放P的图片的个数
#define DRINK 81     //喝牛奶的图片的个数
#define ARGRY 26     //生气的图片的个数
#define CYMBAL 13    //敲锣的图片的个数
#define PIE 24       //扔东西的图片的个数
#define SCRATCH 56   //挠人的图片的个数
#define KNOCKOUT 81  //敲晕的图片的个数
#define FOOTLEFT 30  //左脚被点的图片个数
#define FOOTRIGHT 30 //右键被点的图片的个数
#define ANGRY 26     //生气时候的图片的个数

#define RATE 0.12    //每张图片显示的时间

@interface ViewController ()

@property(nonatomic,strong)UIButton * eatButton;//吃东西的按钮
@property(nonatomic,strong)UIButton * fartButton;//放P的按钮
@property(nonatomic,strong)UIButton * drinkButton;//喝东西的按钮
@property(nonatomic,strong)UIButton * scratchButton;//挠人的按钮
@property(nonatomic,strong)UIButton * pieButton;//扔东西的按钮
@property(nonatomic,strong)UIButton * cymbalButton;//敲锣的按钮

@property(nonatomic,strong)UIButton * knockoutButton;//被敲晕的按钮
@property(nonatomic,strong)UIButton * footleftButton;//左脚被点的按钮
@property(nonatomic,strong)UIButton * footrightButton;//右脚被点的按钮
@property(nonatomic,strong)UIButton * angryButton;//生气的按钮



@property(nonatomic,strong)UIImageView * mainView;

//按钮的动作回调监听
-(void)clickButton:(id) sender;

//开启动画的方法打包
-(void)play:(NSString *)picName Count:(int)count;

//自定义初始化按钮的方法
-(UIButton *)allocButtonpicName:(NSString *)picName
          myCGRect:(CGRect)rect
             myTag:(NSInteger)tag;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //初始化主页面
    self.mainView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
    UIImage * mainImage = [UIImage imageNamed:@"angry_00.jpg"];
    self.mainView.image = mainImage;
    
   //初始化吃东西按钮

    self.eatButton = [self allocButtonpicName:@"eat.png"
                                     myCGRect:CGRectMake(10, 400, 60, 60)
                                        myTag:1];
    
    //初始化放P按钮
    self.fartButton = [self allocButtonpicName:@"fart.png"
                                     myCGRect:CGRectMake(10, 470, 60, 60)
                                        myTag:2];
    
    //初始化喝牛奶按钮
    self.drinkButton = [self allocButtonpicName:@"drink.png"
                                       myCGRect:CGRectMake(10, 540, 60, 60)
                                          myTag:3];

    //初始化挠人按钮
    self.scratchButton = [self allocButtonpicName:@"scratch.png"
                                         myCGRect:CGRectMake(305, 400, 60, 60)
                                            myTag:4];
    
    
    //初始化扔东西按钮
    self.pieButton = [self allocButtonpicName:@"pie.png"
                                     myCGRect:CGRectMake(305, 470, 60, 60)
                                        myTag:5];
    
    //初始化敲锣的按钮
    self.cymbalButton = [self allocButtonpicName:@"cymbal.png"
                                        myCGRect:CGRectMake(305, 540, 60, 60)
                                           myTag:6];
    
    
    //初始化被敲晕的按钮
    self.knockoutButton = [self allocButtonpicName:nil
                                          myCGRect:CGRectMake(70, 120, 230, 230)
                                             myTag:7];
    
    //初始化左脚的按钮
    self.footleftButton = [self allocButtonpicName:nil
                                          myCGRect:CGRectMake(135, 605, 40, 40)
                                             myTag:8];
    //初始化右脚的按钮
    self.footrightButton = [self allocButtonpicName:nil
                                          myCGRect:CGRectMake(195, 605, 40, 40)
                                             myTag:9];
    
    //初始化生气的按钮
    self.angryButton = [self allocButtonpicName:nil
                                       myCGRect:CGRectMake(250, 520, 40, 80)
                                          myTag:10];
    
    //主面板添加汤姆猫主页面
    [self.view addSubview:self.mainView];
    [self.view addSubview:self.eatButton];
    [self.view addSubview:self.fartButton];
    [self.view addSubview:self.drinkButton];
    [self.view addSubview:self.scratchButton];
    [self.view addSubview:self.pieButton];
    [self.view addSubview:self.cymbalButton];
    
    [self.view addSubview:self.footleftButton];
    [self.view addSubview:self.footrightButton];
    [self.view addSubview:self.knockoutButton];
    [self.view addSubview:self.angryButton];
}

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

/**
 按钮监听(按钮的回调方法)
 */
-(void)clickButton:(id)sender
{
    UIButton * button = sender;
    //说明是吃东西的按钮被点击
    if (button.tag == 1)
    {
        [self play:@"eat" Count:EAT];
        [self playSound:@"p_eat.wav"];
    }
    
    //说明是放P的按钮被点击
    else if (button.tag == 2)
    {
        [self play:@"fart" Count:FART];
        [self playSound:@"fart001_11025.wav"];
    }
    
    //说明是喝牛奶的按钮被点击
    else if (button.tag == 3)
    {
        [self play:@"drink" Count:DRINK];
        [self playSound:@"p_drink_milk.wav"];
    }
    
    //说明是挠人的按钮被点击
    else if (button.tag == 4)
    {
        [self play:@"scratch" Count:SCRATCH];
        [self playSound:@"scratch_kratzen.wav"];
    }
    
    //说明是扔东西的按钮被点击
    else if(button.tag == 5)
    {
        [self play:@"pie" Count:PIE];
        [self playSound:@"p_belly1.wav"];
    }
    
    //说明是敲锣的按钮被点击
    else if(button.tag == 6)
    {
        [self play:@"cymbal" Count:CYMBAL];
        [self playSound:@"cymbal.wav"];
    }
    
    //说明是被敲脑袋的按钮被点击
    else if(button.tag == 7)
    {
        [self play:@"knockout" Count:KNOCKOUT];
        [self playSound:@"p_noo.wav"];
    }
    
    //说明是被点了左脚(按照人的左右)
    else if(button.tag == 8)
    {
        [self play:@"footRight" Count:FOOTRIGHT];
        [self playSound:@"p_foot3.wav"];
    }
    
    //说明被点了右脚(按照人的左右)
    else if(button.tag == 9)
    {
        [self play:@"footLeft" Count:FOOTLEFT];
        [self playSound:@"p_foot4.wav"];
    }
    
    //被点了尾巴,生气
    else if(button.tag == 10)
    {
        [self play:@"angry" Count:ANGRY];
        [self playSound:@"angry.wav"];
    }
}

/**
 动画开始播放
 */
-(void)play:(NSString *)picName Count:(int)count
{
    
    //如果正在执行动画
    if ([self.mainView isAnimating])
    {
        return ;//啥也不做
    }
    
    //初始化图片数组
    NSMutableArray * picArray = [[NSMutableArray alloc]initWithCapacity:2];
    
    for (int i = 0; i < count; i++)
    {
        //初始化图片名称
        NSString * picname = [NSString stringWithFormat:@"%@_%02d.jpg",picName,i];
        //NSLog(@"%@",picname);
        //初始化路径
        NSString * path = [[NSBundle mainBundle] pathForResource:picname ofType:nil];
        //NSLog(@"%@2---",path);
        /*加载图片的另一种方式,这种方式的缺点是将图片读到内存,只有当程序关闭的时候才会释放,这样就会造成很多资源的浪费,消耗内存太大,以至于被苹果out
        UIImage * image1 = [UIImage imageNamed:@picName];
         */
        
        //加载图片
        UIImage * imageTemp = [UIImage imageWithContentsOfFile:path];
        
        //添加到数组
        [picArray addObject:imageTemp];
    }

    self.mainView.animationImages = picArray;
    
    //设置持续时间
    self.mainView.animationDuration = count * RATE;
    
    //重复播放次数
    self.mainView.animationRepeatCount = 1;
    
    //开启动画
    [self.mainView startAnimating];

    //延迟清空
    [self.mainView performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:count * RATE];
    
}

/**
 初始化按钮的方法
 */
-(UIButton *)allocButtonpicName:(NSString *)picName
          myCGRect:(CGRect)rect
             myTag:(NSInteger)tag
{
    
    //初始化按钮
    UIButton * button = [[UIButton alloc] initWithFrame:rect];//初始化范围

    UIImage * Image = [UIImage imageNamed:picName];//初始化背景图片
    
    button.tag = tag;//初始化tag值
    
    [button setImage:Image forState:UIControlStateNormal];//设置背景图片
    
    [button addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];//添加回调
    return button;
}

- (void)playSound:(NSString *)name{
    NSString *path = [[NSBundle mainBundle]pathForResource:name ofType:nil];
    NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
     _player =[[AVAudioPlayer alloc] initWithData:data error:nil];
    [_player prepareToPlay];
    [_player play];
    self.player=_player;
}
@end



  • 大小: 1.3 MB
分享到:
评论

相关推荐

    会说话的汤姆猫 自己写的源码 会说话的安吉拉

    【标题】"会说话的汤姆猫 自己写的源码 会说话的安吉拉" 暗示了这是一个关于创建类似"会说话的汤姆猫"或"会说话的安吉拉"这类应用程序的源代码集合。这些应用通常属于交互式娱乐软件,通过语音识别技术和音频处理来...

    android源码之会说话的汤姆猫.zip

    资源管理是游戏开发中的重要部分,会说话的汤姆猫会包含各种图像、音频和数据文件。这些资源通常存储在项目的res目录下,通过R类来访问。源码中会有加载和释放资源的代码,以确保高效使用内存。 在游戏设计上,会...

    会说话的汤姆猫Androidstudio4源代码

    这个项目基于经典的“会说话的汤姆猫”角色,它是一个互动的应用,用户可以通过触摸屏幕与虚拟的汤姆猫进行互动,汤姆猫会模仿用户的语音并做出相应的动画反应。在Android Studio 4环境下,此源代码已经成功编译,...

    基于pygame的汤姆猫

    6. **声音播放**:在“汤姆猫”游戏中,可能会有汤姆猫的叫声或背景音乐。`pygame.mixer`模块负责声音的加载和播放,如`pygame.mixer.Sound()`加载声音文件,`sound.play()`播放声音。 7. **按钮功能**:项目中提到...

    java说话的汤姆猫.zip

    【压缩包子文件的文件名称列表】只有一个:"会说话的汤姆猫",这可能包含多个文件夹和文件,如项目的主模块(`main`目录)、资源文件(`res`目录)、图片(`drawable`目录)、音频(`raw`或`assets`目录)、布局文件(`xml`...

    会动的汤姆猫游戏 html源码 js源码 css源码

    【标题】"会动的汤姆猫游戏"是一款基于HTML、JavaScript(js)和CSS技术构建的互动小游戏。这款游戏以其生动的动画效果和音效,为用户提供了有趣的体验。 【HTML】是HyperText Markup Language的缩写,是网页制作的...

    不会说话的汤姆猫

    "不会说话的汤姆猫"是一款经典的移动应用,曾经在iOS平台上广受欢迎。这款应用程序以其互动性和娱乐性吸引了大量用户,尤其是孩子们的喜爱。虽然标题提到的是"不会说话的汤姆猫",通常汤姆猫应用的特点是能够模仿...

    HTML5 汤姆猫

    在“汤姆猫”游戏中,JavaScript代码会控制游戏逻辑,如用户输入响应、角色动作、碰撞检测等。 此外,Visual Studio Code(VS Code)是一个强大的源代码编辑器,支持多种语言,包括HTML、CSS和JavaScript。它提供了...

    labview仿真会说话的汤姆猫

    labview仿真汤姆猫 可重复你的话 简易仿真 仅供参考

    SWF不会说话汤姆猫

    SWF格式不会说话的汤姆猫,非智能手机使用

    js实现手机端网页版的汤姆猫

    【JavaScript实现手机端网页版的汤姆猫】 在H5小游戏开发中,JavaScript扮演着核心角色,它提供了丰富的功能来创建交互式网页内容。在这个"手机端网页版的汤姆猫"项目中,我们主要利用JavaScript来实现游戏的逻辑、...

    object-c会说话的汤姆猫源码and素材

    【标题】"Object-C 实现的会说话的汤姆猫源码及素材" 【描述】在iOS应用开发中,"会说话的汤姆猫"是一个经典的案例,它展示了如何通过Object-C编程语言来实现交互式动画和声音效果。这个项目是在Xcode 7.3环境下...

    html5 汤姆猫

    在这个汤姆猫游戏中,Canvas可能被用来绘制汤姆猫的动画,包括它的移动、表情变化以及与用户的互动。开发者通过JavaScript来控制Canvas上的绘图,实现动态效果。 其次,HTML5的Audio元素使得在网页中嵌入音频变得...

    汤姆猫源码

    汤姆猫的源码可能会展示角色行为、玩家输入响应、游戏规则等逻辑的实现。 10. **软件架构**:一个完整的项目会有明确的模块划分和架构设计,理解源码的组织方式有助于学习MVC(模型-视图-控制器)或其他设计模式。 ...

    会说话的Tom猫 anroid源码

    【会说话的Tom猫 Android 源码解析】 在Android平台上,"会说话的Tom猫"是一款非常受欢迎的休闲娱乐应用。它允许用户通过麦克风输入声音,然后应用会将这个声音转化为Tom猫的独特叫声进行播放,带给用户无尽的乐趣...

    汤姆猫动画

    “汤姆猫”这个名字源于一款广受欢迎的手机应用程序,名为《会说话的汤姆猫》(Talking Tom Cat),它是一款互动式宠物模拟游戏。在这款游戏中,用户可以通过触摸屏幕与虚拟角色汤姆猫进行互动,比如抚摸、拍打或者...

    会说话的汤姆猫电脑版PC游戏全新体验.docx

    会说话的汤姆猫电脑版游戏体验 会说话的汤姆猫电脑版是一款基于PC的宠物类应用游戏,它的出现让玩家可以在电脑上玩转这款游戏,而不再局限于手机平台。该游戏的出现弥补了手机版的不足,满足了玩家的需求。 首先,...

    20200308-海通证券-金科文化-300459-公司研究报告:以会说话的汤姆猫为核心,打造全栖IP运营商.pdf

    到了2018年,金科文化实现了对全球著名互联网企业Outfit7的控股,并拥有了其著名的IP产品系列——“会说话的汤姆猫家族”。金科文化在2019年完成了化工业务的全面剥离,转型成为一家专注于移动互联网的企业,致力于...

Global site tag (gtag.js) - Google Analytics