2009-12-08 29 views
5

Tôi đang cố gắng thực hiện một số loại hoạt ảnh của một lớp trong ứng dụng iPhone của mình. Nó không quan trọng những gì tôi làm tôi luôn luôn có được kết quả tương tự: sau khi các hình ảnh động được thực hiện nó giật trở lại vào vị trí ban đầu của nó. Mặc dù tôi đặt removedOnCompletion thành sai nhưng không có sự khác biệt.Làm thế nào để chuyển đổi Hoạt ảnh cốt lõi của tôi luôn quay trở lại trạng thái bắt đầu?

Tôi thiếu gì ở đây?

Cảm ơn trước!

EDIT: Thực sự cần trợ giúp với một người này. Tôi đang tạo hoạt ảnh với các đối tượng CAKeyframeAnimationCABasicAnimation, sau đó thêm chúng vào một số CAAnimationGroup mà tôi lần lượt đến lớp. Hoạt ảnh hoạt động như dự đoán ngoại trừ việc nó luôn quay trở lại trạng thái ban đầu của nó. Đây là trường hợp mặc dù tôi đặt removedOnCompletion = NO; trên tất cả các đối tượng hoạt hình và nhóm hoạt ảnh.

Một số hãy chỉ cho tôi đi đúng hướng! Tôi sống ở khu vực Stockholm, tôi sẽ mua cho bạn một chiếc cà phê. =) Mã mới được đăng bên dưới:

CABasicAnimation *leveloutLeafAnimation = [CABasicAnimation animationWithKeyPath:@"transform"]; 
leveloutLeafAnimation.removedOnCompletion = NO; 
leveloutLeafAnimation.duration = 1.0; 
leveloutLeafAnimation.repeatDuration = 20; 
CATransform3D transformLeafToRotation = CATransform3DMakeRotation(0.0, 0.0, 0.0, 1); 
CATransform3D transformLeafFromRotation = CATransform3DMakeRotation([self _degreesToRadians:270.0], 0.0, 0.0, 1); 
leveloutLeafAnimation.fromValue = [NSValue valueWithCATransform3D:transformLeafFromRotation]; 
leveloutLeafAnimation.toValue = [NSValue valueWithCATransform3D:transformLeafToRotation]; 

//Create an animation group to combine the animations. 
CAAnimationGroup *theAnimationGroup = [CAAnimationGroup animation]; 

//The animationgroup conf. 
theAnimationGroup.delegate = self; 
theAnimationGroup.duration = animationDuration; 
theAnimationGroup.removedOnCompletion = NO; 
theAnimationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
theAnimationGroup.animations = [NSArray arrayWithObjects:leveloutLeafAnimation, leafMoveAnimation, nil]; 

// Add the animation group to the leaf layer. 
[leafViewLayer addAnimation:theAnimationGroup forKey:@"animatLeafFalling"]; 

Trả lời

3

Không chắc chắn điều này có hữu ích hay không, nhưng this guy có vẻ như anh ấy đang gặp sự cố tương tự.

Bạn có thể phải đặt thuộc tính transform của lớp trong khi hoạt ảnh đang chạy đến transformLeafToRotation.

Chúc may mắn!

+0

Cảm ơn rất nhiều Frank Schmitt! Bạn là người đàn ông. theAnimationGroup.fillMode = kCAFillModeForwards; Là chìa khóa. Nếu bạn đến Stockholm tôi nợ bạn một coffe. =) – ABeanSits

Các vấn đề liên quan