2016-04-05 17 views
2

Jack Rugile tarafından oluşturulmuş orijinal kanvas.Kanıt js değişkenini animasyonlu olarak değiştirin

Bir jquery işlevi kullanarak vurgulu tuval js dosyasındaki birkaç değişkeni değiştirmeye çalışıyorum. Birkaç çalışma ama ben parıldayan rotasyonun yarıçapını, onu anında değiştirmekten ziyade canlandırarak değiştirmek istiyorum. this yolunda olduğu gibi genişler.

$ timeout kullanmayı denedim, ancak bunun uygun bir yol olduğunu düşünmüyorum. Herhangi bir öneriniz var mı?

DEMO

jquery gelme js alt kısmında.

$('.containAnimation').hover(function() { 
    circle.speed = 8; 
    circle.thickness = 20; 
    particleMax = 200; 
    $timeout(function() { 
    circle.radius = 150; 
    }, 3000); 
}, function() { 
    circle.speed = 1.5; 
    circle.thickness = 15; 
    particleMax = 100; 
    $timeout(function() { 
    circle.radius = 100; 
    }, 3000); 
}); 
+0

AngularJS kullanıyor musunuz? AngularJS'de bildiğim kadarıyla "$ timeout" kullanılır. – Roy

+0

no. Sadece setTimeout ayarlamak için değiştirdim ve iyi geciktirir. Ancak gecikme yerine animasyon yapmak için bir yol arıyorum. – Shniper

+0

Bu, başka bir şey ortaya çıkarır, ancak mekanizma aynı olabilir, belki bir başlangıç ​​olarak yararlı olabilir: http://jsfiddle.net/AbdiasSoftware/bS58y/ – K3N

cevap

2

Bunu deneyin. Yinelemeli işlevi çağırarak animasyon uygulamak için requestAnimationFrame kullanın.

$('.containAnimation').hover(function() { 
    circle.speed = 8; 
    circle.thickness = 20; 
    particleMax = 200; 
    setTimeout(animateHoverIn, 10); 
}, function() { 
    circle.speed = 1.5; 
    circle.thickness = 15; 
    particleMax = 100; 
    setTimeout(animateHoverOut, 10); 
}); 

function animateHoverIn(){ 
    if (circle.radius>=150){ 
     return; 
    } 
    circle.radius++; 
    requestAnimationFrame(animateHoverIn); 
} 

function animateHoverOut(){ 
    if (circle.radius<=100){ 
     return; 
    } 
    circle.radius--; 
    requestAnimationFrame(animateHoverOut); 
} 
+0

DÜZENLEME: Nvm, yanlış kopyaladım ... Merhaba, cevabınız için teşekkürler, bir çalışma demosunu bir araya getirebilir misiniz? Mevcut kodunuzda tüm vurgulu işlevi kırılır ve gezinir hiçbir şey değiştirmez. – Shniper

+0

Sadece doğru olarak işaretlediniz. Ne oldu? İşe yaradı mı? – Roy

+0

Evet, yanlış yazdım ilk satır haha ​​kaçırdım. Bunun için çok teşekkürler. – Shniper

İlgili konular