//
// 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
分享到:
相关推荐
【标题】"会说话的汤姆猫 自己写的源码 会说话的安吉拉" 暗示了这是一个关于创建类似"会说话的汤姆猫"或"会说话的安吉拉"这类应用程序的源代码集合。这些应用通常属于交互式娱乐软件,通过语音识别技术和音频处理来...
资源管理是游戏开发中的重要部分,会说话的汤姆猫会包含各种图像、音频和数据文件。这些资源通常存储在项目的res目录下,通过R类来访问。源码中会有加载和释放资源的代码,以确保高效使用内存。 在游戏设计上,会...
这个项目基于经典的“会说话的汤姆猫”角色,它是一个互动的应用,用户可以通过触摸屏幕与虚拟的汤姆猫进行互动,汤姆猫会模仿用户的语音并做出相应的动画反应。在Android Studio 4环境下,此源代码已经成功编译,...
6. **声音播放**:在“汤姆猫”游戏中,可能会有汤姆猫的叫声或背景音乐。`pygame.mixer`模块负责声音的加载和播放,如`pygame.mixer.Sound()`加载声音文件,`sound.play()`播放声音。 7. **按钮功能**:项目中提到...
【压缩包子文件的文件名称列表】只有一个:"会说话的汤姆猫",这可能包含多个文件夹和文件,如项目的主模块(`main`目录)、资源文件(`res`目录)、图片(`drawable`目录)、音频(`raw`或`assets`目录)、布局文件(`xml`...
【标题】"会动的汤姆猫游戏"是一款基于HTML、JavaScript(js)和CSS技术构建的互动小游戏。这款游戏以其生动的动画效果和音效,为用户提供了有趣的体验。 【HTML】是HyperText Markup Language的缩写,是网页制作的...
"不会说话的汤姆猫"是一款经典的移动应用,曾经在iOS平台上广受欢迎。这款应用程序以其互动性和娱乐性吸引了大量用户,尤其是孩子们的喜爱。虽然标题提到的是"不会说话的汤姆猫",通常汤姆猫应用的特点是能够模仿...
在“汤姆猫”游戏中,JavaScript代码会控制游戏逻辑,如用户输入响应、角色动作、碰撞检测等。 此外,Visual Studio Code(VS Code)是一个强大的源代码编辑器,支持多种语言,包括HTML、CSS和JavaScript。它提供了...
labview仿真汤姆猫 可重复你的话 简易仿真 仅供参考
SWF格式不会说话的汤姆猫,非智能手机使用
【JavaScript实现手机端网页版的汤姆猫】 在H5小游戏开发中,JavaScript扮演着核心角色,它提供了丰富的功能来创建交互式网页内容。在这个"手机端网页版的汤姆猫"项目中,我们主要利用JavaScript来实现游戏的逻辑、...
【标题】"Object-C 实现的会说话的汤姆猫源码及素材" 【描述】在iOS应用开发中,"会说话的汤姆猫"是一个经典的案例,它展示了如何通过Object-C编程语言来实现交互式动画和声音效果。这个项目是在Xcode 7.3环境下...
在这个汤姆猫游戏中,Canvas可能被用来绘制汤姆猫的动画,包括它的移动、表情变化以及与用户的互动。开发者通过JavaScript来控制Canvas上的绘图,实现动态效果。 其次,HTML5的Audio元素使得在网页中嵌入音频变得...
汤姆猫的源码可能会展示角色行为、玩家输入响应、游戏规则等逻辑的实现。 10. **软件架构**:一个完整的项目会有明确的模块划分和架构设计,理解源码的组织方式有助于学习MVC(模型-视图-控制器)或其他设计模式。 ...
【会说话的Tom猫 Android 源码解析】 在Android平台上,"会说话的Tom猫"是一款非常受欢迎的休闲娱乐应用。它允许用户通过麦克风输入声音,然后应用会将这个声音转化为Tom猫的独特叫声进行播放,带给用户无尽的乐趣...
“汤姆猫”这个名字源于一款广受欢迎的手机应用程序,名为《会说话的汤姆猫》(Talking Tom Cat),它是一款互动式宠物模拟游戏。在这款游戏中,用户可以通过触摸屏幕与虚拟角色汤姆猫进行互动,比如抚摸、拍打或者...
会说话的汤姆猫电脑版游戏体验 会说话的汤姆猫电脑版是一款基于PC的宠物类应用游戏,它的出现让玩家可以在电脑上玩转这款游戏,而不再局限于手机平台。该游戏的出现弥补了手机版的不足,满足了玩家的需求。 首先,...
到了2018年,金科文化实现了对全球著名互联网企业Outfit7的控股,并拥有了其著名的IP产品系列——“会说话的汤姆猫家族”。金科文化在2019年完成了化工业务的全面剥离,转型成为一家专注于移动互联网的企业,致力于...