i'm trying to animate a sprite-sheet made with Texture Packer using Core Animation.

I have a NSCollection with all my sprite contents. (Keys and CGImageRef's)

My Collection {
"caja01.png" = "<UIImage: 0x1cda57c0>";
"caja02.png" = "<UIImage: 0x1cda61d0>";
"caja03.png" = "<UIImage: 0x1cda62e0>";
"caja04.png" = "<UIImage: 0x1cda63f0>";
"caja05.png" = "<UIImage: 0x1cda6540>";
"caja06.png" = "<UIImage: 0x1cda6650>";
"caja07.png" = "<UIImage: 0x1cda6760>";
"caja08.png" = "<UIImage: 0x1cda68f0>";
}

And i try to animate using CAKeyframeAnimation:

NSArray *values = [self.mySprites allValues]; // Get the CGImageRef's from NSDictionary

// Creating a new layer
CALayer *sublayer = [CALayer layer];
sublayer.backgroundColor = [UIColor blueColor].CGColor;
sublayer.frame = imagen.frame;
[self.view.layer addSublayer:sublayer];

// Create an first image from Sprite-sheet
UIImageView *imagen  = [[UIImageView alloc]initWithImage:[self.mySprites objectForKey:@"caja01.png"]];

// And add initial content to my layer
sublayer.contents = (id) imagen.image.CGImage;

// Try to make the animation
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath: @"contents"];
animation.calculationMode = kCAAnimationDiscrete;
animation.duration = 10.0;
[animation setValues:values];
[animation setRepeatCount:2];
[animation setRemovedOnCompletion:NO];
[sublayer addAnimation: animation forKey: @"contents"];

But it does not work, nothing happens on the screen. Any suggestions? Thanks!

有帮助吗?

解决方案

My suggestion is "don't do that." You're trying to implement a technique, sprite sheets, that is made to solve a problem that isn't relevant to Core Animation.

The reason for sprite sheets is to deal with the memory management issues in OpenGL (and other graphics APIs). Core Animation works differently, so implementing sprite sheet animation in CA is not a good fit.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top