2011-01-05 2 views
3

я хочу KNW альтернативный к этой анимации код ..кадр за кадром анимации

-(void)movetree{ 
    //[tree1 release]; 
    treeMove = YES; 
    tree1.animationImages = [NSArray arrayWithObjects: 
     [UIImage imageNamed:@"moving trees1.png"], 
     [UIImage imageNamed:@"moving trees2.png"], 
     [UIImage imageNamed:@"moving trees3.png"], 
     [UIImage imageNamed:@"moving trees4.png"], 
     [UIImage imageNamed:@"moving trees5.png"], 
     [UIImage imageNamed:@"moving trees6.png"], 
     [UIImage imageNamed:@"moving trees7.png"], 
     [UIImage imageNamed:@"moving trees8.png"], 
     [UIImage imageNamed:@"moving trees9.png"], 
     [UIImage imageNamed:@"moving trees10.png"], 
     [UIImage imageNamed:@"moving trees11.png"], 
     [UIImage imageNamed:@"moving trees12.png"], 
     [UIImage imageNamed:@"moving trees13.png"], 
     [UIImage imageNamed:@"moving trees14.png"], 
     [UIImage imageNamed:@"moving trees15.png"], 
     [UIImage imageNamed:@"moving trees16.png"], 
     [UIImage imageNamed:@"moving trees17.png"], 
     [UIImage imageNamed:@"moving trees18.png"], 
     [UIImage imageNamed:@"moving trees19.png"], 
     [UIImage imageNamed:@"moving trees20.png"], 
     [UIImage imageNamed:@"moving trees21.png"], 
     [UIImage imageNamed:@"moving trees22.png"], 
     [UIImage imageNamed:@"moving trees23.png"], 
     [UIImage imageNamed:@"moving trees24.png"], 
     [UIImage imageNamed:@"moving trees25.png"], 
     [UIImage imageNamed:@"moving trees26.png"], 
     [UIImage imageNamed:@"moving trees27.png"], 
     [UIImage imageNamed:@"moving trees28.png"], 
     [UIImage imageNamed:@"moving trees29.png"], 
     [UIImage imageNamed:@"moving trees30.png"], 
     [UIImage imageNamed:@"moving trees31.png"], 
     [UIImage imageNamed:@"moving trees32.png"], 
     [UIImage imageNamed:@"moving trees33.png"], 
     [UIImage imageNamed:@"moving trees34.png"], 
     [UIImage imageNamed:@"moving trees35.png"], 
     [UIImage imageNamed:@"moving trees36.png"], 
     [UIImage imageNamed:@"moving trees37.png"], 
     [UIImage imageNamed:@"moving trees38.png"], 
     [UIImage imageNamed:@"moving trees39.png"], 
     [UIImage imageNamed:@"moving trees40.png"], 
     [UIImage imageNamed:@"moving trees41.png"], 
     [UIImage imageNamed:@"moving trees42.png"], 
     [UIImage imageNamed:@"moving trees43.png"], 
     [UIImage imageNamed:@"moving trees44.png"], 
     [UIImage imageNamed:@"moving trees45.png"], 
     [UIImage imageNamed:@"moving trees46.png"], 
     [UIImage imageNamed:@"moving trees47.png"], 
     [UIImage imageNamed:@"moving trees48.png"], 
     [UIImage imageNamed:@"moving trees49.png"], 
     [UIImage imageNamed:@"moving trees50.png"], 
     [UIImage imageNamed:@"moving trees51.png"], 
     [UIImage imageNamed:@"moving trees52.png"], 
     [UIImage imageNamed:@"moving trees53.png"], 
     [UIImage imageNamed:@"moving trees54.png"], 
     [UIImage imageNamed:@"moving trees55.png"], 
     [UIImage imageNamed:@"moving trees56.png"], 
     [UIImage imageNamed:@"moving trees57.png"], 
     [UIImage imageNamed:@"moving trees58.png"], 
     [UIImage imageNamed:@"moving trees59.png"], 
     [UIImage imageNamed:@"moving trees60.png"],nil]; 

// all frames will execute in 1.75 seconds 
tree1.animationDuration =1.75; 
// repeat the annimation forever 
tree1.animationRepeatCount = 0; 
// start animating 

[tree1 startAnimating]; 
// add the animation view to the main window 
//[bgview addSubview:campFireView]; 

[tree1 release]; 

player.numberOfLoops = -1; 
[player play]; 


} 

Есть ли другой способ показать анимации с использованием кадров ?? этот метод кажется более тяжелым, и он аварийно завершает работу.

+0

Я предполагаю, что он разбился, потому что для 60 UIImage выделено слишком много памяти. Можете ли вы сказать, где это происходит, и что такое сообщение об ошибке? – Felix

+0

сбой с EXEC_BAD_ACCESS :( – Hisenberg

+0

Я не уверен, что вы должны называть 'release' сразу после' startAnimating' –

ответ

4

Попробуйте использовать PNG Animation method by Moses DeJong. С его слов:

Этот пример реализует ориентированный подход контроллер анимации , что просто ожидает, чтобы считывать данные с PNG изображения для кадра до тех пор, пока это необходимо. Вместо alllocating много мегабайт, этот класс работает примерно в половине мегабайта памяти с примерно 5-10% загрузки процессора на iPhone второго поколения.

Я считаю, что в основном использует UIImageView для кэширования AVAudioPlayer.

+3

PNG Пример анимации, упомянутый выше, будет делать основы без сбоев из-за нехватки памяти (почему ваш код падает). Более полная реализация, которая значительно оптимизирована, может быть найдена здесь: http://www.modejong.com/AVAnimator/ –

+0

Похоже, что сам человек сказал ... Привет @MoDJ, который вы могли бы предложить и отредактировать, или, еще лучше (для вас), добавили свой собственный ответ. ;) - но спасибо за комментарий! :) – cregox

0

есть обратный звонок для анимации, что-то вроде анимации завершено, [self performSelector:@selector(stopAnimation) withObject:nil afterDelay:3]; cant запомнить offhand - но обычным способом является то, что после анимации этот метод называется и тогда вы можете освободить. Обычный EXC_BAD_ACCESS может быть одним или несколькими вашими изображениями не существует, дважды проверьте все имена изображений и проверьте, существуют ли они в вашей папке ресурсов. BUt это единственное, насколько я знаю для анимационных образов. Вспомогательная ссылка http://iosdevelopertips.com/graphics/animated-gif-animated-images-iphone-style.html

+0

Что происходит, когда я вызываю анимацию xib first..everything работает f9..but, если я сначала вызову любой другой xib, а затем перейду к анимации xib..it сбой .. :( – Hisenberg

Смежные вопросы