0

我有几个动画,当它们被触发时,它们在执行之前会有不同长度的(无意的)延迟。

在里面viewDidLoad我有类似的东西:

NSString *fileName;
myArray = [[NSMutableArray alloc] init];
for(int i = 1; i < 285; i++) {
    fileName = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"HD1.2 png sequence/HD1.2_%d", i] ofType:@"png"];
    UIImage *image = [UIImage imageWithContentsOfFIle:fileName];
    [humptyArray addObject:image];
    //NSLog(@"Added object number %d: %@", i,regularImage);
}
falling.userInteractionEnabled = NO;
falling.animationImages = humptyArray;
falling.animationDuration = 6.3f;
falling.animationRepeatCount = 1;

我输入了,NSLog所以我可以确认数组中填充了图像,它就是这样。当我想触发我调用的动画时[falling startAniamting]。尽管数组已经预加载了图像,但在我触发动画和动画执行之间仍然存在延迟。

我该怎么做才能在触发动画时没有延迟?

4

2 回答 2

0
    @autoreleasepool {
            NSString *fileName;
            humptyArray = [[NSMutableArray alloc] init];
            dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
            dispatch_async(concurrentQueue, ^{   
            for(int i = 1; i < 285; i++) {
                fileName = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"HD1.2 png sequence/HD1.2_%d", i] ofType:@"png"];
                UIImage *image = [UIImage imageWithContentsOfFIle:fileName];
                [humptyArray addObject:image];
                //NSLog(@"Added object number %d: %@", i,regularImage);
            }
            falling.userInteractionEnabled = NO;
            falling.animationImages = humptyArray;
            falling.animationDuration = 6.3f;
            falling.animationRepeatCount = 1;
                dispatch_async(dispatch_get_main_queue(), ^{

                    [humptyArray release];

                });
            });
    }

Taken from my own answer in this other [SO question][1]


  [1]: http://stackoverflow.com/a/11364856/253008
于 2012-09-09T18:38:46.503 回答
0

您会发现 SO 上的人建议使用动画图像,但它会占用您所有的系统内存并且速度不快。请看一下我对smooth-video-looping-in-ios 的回答,它是在谈论循环视频,但问题是一样的。另请查看我对iphone-smooth-transition-from-one-video-to-another 的回答。这些链接上提供了 2 个示例 xcode 项目,这些项目展示了一个实现,该实现将开始快速播放并在没有任何故障的情况下循环播放,所有这些都不会耗尽所有内存并导致应用程序崩溃。

于 2013-07-02T18:42:57.543 回答