Android'de bir OpenGL ES Görünümü var, bu çeviri için bir matris tarafından kontrol ediliyor. Google maps uygulamasında veya iPhone'da görüldüğü gibi bir ivme kaydırmanın bir yolunu bulmaya çalışıyorum. Teşekkürler.pürüzsüz kaydırma/atalet kaydırma/momentum kaydırma
cevap
- Her karede
Kişisel onTouch geçen süre almak gerekir işlev parmağınızın hızlanmasını bulacak. Hızlanmanın bir mesafeden nasıl elde edileceğine dair formülü unuttum. Bir zaman değişkeni ile pozisyonun ikinci türevi olmalıdır. Ama her zaman deltaX'inizi hızlandırmanız gerekir. Bunu kolaylaştırmak için gerçekten doğru bir şey koymanıza gerek yok. Düzenleme: Neden görmedim bilmiyorum ama buradaki işlev her şeydeydi ...
acceleration.x = 2 (newposition.x - position.x - speed.x * elapsedTime)/(geçen Süre * geçen zaman);
Eğer hızlanma sahip olduktan sonra bu kodu ile yeni konumunu ayarlayabilirsiniz. Bu 2d'deki basit fizik dinamiğidir. Hızlanma ile hızınızı bulabilir ve hızınızla bir sonraki pozisyonunuzu bulabilirsiniz.
speed.x = (float) (mass * acceleration.x * elapsed + speed.x); speed.y = (float) (mass * acceleration.y * elapsed + speed.y); position.x += mass * acceleration.x/2 * elapsed * elapsed + speed.x * elapsed; position.y += mass * acceleration.y/2 * elapsed * elapsed + speed.y * elapsed; speed.x *= friction; speed.y *= friction;
Kütle ve sürtünme sen nasıl gidiyor hızlı tanımlamak ve kendi başına ne kadar hızlı yavaşlatacaktır izin verir. Muhtemelen yavaş yavaş geri kaydırmak zorunda kalmanız gerekiyorsa, bu dinamik tam olarak güzel olmadığı için kodu değiştirmeniz gerekecektir.
Her bir karenin sonunda, ivmesini sıfırlamanız gerekir (0,0). Her yeni çerçevede, bir dokunuştan sonra bile, ivme bir şeye ayarlanmalıdır.
- ölçün görünüşüdür kaydırmasını olduğu hızı.
- Kullanıcının ne zaman kaydırmayı durdurduğunu algıla.
- Kaydırma görüntüsünün gittiği hızı yavaş yavaş azaltın. Böyle
şey: Sorunun 2d ise
, oldukça basittirpublic void redraw() {
myScrollView.ySpeed = myScrollView.lastY-myScrollView.y;
myScrollView.xSpeed = myScrollView.lastX-myScrollView.x;
if (!userIsScrolling && ySpeed > 0) {
ySpeed--;
}
if (!userIsScrolling && xSpeed > 0) {
xSpeed--;
}
myScrollView.lastY = myScrollView.y;
myScrollView.y += ySpeed;
myScrollView.lastX = myScrollView.x;
myScrollView.x += xSpeed;
}
public void userStoppedScrolling() {
userIsScrolling = false;
}
Çok iyi çalışmalı, kullanıcı kaydırma hızını tam olarak nasıl kontrol edebildiğimi biliyor musunuz? Şu anda sadece kullanıcı parmaklarının başlangıç pozisyonu ve bitiş pozisyonu arasındaki deltayı hesaplar ve sonra matrise koyar. – jfisk
Üzgünüz, ben dokunmatik konum ve benzeri gibi özellikleri ile yardımcı olacak kadar iyi Android bilmiyorum. – Jumhyn
- 1. Pürüzsüz kaydırma efekti iOS'ta bir iframe'de çalışmaz
- 2. Fare tekerleği ve kaydırma çubuğunu kullanarak pürüzsüz dikey sayfa kaydırma
- 3. NestedScrollView, AppBarLayout ve CoordinatorLayout ile Pürüzsüz kaydırma ve Fling
- 4. ListBox, VirtualizingStackPanel ve Pürüzsüz Scrolling WPF içinde
- 5. jquery - slideToggle pürüzsüz değil
- 6. Pürüzsüz multiplayer hareketi
- 7. Pürüzsüz 3D spline
- 8. Pürüzsüz rotasyon geçişi CSS3?
- 9. Pürüzsüz renk değiştirme
- 10. Pürüzsüz istekAnimasyonJquery.animate kullanarak çerçeve?
- 11. SceneKit pürüzsüz kamera hareketi
- 12. Blob Storage'dan Pürüzsüz Akış Videosu
- 13. Pürüzsüz KineticJS animasyonu, kontrollü hız
- 14. Resmi döndürmüyor pürüzsüz gitmiyor (Monodroid)
- 15. Hareketli animasyon android pürüzsüz değil
- 16. HTML5 Canvas'da pürüzsüz yürüyüş spriteları
- 17. jQuery Paralaks Görüntü Mousewheel ile Kaydırırken Pürüzsüz Değil
- 18. JScrollPane - Düzgün Kaydırma
- 19. iOS için Pürüzsüz Scrolling iOS için SDK SDK
- 20. Highcharts.js: nasıl yığılmış grafik grafikler pürüzsüz olabilir?
- 21. Hist3 grafik pürüzsüz hale getirmek mümkün mü?
- 22. Kontrol pürüzsüz şeffaflık ve güven aralığı
- 23. Pürüzsüz kamera durma hareketi unity3d ios
- 24. CATextLayer metni nasıl pürüzsüz hale getirir?
- 25. actionscript3: bir bitmapi nasıl pürüzsüz hale getirilir?
- 26. Swift: Agar.io benzeri pürüzsüz SKCameraNode hareketi?
- 27. Kaydırma bölümleri rasgele kaydırma
- 28. QScroller Kinetik kaydırma düzgün değil
- 29. Kaydırma
- 30. GestureDetector onrollroll ile kaydırma Kaydırma
Cevabınıza bakıyordum ve hız formülünüzün hızlanması gerektiğinde hızlanmada nasıl hızlandığınızı merak ediyorum ... Birisi diğerine mi ihtiyaç duyuyor? – Dan
Hızın doğrudan hesaplanması yerine, hızlandırmanın kullanılması daha iyi sonuç verebilir. İlk hız ve ivme 0'dır. Bu yüzden, bir sonraki kareye eklemek için bir yere hız kaydetmelisiniz. Hızlanma, her bir çerçeve arasındaki değişiklikten başka bir şey değildir. Hızlanma deltaX, delta olabilir. Gerçek hız, deltaX * elapsedTime + lastSpeed olacaktır. Bu şekilde, bir kare çok zaman alsa veya az miktarda zaman alsa bile hız doğru olarak hesaplanır. Diğer parametreler, inerty ve sürtünme eklemek için biraz fiziksel olarak sahte. Sonsuza dek sürmesini istemiyorsun. –