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 の人々が animationImages の使用を提案していることがわかりますが、システム メモリをすべて使い果たしてしまう可能性があり、高速ではありません。Smooth-video-looping-in-iosに対する私の回答をご覧ください。動画のループについて話していますが、問題は同じです。iphone-smooth-transition-from-one-video-to-anotherに対する私の回答もご覧ください。これらのリンクで利用可能な 2 つのサンプル xcode プロジェクトがあり、すべてのメモリを消費してアプリのクラッシュを引き起こすことなく、すぐに再生を開始し、グリッチなしでループする実装を示しています。

于 2013-07-02T18:42:57.543 に答える