失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > iOS开发-汤姆猫Tom(序列帧动画)附详细注释

iOS开发-汤姆猫Tom(序列帧动画)附详细注释

时间:2023-05-31 02:08:52

相关推荐

iOS开发-汤姆猫Tom(序列帧动画)附详细注释

Tom猫实例效果(只弄了两个功能还是缺少图片的,其他功能雷同):

原谅我嫌弃照图片太麻烦,用文字代替了。

首先通过storybord把基本布局布置好,然后就是拖线写函数。下面附上代码:

#import"ViewController.h"

@interfaceViewController ()

- (IBAction)drink;

@property (weak,nonatomic)IBOutletUIImageView *imageViewCat;

- (IBAction)eat;

@end

@implementationViewController

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

- (void)didReceiveMemoryWarning {

[superdidReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

//喝牛奶动画

- (IBAction)drink {

[selfstartAnimation:81picName:@"drink"];

[selfcreatPlay:@"p_drink_milk.wav"];

}

//吃东西动画

- (IBAction)eat {

[selfstartAnimation:40picName:@"eat"];

[selfcreatPlay:@"p_eat.wav"];

}

//封装 执行动画方法

-(void)startAnimation:(int)count picName:(NSString*)picName

{

if(self.imageViewCat.isAnimating){

return;

}

//0.动态加载图片到NSArray中

NSMutableArray*arrayM = [[NSMutableArrayalloc]init];

for(inti=0; i<count; i++) {

//根据图片名称加载图片

//通过imageName:这种方式加载图片,加载好的图片一致保存在内存中,不会释放,这样下次如果再次使用同样的图片的时候就不需要再重新加载,因为内存中已有。缺点:如果加载大量图片,那么这些图片会一直保存在内存中,导致应用占用内存过大,这就是缓存。

//UIImage *imaCat = [UIImage imageNamed:imgName];

//解决:换一种加载图片的方法,即:获取图片完整的路径

//获取图片的名称

NSString*imgName = [NSStringstringWithFormat:@"cat_%@_%d.jpg",picName,i];

//获取图片的路径

NSString*path = [[NSBundlemainBundle]pathForResource:imgNameofType:nil];

//赋值给UIimage

UIImage*imgCat = [UIImageimageWithContentsOfFile:path];

[arrayM addObject:imgCat];

}

//1.设置ImageView的animationImages属性,包含执行动画的图片

self.imageViewCat.animationImages = arrayM;

//2.设置动画持续时间

self.imageViewCat.animationDuration=3;

//3.设置动画重复播放次数

self.imageViewCat.animationRepeatCount=1;

//4.开启动画

[self.imageViewCatstartAnimating];

//5.当动画执行完毕之后,延迟一段时间,清空图片,达到请空内存的处理

[self.imageViewCatperformSelector:@selector(setAnimationImages:)withObject:nilafterDelay:self.imageViewCat.animationImages.count*0.1];

}

//播放音乐

-(void) creatPlay:(NSString*) name

{

NSString*path = [[NSBundlemainBundle]pathForResource:@"name"ofType:nil];

_player= [[AVAudioPlayeralloc]initWithContentsOfURL:[NSURLURLWithString:path]error:nil];

[_playerplay];

}

@end

如果觉得《iOS开发-汤姆猫Tom(序列帧动画)附详细注释》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。