2017-09-08 5 views
0

Je souhaite accéder à une méthode publique de mon plugin dans la fonction de progression de Velocity. Mais je ne peux pas le faire fonctionnerMéthode publique du plugin d'accès dans Velocity Plugin

Cette méthode crée des éléments avec des fonctions publiques

var animateFeed = function (ms) { 
    var i = 0; 
    var animationInterval = setInterval(function() { 
     if (_tempelements.length > 0) { 
      var shiftedElement = _tempelements.shift(); 

      shiftedElement.feedseed({ 
       stage: '.socialfeeds', 
       stageElm: '.feed-post', 
       id: i++, 
       y: helper.randInt(0, 150), 
       speed: helper.randInt(20, 120), 
       scale: helper.randFloat(0.4, 1.01) 
      }); 
      socialfeedObject.push(shiftedElement); 
     } 
    }, ms); 
}; 

Ce plugin retourne aussi quelques méthodes publiques

$.fn.feedseed = function (options) { 
    // default settings 
    var settings = $.extend({ 
     element: this, 
     stage: '', 
     stageElm: '', 
     id: 0, 
     x: 0, 
     y: 0, 
     width: 0, 
     startX: 0, 
     scale: 1.0, 
     speed: 100 
    }, options); 

    // some more code here... 

    // Public Function 
    this.play = function() { 
     if (!OBJ.isRunning) { 
      OBJ._then = Date.now(); 
      frame(); 
      OBJ.isRunning = true; 
     } 
     return this; 
    }; 

    // Public Function 
    this.pause = function() { 
     cancelAnimationFrame(OBJ.rafid); 
     OBJ.isRunning = false; 
     return this; 
    }; 

    this.seek = function (multiplier) { 
     settings.speed = settings.speed * multiplier; 
     return this; 
    }; 
}; 

A ce point, je dois accéder à la Fonction de recherche de mon plugin à l'intérieur de Velocity, mais comment faire fonctionner ça?

$('.speedup').on('click tap', function() { 
    for (var i = 0; i < socialfeedObject.length; i++) { 
     socialfeedObject[i].velocity({ 
      tween: [1, 200] 
     }, { 
      duration: 600, 
      easing: 'easeOutQuad', 
      progress: function(elements, complete, remaining, start, tweenValue) { 
       // ? 
      } 
     }); 
    } 
}); 

Répondre

0

Vous l'avez. Si je mets la méthode publique de cette façon, cela fonctionne maintenant pour moi.

$.fn.feedseed.seek = function (multiplier) { 
    // do something 
};