【汤姆猫的实现02 Objective-C语言】

一、刚才我们给大家实现了一个动画,

1.这个动画的思路就是,

1)为图片框设置一系列的图片,

2)告诉这个动画要持续多长时间,

3)告诉图片框动画重复的次数,

4)启动这个动画,

然后,图片框内部,会把这一系列的图片,自己内部做一个切换吧,

2.我们再来实现一个动画,这个动画是让汤姆猫放屁,英文叫fart,这个动画,

这个动画,大概是00-27张图片,组成的,

3.再拽一个按钮过来,这个按钮的文字去掉,image属性给个fart,

4.我们再来个敲头吧,一点汤姆猫的头,它就晕了,

拖一个按钮,调整大小,整好把汤姆猫的头盖住,把文字去掉,

第一个fart按钮,起名叫fart,

第二个knockout按钮,起名叫knockout,

然后给这两个按钮拖线,第一个fart按钮,拖线之后,Name参数,给个fart,Connection参数,给个Action,Argument参数,给个None,

第二个knockoout按钮,拖线之后,Name参数,给个knockout,Connection参数,给个Action,Argument参数,给个None,

5.接下来,我们把这两个动画实现一下,实现的思路如下:

1)首先,先把图片加载到一个数组里面,

2)设置UIImageView的animationImages属性为对应的图片集合,

3)设置动画持续时间,

4)设置动画重复次数,

5)启动动画,

6.我们看,fart对应的是哪些图片,是不是fart下划线_加一个对应的数字吧,

循环多少次啊,00-27,循环28次,

大家发现,这些代码,其实可以怎么样啊,

直接拷过来,是不是也行啊,

来,咱们拷过来,看一下哪些地方有变化,

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

NSMutableArray *arrayM = [NSMutableArray array];

for(int i=0;i<81;i++){

//拼接图片名称,

NSString *imgName = [NSString stringWithFormat:@“drink_%02d.jpg”,i];

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

UIImage *imgCat = [UIImage imageNamed:imgName];

//把图片加载到数组中,

[arrayM addObject:imgCat];

}

看一下,这个地方变成多少,

for(int i=0;i<81;i++){

00-27,是28次,这儿应该改成28,

NSString *imgName = [NSString stringWithFormat:@“drink_%02d.jpg”,i];

这个地方,还是drink吗,不是了,变成fart,

然后,把这些图片,都加载到这个数组里面,

接下来呢,是不是跟上面的代码也是一样的,

//2.设置UIImageView的animationImages属性为对应的图片集合,

self.imgViewCat.animationImages = arrayM;

//3.动画持续时间,

self.imgViewCat.animationDuration = 3;

其实这儿最好写成,多少张图片乘以0.1吧,

为了让它快点儿执行完,就写个3吧,

//4.重复次数

self.imgViewCat.animationRepeatCount = 1;

//5.启动动画,

[self.imgViewCat startAnimating];

看一下,加载图片,

大家看一下,这个动画,和上面那个动画,这些是不是都是一样的,

唯独就是循环次数不一样,

这儿图片名称不一样,

是不是只有这两个地方不一样啊,

我们看看能用吗,运行,是不是ok了,

6)那么,请问大家,我要实现敲头的动画,是不是可以直接command + C,command + V,拷过来啊,

我们看一下,敲头那个动画,是多少张,00-80,是不是也是81张啊,

这个名称叫做knockout下划线加数字啊,

敲头,是81,for(int i = 0 ; i < 81 ; i++) 然后呢,@“knockout_%02d.jpg”,

是不是只要把这两个地方改一下,代码直接拷过来,直接运行,就ok了吧,

运行一下看看,可以了吧,

我每次点这个敲头的按钮,是不是上一个动画还没完,又开一个新动画啊,

这样的话,就是这么一个效果,

3.那么,大家有没有发现,在我们这个代码里面,动画这个代码,不断的被command + C,command + V,

不断的拷贝,

这个时候怎么样,显然证明这些代码可以封装起来,统一用一个方法来表示啊,

记住,以后你写代码的时候,你发现,有段代码,在不断的command + C,command + V,在不断的复制、粘贴、重用,这个时候,证明你的代码,程序设计肯定有问题,

你说,这个command + C ,command + V,难道不叫代码重用吗,

这个不叫代码重用,

这个叫复制、粘贴,

肯定,100%,你哪儿设计,绝对能把它设计的更好,

所以,啥叫代码重用,继承,那个才叫代码重用呢,

也就是说,你写一个子类,继承自父类,父类中的代码,就不需要再写了,子类其实就可以用了吗,

比如说,你写好了一个模块,然后你把这个模块添加进来以后,那个模块中的所有的功能,直接就可以用了,这个才叫代码重用,不是复制、粘贴代码,那个不叫代码重用

代码重用是指的,类似于继承那样,你代码只写一次,别的地方可以直接拿来用,或者说,把这个代码封装在一个方法里面,别的地方要用的时候,直接调这个方法,或者说,一个模块写好了,别的模块添加进来,就可以直接用这个模块中的功能,这些叫代码重用,你发现代码如果重复写的话,这一定不叫代码重用,

所以说,我们发现,这几个方法里面,只有循环次数,和这个图片名称不一样,其他地方是不是都一样,

所以说,这个时候,我们就可以把这个代码优化一下,

那么,把这些动画,封装到一个方法中,

当你执行不同动画的时候,只要调那个方法,就ok了,

4.把这些动画的代码,封装到一个方法里面,

//执行动画的方法,

//这个方法就叫做,startAnimating,开始执行动画,

- (void)startAnimating{

//但是,这个执行动画,你每次执行的不同动画,是不是里面的循环次数,和它的循环的和那个动画的图片名称,是不是不一样,

所以说,这个地方得怎样,对,传一个参数,

第一个,是动画的什么,执行次数吧,

- (void)startAnimating:(int)count

第二个呢,是不是图片的名称,imgName,

- (void)startAnimating:(int)count imgName:(NSString *)imgName{

//code;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值