IOS开源项目--僵尸来袭

僵尸来袭的画面大家有没有想过。那么如果如何通过OC来实现呢。闲来无事写了一个开源项目放到github共享。下面一起分析一下核心代码。网上找来4张图片。每张图片里面有8个僵尸。我们需要切图来把8个僵尸放到一个数组中,然后使用数组动画。我们需要一个僵尸类,下面有4个子类。每一种僵尸有自己的奔跑速度。这又涉及到继承和派生的概念。还需要引入定时器。
软件结构如下:
这里写图片描述
viewController中随机出僵尸

- (void)viewDidLoad {
    [super viewDidLoad];
    self.zombs = [NSMutableArray array];

    //    for (NSInteger i = 0; i < 100; i++) {
    //        Zomb *z = [[Zomb alloc]initWithFrame:CGRectMake(arc4random()%300, arc4random()%600, 30, 50)];
    //        [z beginAnimation];
    //        [self.view addSubview:z];
    //    }


    [NSTimer scheduledTimerWithTimeInterval:.1 repeats:YES block:^(NSTimer * _Nonnull timer) {

        int type = arc4random()%4;
        Zomb *zomb = nil;
        switch (type) {
            case 0:
                zomb = [[ZombA alloc]initWithFrame:CGRectMake(375, arc4random()%600, 30, 50)];
                break;
            case 1:
                zomb = [[ZombB alloc]initWithFrame:CGRectMake(375, arc4random()%600, 30, 50)];
                break;
            case 2:
                zomb = [[ZombC alloc]initWithFrame:CGRectMake(375, arc4random()%600, 30, 50)];
                break;
            case 3:
                zomb = [[ZombD alloc]initWithFrame:CGRectMake(375, arc4random()%600, 30, 50)];
                break;
        }
        [zomb beginAnimation];
        [self.view addSubview:zomb];
        [self.zombs addObject:zomb];
    }];

僵尸类中,切图,并组成僵尸动画

-(void)beginAnimation{

    UIImage *zombImage = [UIImage imageNamed:self.zombImage];

    NSMutableArray *zombImages = [NSMutableArray array];

    float w = zombImage.size.width/8;
    float h = zombImage.size.height;

    for (NSInteger i = 0; i < 8; i++) {
        CGImageRef subImage = CGImageCreateWithImageInRect(zombImage.CGImage, CGRectMake(i*w, 0, w, h));
        UIImage *image = [UIImage imageWithCGImage:subImage];
        [zombImages addObject:image];
        //释放图片资源
        CGImageRelease(subImage);
    }


    //开启每个僵尸的动画
    self.animationImages = zombImages;
    self.animationDuration = 1;
    self.animationRepeatCount = 0;
    [self startAnimating];

}

实现效果如下:
这里写图片描述
所有源代码以及图片请在github下载:
https://github.com/lee727n/zombie-wave

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值