//
// 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会说话的汤姆猫源码 这个游戏曾经在网上风靡一时,我想现在很多朋友的手机上还有这款游戏,不经意间发现这个源码和大家分享一下,android游戏源码的经典。
汤姆猫
labview仿真汤姆猫 可重复你的话 简易仿真 仅供参考
SWF格式不会说话的汤姆猫,非智能手机使用
曾风靡各大下载平台的汤姆猫,此版本为不会说话的汤姆猫,日后完善会再次上传代码。
会说话的汤姆猫安卓源代码,在androidstudio4下重新编译通过,可以作为练手的项目,目前还没有很复杂的功能
这是一个会动的汤姆猫小游戏,使用html、js 、css编写而成,动画流畅并且有音效。
使用纯Android Java语言写的会说话的汤姆猫,方便学习修改。
包含汤姆猫源码、图片素材、button素材,demo里把关键方法都写了,做了一个简单的示例,如果需要丰富内容或者练手的同学可以根据代码注释进行编写。
源代码copy到android项目中,调用MainActivity下的startR即可录音,录完后会转换成了tom猫的声音自动播放。
20200308-海通证券-金科文化-300459-公司研究报告:以会说话的汤姆猫为核心,打造全栖IP运营商.pdf
xcode7.3开发,实现了点击播放动画和声音的功能,听说功能还待完善
《会说话的汤姆猫》是一款手机宠物类应用游戏,汤姆是一只宠物猫,他可以在您触摸时作出反应,并且用滑稽的声音完整地复述您说的话。您可以抚摸他、用手指戳他、用拳轻打他或捉他的尾巴。您还可以将录制汤姆复述您...
Android开发 会说话的汤姆猫软件源码及案例简要文档说明,可供学习设计参考。
用html5写的 汤姆猫 小游戏;适合初学者看看学学;写有注释; 建议用火狐测试,然后把火狐浏览器调成 响应式设计模式(以便模拟手机屏幕),设置--->开发者--->响应式设计模式
实现了汤姆猫除了录音以外的所有动作.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。