2009-06-19 18 views
11

iPhone'un, Apple'ın "genieEffect" ve "slurpEffect" gibi kullandığı özel efektler listesi vardır. Ben slurp etkisi (bir posta iletisi veya bir notu çöp kutusu budur) uygulanması hakkında nasıl giderdiğini merak ediyorum.iPhone'da slurp efekti nasıl uygulanır?

Çekirdek Animasyon'u nasıl kullanacağımı anlıyorum, ancak bu animasyonu almak için tam olarak hangi bölümlerini kullandıklarından emin değilim. etki için özel API kullanarak yaklaşık

+0

Spesifik olarak, özel API'yi kullanmaktan ziyade (ya da benzer bir şekilde) efektin nasıl etkileneceğini araştırıyorum (uygulamam reddedilir). – Itay

cevap

1

Bu mesaj görüşmeler: link text

+0

Özel API'yi kullanarak etkinin nasıl elde edileceğini anlıyorum, ancak bu benim reddedilmemesi için uygulamamı tercih ettiğimden de değil :) Özellikle, efektin kendimi nasıl etkilediğini arıyorum (Veya benzeri). – Itay

+0

Teknik olarak ... bu belgelenmemiş bir API, özel bir API değil mi? Herkese açık işlev çağrılarını kullanmaya devam ediyor gibi görünüyor. Sanırım bu kullanmanın güvenli olduğunu düşünüyorum, ama bir bayrak atmak istiyorum, bu yüzden eğer katılmıyorlarsa bir topal etkiye geri dönebilirsiniz. –

+1

Doğru olduğuna inanıyorum, ama sezgilim bana başka türlü söylüyor. Birisinin bunu nasıl uygulayacağı konusunda bir fikri olmadığı sürece muhtemelen farklı bir geçişle çıkacağım. – Itay

1

2B ve 3B dönüşümler karmaşık bir birleşimi gibi görünüyor. : - \ Bu etkiyi simüle etmek için CoreAnimation'a gerçekten girmelisiniz.

1

Bunu, görünüm katmanına uygulanan bir affine dönüşümü ile yapardım. Lineer cebir benim güçlü noktası değildir;) bu yüzden tam dönüşüm belirleyemezsiniz ama benim tahminim animasyon için böyle bir şey olurdu: alfa Set

    yakın 0.0 veya şeye solmaya
  • bir merkeze yakın iki alt köşeleri ezmek için dönüşümü uygula
  • Ölçek
  • hareket katmanın merkezi aşağı ekranın altındaki (veya yere siz durdurana cinim istediğiniz için çok küçük görünüm aşağı.

Bu, ne kadar işe yarayacağını düşünüyorum. Bu şeyleri farklı zamanlarda veya tek bir blokta canlandırmak zorunda kalabilirsiniz, emin değilim.

CALayer, CABasicAnimation ve CGAffineTransform belgelerine göz atın.