gpt4 book ai didi

ios - 循环动画 - 不去

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:15:47 24 4
gpt4 key购买 nike

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

-(IBAction)startLoop:(id)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 setFromValue:DegreesToNumber(0)];
[rotation1 setToValue:DegreesToNumber(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];
}

最佳答案

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com