2010-11-19 19 views
0

Bu sorunun gerçekten performansla ilgili olduğunu sanıyorum, ama aynı zamanda kaba bir akıl sağlığını kontrol etmeye çalışıyorum.iPhone: vektör animasyonu

Bir harita görünümü (harita görünümü ya da başka bir şeyin değişip değişmeyeceğine ve umarım önemsiz olmasına rağmen) gösteriyorum ve harita görünümünün üstünde şeffaf bir görünüm altsınıfına sahibim. Bu görünümün drawRect: yönteminde, çekirdek grafik çağrıları kullanarak görünümü çiziyorum; Daireler, gradyanlar, vs. Ne çiziyorum, süper karmaşık değil, ama önemsiz değil. Ardından, her X saniyede birnumaralı telefonu arayarak ve her zaman adımında ne çizdiğini (daire büyüdükçe, renkler ve degradeler değişir vb.) Çağıran bir NSTimer var.

Bu tür vektör tabanlı animasyonları gerçekleştirmenin doğru yolu bu mu? Ben çok düşük performans alıyorum X etkili bir şekilde yaklaşık 0.25 daha iyi gibi görünüyor. 0.05 ya da daha küçük isterim. Bir şeyler yapmanın başka bir yolu var mı? Stratejik olarak kapalı olduğumu hissediyorum, ya da bu boşuna. CoreAnimation ile işleri yapabilirim - örneğin resimleri büyütmek ve küçültmek, ve bu yüzden çok hızlı (neden?), Ama bana istediğim kontrolü vermez ...

DAHA FAZLA BİLGİ: çizim karmaşıklığını azaltma (daha az daire, degradeler, öylesine) çizim hızlandırmayı önemli ölçüde hızlandırıyor, ancak pürüzsüz bir animasyon elde etmek için neredeyse hiçbir şey çizmem gerekiyor. Bu NSTimer stratejisi bile gitmek için doğru yol mu? Vektör çizim yapmak için başka bir yolu var mı?

+0

Bu dava, backticks çevreleyen tarafından). Http://daringfireball.net/projects/markdown/syntax adresine bakın. –

+0

Mümkün [Çekirdek Grafik animasyonlu çizim (iPhone) optimize] (http://stackoverflow.com/questions/3310883/optimize-core-graphics-animated-drawing-iphone) –

+0

oh tatlı, bu bağlantı gerçekten yararlıdır. Teşekkürler! – Colin

cevap

0

Animasyonların bazılarını/tümünü gerçekleştirmek için bazı Temel Animasyonlardan yararlanmanız mümkün mü? Örneğin, boyut değiştiren bir çemberi yeniden çizmek yerine, onu yalnızca bir boyut olarak oluşturup üzerinde bir ölçek dönüşümü canlandırabilir mi? Yalnızca birkaç nesneyi canlandırıyorsanız, her birini görünümünüzün alt katmanı olarak eklemeyi ve ardından her şeyi manuel olarak yeniden çizmeyi denemek yerine bazı Temel Animasyon animasyonlarını bir araya getirmeyi deneyebilirsiniz. Apple'ın Haritalar uygulamasındaki mavi çevrelere bakarsanız, dışarı doğru yayıldığında (bir düzeltme alırken), keskin bir şekilde başladığını ve büyüdükçe biraz bulanıklaştıklarını görebilirsiniz. Amaç için iyi çalışıyor ve küçük bir dairesel görüntüyü ölçeklediklerini sanıyorum. Bu tür bir şey uygulamanız için işe yarar mı?

Hangi animasyonları gerçekleştirdiğiniz hakkında daha iyi bir fikre sahip olmadan performansı nasıl artırabileceğini söylemek zor. Bu üzerinde durulabilecek bir şey mi? (Içinde

(ben bir yorum olarak bu yayınlanmıştır olurdu, ama bunun için gerekli itibar sadece utangaç) Bu Kodu doğru biçimlendirmek olsaydınız sorunuzu okumaya çalışıyorum kişiler için yararlı olacağını

+0

Maalesef, bunun doğru cevap olduğunu düşünüyorum. Ben bunu - prerender şeyler yaptım ve daha sonra CoreAnimation ile animasyonlu. İstediğimin çoğunu yapmak için alabilirim ve gerçekten pürüzsüz. Talihsiz diyorum, çünkü gerçekten de vektör animasyonu yapmak için bir yol olmalı. Oh iyi. – Colin