2013-12-05 4 views
1

Есть ли способ запустить событие, когда переход находится в определенном состоянии? Например, в приведенном ниже коде у меня есть текстовый блок, который прокручивается по экрану. Когда текстовый блок достигает определенной координаты x, я хотел бы, чтобы событие было запущено (то есть выделите текст).Событие пожара во время перехода

Есть ли способ сделать это с помощью переходов или как лучше всего выполнить что-то подобное?

Player.e.select('#activeTranscript') 
      .transition() 
      .each(function(d, i) { 
       var test = 'test'; 
      }) 
      .ease('linear') 
      .duration(function() { 
       return Player.active_transcript.length * 500; 
      }) 
      .attr('x', function(){ 
       return -this.clientWidth; 
      }); 
+0

Чтобы улучшить свои шансы на получение ответы пытаются включить больше информации. Вероятно, я смогу ответить на это, если вы указали мне на библиотечную документацию, которую вы использовали, чтобы сделать то, что у вас есть. Я искал d3.js, потому что это тег, который вы использовали, но это было довольно широко. – DutGRIFF

ответ

1

Если вы знаете, как долго он будет принимать для вашего текста, чтобы достичь координаты х, вы можете просто иметь свой функциональный огнь, то ж/SetTimeout или d3.timer.

Чтобы получить точный контроль над огневыми событиями во время перехода, вы будете иметь, чтобы ваши руки немного грязный с attrTween и пользовательские интерполяции:

.transition().duration(3000) 
    .attrTween('y', function(d, i, a){ 
     var interpolator = d3.interpolate(a, 400); 
     var halfWayDone = false; 
     return function(t){ 
     if (t > .5 && !halfWayDone){ 
      d3.select('body').append('div').text('halfway done at ' + t); 
      halfWayDone = true; 
     } 
     return interpolator(t); 
     } 
    })  

http://bl.ocks.org/1wheel/7800813

Смежные вопросы