javascript 效果队列(链)

标签 javascript javascript-framework

我正在为我的工作构建一个动画框架,并且我在队列或链效应部分中存货,实际上我有这样的东西:

var Fx = {
    animate: function(){...},
    fadeIn: function(){...},
    fadeOut: function(){...}
}

等等等等...所以,实际上我可以做到:

$('#element').animate({options}).fadeIn({options});

而且效果很好!但是淡入和动画同时执行,但我想做的是:

$('#element').chain().animate({options}).fadeIn({options});

所以它先执行动画,然后执行淡入

其实我有这样的东西:

var Chain = function(element){
 var target = element;
 for (methodName in Fx) {

  (function(methodName) {
    Chain.prototype[methodName] = function() {
     var args = Array.prototype.slice.call(arguments);
    return this;
    };
  })(methodName);
 }
}

Fx.chain = function(element){
  return 
    }

我可以得到所有调用的方法和那些东西,但我不知道如何将它推送到一个数组,甚至不知道如何调用第一个方法,因为我试图将所有请求都发送到一个数组,如果有效果,每次都调用它完成了。

我不使用 jQuery,因为我说过我需要制作一个个性化的框架。

有什么想法吗??!谢谢

最佳答案

Simple Demo

var Fx = {
  animate: function(el, style, duration, after){
    // do animation...
    after();
  },
  fadeIn: function(el, duration, after){
    // do fading ...
    after();
  }, 
  // other effects ...

  chain: function (el) {

    var que = [];
    function callNext() { que.length && que.shift()(); }

    return {
      animate: function(style, duration) {
        que.push(function() {
          Fx.animate(el, style, duration, callNext);
        });
        return this;
      },
      fadeIn: function(duration){
        que.push(function() {
          Fx.fadeIn(el, duration, callNext);
        });
        return this;
      }, // ...
      end: callNext
    };
  }
};

用法

Fx.chain(el).animate("style", 300).fadeIn(600).animate("style2", 900).end();

关于javascript 效果队列(链),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4064746/

相关文章:

javascript - 单页应用程序架构 (JavaScript)

JavaScript 错误 :Uncaught TypeError: Cannot read property 'branchei' of undefined

javascript - Node js paypal rest sdk 401错误

javascript - 定义指令时 'controller' 、 'link' 和 'compile' 函数之间的区别

javascript - 除了数据绑定(bind)之外,backbone.js(或 knockout.js)还提供哪些优势

javascript - Zepto.js 只能用于移动网络应用程序还是可以像 jQuery 一样用于桌面应用程序?

angularjs - Angular JS View 无法正确更新

javascript - 根据日期将项目添加到两个数组( future 日期和过去日期)中

javascript - 无法在文本区域框中显示 php 脚本计算结果

javascript - 隐藏文件输入,直到其他输入不为空/未选择