Farzedeyim ve çocukları için .animate({opacity:0},400, function(){});
kullanıyorum. Bir animasyonun tamamlanması için kalan süreyi elde etmek mümkün mü? ör. 200 ms geri kaldı ya da animasyon yoksa 0 mı? Teşekkürler.Kalan animasyon süresini elde etmenin bir yolu var mı?
cevap
ben kalan süreyi almak için adım işlevini kullanarak bir örnek oluşturdu
[gdoron tarafından gönderildi olarak] step
fonksiyonunu nasıl kullanabileceğinizi daha iyi anlamanıza yardımcı olmak için:
(animasyonu durdurmak ve kalan süreyi geri almak için get state!
düğmesini tıklatın!)
Mesafe örneği jQuery
var time = 4000;
var distance = 300;
var currentTime = 0;
$('#ball').animate({
left: distance
}, {
duration: time,
step: function (now, fx) {
currentTime = Math.round((now * time)/distance);
var data = fx.prop + ' ' + Math.round(now) + '; <b>' + currentTime + 'ms</b> ';
$('body').append('<p>' + data + '</p>');
},
easing: 'linear'
});
$('#getTime').click(function() {
$('#ball').stop();
$('body').prepend('<p>currentTime is:' + currentTime + ' ms; REMAINING: ' + (time - currentTime) + 'ms</p>');
});
- Sen Şu anda animasyonlu (
left
) özelliği almaanimation step
içeridefx.prop
kullandığını görebilirsiniz. kolayca alabilirsiniz (ne olursa olsun ... opaklığı) animasyon zaman ve mesafe bilerek döndünow
değere bazı basit matematik ((now*time)/distance
) ve sayesinde devleti 'durdurulmuş/durdurulmuş': - Sen nasıl görebilirsiniz .
Teşekkürler bu çok yararlı! Ve adım fonksiyonunu sadece değişken yazımla sınırlandırırsak performansa fazla vurmayacak gibi görünüyor. Her neyse, her 1 ms veya bir şey çağrılmayacak. – Anonymous
@ user1125062 Yapmamalıyız, çünkü sadece animasyonumuzu yürütmekte olan bir şeye erişiyoruz. –
İhtiyacın neden hiçbir fikrim yok, ama step
Bu değeri ayıklamak yardımcı olabilir:
Adım İşlevini
.animate ikinci versiyonu() Bir adım seçeneği sağlar - Animasyonun her adımında tetiklenen bir geri çağırma işlevi. Bu işlev, özel animasyon türlerini etkinleştirmek veya animasyonu meydana geldiğinde değiştirmek için kullanışlıdır. İki argümanı (şimdi ve fx) kabul eder ve bu, animasyonlu DOM öğesine ayarlanır. Şimdi
: özelliğinin sayısal değer her aşamada hareketli olan
FX: örneğin hareketli eleman, bir başlangıç elem gibi özelliklerin bir dizi içerir jQuery.fx prototip nesnesine başvuru, ve sırasıyla animasyonlu özelliğin ilk ve son değeri için sonlandırın ve animasyonlu mülk için teklif verin.
hmmm, ama bununla ne yapmam gerekiyor? :) – Anonymous
@ user1125062. Mevcut değeri, ilk değeri, son değeri vb. Alabilirsin, sadece onunla oyna. Her neyse, yapmaya çalıştığınız şeyi yapmanın başka yolları olduğundan eminim ... – gdoron
SetInterval veya bu yöntem olmadan, hayır, AFAIK. Bunu elde etmenin tek yolu bunlar. – inhan
Dinleyin, herkesin hakkında konuşmaya devam ettiği step
işlevini boş verin. Bir keresinde ne yaptığınıza ve kendi yazmamın tam tersini koydu. Bu, toplam animasyon zamanına (bu sayıyı jQuery'ye verdiğinizden beri zaten bilinmelidir) ve katsayısının mevcut ve hedef opaklık. Daha sonra, bu bölümü toplam animasyon süresiyle çarpın, toplamın toplam süreden çıkarılmasını sağlayın. Bu kadar basit.
Sözde kod: Sadece meraktan
func calculate-time-left-in-a-running-fade-in-animation:
{
var current_opacity = $elem.css('opacity');
var target_opacity = this.getTargetOpacity();
var total = this.getTotalAnimationTime();
var quotient = current_opacity/target_opacity;
return total - quotient * total;
}
İlginç bir yaklaşım, bununla ilgili değil! Hassasiyet önemliyse de, adım tek yoldur. – Anonymous
Öznitelik değerinin kendiliğinden geri alınması veya şimdi değişkenin kullanılması, animasyon duraklatıldığı sürece aynı şeydir. JQuery adımında @roXon, canlandırmanın her adımında çok fazla yükün olacağını gösterdi. Hatta aslında yaptığı gibi küresel değişkenleri tanıtabilir. Animasyonu hesaplamadan önce duraklatmayı (örneğin, örnekte olduğu gibi) durdurmayı ve sonradan animasyonu programa göre sürdürmeyi düşünüyorsanız, o zaman kesinlikle hiçbir fark yoktur. Bu hesaplanan değeri çalışan bir animasyon altında almanın aynı sonuçları üreteceğini bile söyleyebilirim. –
Adım mantığının depolanan ürünü, kalan sürenin hesaplanan değeri, canlı bir liste gibi değildir, değer kendisini en üst düzeyde doğru değere güncellemez. Ve her nerede kullanırsanız kullanın, her zaman kullandığınız "eski" bir hesaplama olmayacaktır. Hatta teoride, hassasiyeti engelleyen, bu bilgi boşluğunu, adım fonksiyonunu birleştirmekten sorumlu bir orta erkeğe sahip olacaksınız. Fakat bunun yerine, aynı zamanda, aynı zamanda, hesaplamak için ihtiyacınız olan zamana, aynı zamanda, daha doğru bir sonuç vermez miydiniz? Hem kodun okunabilirliği hem de iş yükünün işlenmesinde daha ucuz. –
- 1. Bir uyarı kutusunun kaynağını elde etmenin bir yolu var mı?
- 2. UITableView scrollToRowAtIndexPath üzerinde animasyonu kontrol etmenin bir yolu var mı?
- 3. Geçerli animasyon bloğunun animasyon süresini öğrenin
- 4. Bir EntityManager'dan tüm yönetilen varlıkları elde etmenin bir yolu var
- 5. CID'si ile bir İÇN hakkında bir JSON elde etmenin bir yolu var mı?
- 6. shapely.geometry.shape.contains (a_point) çağrısının hızını optimize etmenin bir yolu var mı?
- 7. JavaScript - Varsayımsal CSS stilleri uygulandıktan sonra bir öğenin offsetTop'unu elde etmenin bir yolu var mı?
- 8. php veya javascript kullanmadan içeriğine sığacak şekilde bir textarea elde etmenin bir yolu var mı?
- 9. C# görevini eşzamanlı olarak çalıştırma ve sonucu bir satır kodla elde etmenin bir yolu var mı?
- 10. Eşzamansız bir yöntemi senkronize etmenin genel bir yolu var mı?
- 11. "isForEachable" için bir değişken test etmenin bir yolu var mı
- 12. Bir apk'nın gizlenip gizlenmediğini tespit etmenin bir yolu var mı?
- 13. Uzak görüntü boyutlarını elde etmenin hızlı yolu
- 14. Sonuç kümesiyle JPA Adlandırılmış Sorgu için sayı boyutunu elde etmenin bir yolu var mı?
- 15. YouTube API v3'ü kullanarak "Daha Sonra İzle" oynatma listesini elde etmenin bir yolu var mı?
- 16. Daha önce tanımlanmış Sequelize Modeline göre öznitelikleri // ilişkilendirmeleri elde etmenin bir yolu var mı?
- 17. WebView.getSettings(). GetUserAgentString() ürününün önüne varsayılan kullanıcı aracı dizesi elde etmenin bir yolu var mı?
- 18. Mheen profili aktivasyonunun mülkiyete göre tersini elde etmenin bir yolu var mı?
- 19. Atlassian Bamboo'da, görüntü olarak en son yapı durumunu elde etmenin herhangi bir yolu var mı?
- 20. Kaydırma çubuğu yüksekliği ve genişliğini elde etmenin bir yolu var mı?
- 21. Ortak iletişim düğmelerinin yerelleştirilmiş isimlerini elde etmenin bir yolu var mı?
- 22. Kestrel/ASP.NET Çekirdeğinde istek kuyruğunda harcanan süreyi elde etmenin bir yolu var mı?
- 23. Liste görünümünde alt öğe sayısını elde etmenin bir yolu var mı?
- 24. Hata ayıklama bilgisi devre dışı bırakıldığında DOM öğesinin kapsamını elde etmenin bir yolu var mı?
- 25. Scaladoc'u IntelliJ Idea'ye entegre etmenin kolay bir yolu var mı?
- 26. C++ için doxygen'i optimize etmenin bir yolu var mı?
- 27. Çerezin httponly olup olmadığını kontrol etmenin bir yolu var mı?
- 28. SQLAlchemy Bağlantısını test etmenin bir yolu var mı?
- 29. Yüklediğiniz hangi gulp versiyonunu kontrol etmenin bir yolu var mı?
- 30. Bilgisayarımda 4K çözünürlüğünü simüle etmenin bir yolu var mı?
... neden bu değeri gerek? –
@ RokoC.Buljan. Sanırım bir hobi. O koleksiyon animasyonları kez. – gdoron
Çocuklara bazı geri aranmaların sıraya konmasıyla ilgili bir sorunum var - her zaman tetiklenmiyor ve hangi çocuğun sıraya koyulduğunu belirlemek kolay değil, bu yüzden daha güvenilir hale getirmek için setTimeout ile denemek istedim. – Anonymous