2013-03-27 5 views
8

मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या डी 3 के डिफ़ॉल्ट एनिमेशन पहले से कॉलबैक के लिए requestAnimationFrame का उपयोग करते हैं या यदि मुझे इसे स्वयं करने की आवश्यकता है। उदाहरण के लिए, मैं (इस coffeescript में है) एक ग्राफ पर एक से दूसरे डोमेन से एक संक्रमण एनिमेशन के लिए बार-बार एक redraw फ़ंक्शन को कॉल करने के लिए एक कस्टम ट्वीन परिभाषित किया है:क्या डी 3 के संक्रमण और एनिमेशन अनुरोध का उपयोग करते हैंएनिमेशन फ्रेम?

rd = @redraw # a function that takes an argument to redraw the graph 
@svg.transition() 
    .duration(1000) 
    .tween "zoom", -> 
     interp = d3.interpolate(current_dom, target_dom) 
     (t) -> rd interp(t) 

पुनः बनाने का सब मेरे अन्य कॉल में, मैं requestAnimationFrame साथ यह अनुसूची:

scheduleRedraw: => 
    # Stop a previous request if it hasn't executed yet 
    cancelAnimationFrame(@animRequest) if @animRequest  
    @animRequest = requestAnimationFrame => @redraw 

हालांकि, मैं अगर मैं यहाँ एक ही बात करने की जरूरत है सोच रहा हूँ। मैं डी 3 स्रोत देख रहा हूं और देखता हूं कि requestAnimationFrame का एकमात्र संदर्भ d3 timer class में है। उम्मीद है कि डी 3 के बारे में कुछ और जानकारी वाले किसी व्यक्ति को निम्नलिखित प्रश्नों का उत्तर देने में मदद मिल सकती है:

  • क्या डी 3 टाइमर सभी डी 3 एनिमेशन और संक्रमणों के लिए वैश्विक रूप से उपयोग किया जाता है?
  • क्या मुझे मैन्युअल रूप से requestAnimationFrame का उपयोग करने की आवश्यकता है? यदि नहीं, तो क्या कोई ऐसा मामला है जहां मुझे डी 3 का उपयोग करते समय इसे स्वयं उपयोग करने की आवश्यकता होगी?

उत्तर

8

से d3's wiki:Transitions:Timer

आपके ब्राउज़र इसका समर्थन करता है, टाइमर कतार तरल पदार्थ और कुशल एनीमेशन के लिए requestAnimationFrame का प्रयोग करेंगे।

संबंधित मुद्दे