約10秒の間にアニメーションしたい画像が200枚以上あります。animationImages
画像を配列に読み込んでからメソッドを呼び出して使用してみましたstartAnimating
。これはシミュレーターでは問題なく動作しましたが、iPadがクラッシュしました。
1/25秒ごとに呼び出してNStimer
、タイマーが作動するたびに画像を変更してみました。これは以前の方法よりもパフォーマンスが良く、シミュレーターではうまく機能しましたが、iPadの(ラグのある)アニメーションの終わり近くでもクラッシュしました。
誰かが私を助けて、この問題に取り組む理想的な方法を教えてもらえますか?ありがとう。
元のコード:
- (void) humptyFallingAnim {
NSString *filename;
if (humptyImageCounter < 285) {
filename = [NSString stringWithFormat:@"Humpty Animation HD1.2 png sequence/humpty_HD1.2_%d.png", humptyImageCounter];
UIImage *someImage = [UIImage imageNamed:filename];
humptyFalling.image = someImage;
NSLog(@"loaded image: %d", humptyImageCounter);
humptyImageCounter++;
} else {
NSLog(@"Timer invalidated");
[humptyTimer invalidate];
humptyTimer = nil;
}
}
編集:私のために働いていないいくつかの新しいコード
NSString *filename;
if (humptyImageCounter < 285) {
filename = [NSString stringWithFormat:@"Humpty Animation HD1.2 png sequence/humpty_HD1.2_%d.png", humptyImageCounter];
@autoreleasepool {
UIImage *someImage = [UIImage imageWithContentsOfFile:filename];
humptyFalling.image = someImage;
NSLog(@"loaded image: %d", humptyImageCounter);
}
humptyImageCounter++;
} else {
NSLog(@"Timer invalidated");
[humptyTimer invalidate];
humptyTimer = nil;
}
編集2:
-(void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
NSLog(@"You shook it!");
[self.view bringSubviewToFront:imgSnail];
if (deviceHasBeenShaken == 0) {
deviceHasBeenShaken = 1;
}
humptyTimer = [NSTimer scheduledTimerWithTimeInterval:(1/25) target:self selector:@selector(humptyFallingAnim) userInfo:nil repeats:YES];
[self moveHumptyPosition];
}