• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 循环动画 - 不去

[复制链接]
菜鸟教程小白 发表于 2022-12-13 13:40:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我试图在一个循环内重复一系列动画,在每个循环中随机更改一些参数。这是代码。请问有人知道为什么它不起作用吗? 如果我用按钮操作调用它一次,它可以工作,但循环它不会。 非常感谢!朱塞佩

-(IBAction)startLoopid)sender {
    for (int i=1;i<10; i++) {
        [self animation2];
    }
}


-(id) animation2 {

    int max=500;
    UIImage *myImage = [UIImage imageNamed"coccinella2.png"];
    CALayer *myLayer = [CALayer layer];
    myLayer.contents = (id)myImage.CGImage;
    myLayer.bounds = CGRectMake(0, 0, 50, 60);
    [myLayer setPosition:CGPointMake(arc4random()%(max), arc4random()%(max))];
    [myLayer setBounds:CGRectMake(0.0, 0.0, 50.0, 60.0)];
    [self.view.layer addSublayer:myLayer];


    //translation1
    CGPoint startPt = CGPointMake(arc4random()%(max),arc4random()%(max));
    CGPoint endPt = CGPointMake(arc4random()%(max),arc4random()%(max));
    CABasicAnimation *transl1 = [CABasicAnimation animationWithKeyPath"position"];
    transl1.removedOnCompletion = FALSE;
    transl1.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    transl1.fromValue = [NSValue valueWithCGPoint:startPt];
    transl1.toValue = [NSValue valueWithCGPoint:endPt];
    transl1.duration = 2.0;
    transl1.fillMode = kCAFillModeForwards;
    transl1.beginTime = 0;

    //scale 1
    CABasicAnimation *scale1 = [CABasicAnimation 
                                animationWithKeyPath"transform.scale"];
    scale1.removedOnCompletion = FALSE;
    [scale1 setToValue:[NSNumber numberWithInt:3]];
    [scale1 setDuration:2.0f];
    scale1.fillMode = kCAFillModeForwards;
    scale1.beginTime = 0;

    //rotation1
    CABasicAnimation *rotation1 = [CABasicAnimation 
                                   animationWithKeyPath"transform.rotation.z"];
    rotation1.removedOnCompletion = FALSE;
    [rotation1 setFromValueegreesToNumber(0)];
    [rotation1 setToValueegreesToNumber(90)];
    //rotation1.repeatCount = HUGE_VALF;
    [rotation1 setDuration:2.0f];
    rotation1.fillMode = kCAFillModeForwards;
    rotation1.beginTime = 0;

    //group
    CAAnimationGroup* group = [CAAnimationGroup animation];
    [group setDuration: 6.0];
    group.removedOnCompletion = FALSE;
    group.fillMode = kCAFillModeForwards;
    [group setAnimations: [NSArray arrayWithObjects:scale1, transl1, rotation1, nil]];
    [myLayer addAnimation: group forKey:  nil];
}



Best Answer-推荐答案


您的代码不会重复注释 10 次,而是立即启动 10 个动画。如果您的目标是在前一个动画结束后开始动画,您应该尝试使用 NSTimer

关于ios - 循环动画 - 不去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10479949/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap