0

我试图弄清楚如何以以下格式将设置传递给动画插件(我知道期望用户跳入并使用这样的设置是不好的,但我将构建一个 GUI 来配合它以及):

   $('#animationContainer').plugin({
      'path':[
            {'path_on_x':[ // PATH_ON X IS AN ARRAY
                {'0':'0px','1':'0px','2':'0px'}, // object 1 starting X values (0,1,2)
                {'0':'0px','1':'0px','2':'0px'}, // object 2 starting X values (0,1,2)
                {'0':'150px','1':'150px','2':'150px'} // object 3 starting X values...
            ]},
            {'path_off_x':[ // PATH_ON X IS AN ARRAY
                {'0':'0px','1':'0px','2':'0px'},
                {'0':'0px','1':'0px','2':'0px'},
                {'0':'150px','1':'150px','2':'150px'}
            ]},
            {'path_on_y':[ // PATH_ON Y IS AN ARRAY
                {'0':'0px','1':'0px','2':'0px'},
                {'0':'0px','1':'0px','2':'0px'},
                {'0':'0px','1':'50px','2':'200px'}
            ]},
            {'path_off_y':[ // PATH_ON Y IS AN ARRAY
                {'0':'0px','1':'0px','2':'0px'},
                {'0':'0px','1':'0px','2':'0px'},
                {'0':'200px','1':'50px','2':'0px'}
            ]}
        ]
     });

此代码当前在插件中设置,我正在引用所有静态值。“PATH”包含与沿路径动画对象相关的所有设置。path_on_x、path_off_x、path_on_y 和 path_off_y 都包含从点 0 到点 1 到点 2 等动画的特定坐标值集。

数组中的每组坐标都包含特定于不同动画对象的值。(在上面的代码中注明)

我习惯于使用典型的 defaults= .... 代码并将其与用户选项合并,但在这种情况下我将如何设置默认值(或其他类型的后备设置)?我很确定标准默认值 = ... 代码不会削减它,并且简单地使用上面的代码代替默认值并不能说明可能有 20 个对象被动画而不是 3 个如上所示。

有什么建议么?谢谢!

4

2 回答 2

2

我会建议这样的格式:

$('#animationContainer').plugin({
  "path": [
    {
      "x": [[0, 0, 0], [0, 0, 0]],
      "y": [[0, 0, 0], [0, 0, 0]]
    },
    {
      "x": [[0, 0, 0], [0, 0, 0]],
      "y": [[0, 0, 0], [0, 0, 0]]
    },
    {
      "x": [[150, 150, 150], [150, 150, 150]],
      "y": [[0, 50, 200], [200, 50, 200]]
    }
  ]
});

这样,您就可以在一个地方拥有属于一个对象的属性,而不是让它们均匀分布。它也更容易理解。(顺便说一句,“路径”属性本身看起来很适合集成到单个对象中,而不是保持在顶层。)

访问属性将是直截了当的:

options.path[0].x[0] // starting values
options.path[0].x[1] // stopping values

并且对它们应用默认值变得很容易。它只需要一个 for 循环

for(var i=0; i<options.path.length; i++) {
  // merge options.path[i] with default values, e.g. via $.extend()
}
于 2012-04-10T05:41:06.320 回答
0

您可以将 json 传递到您的插件中,然后将 json 转换为您的要求。插件中不需要使用这种 json 格式。相反,您可以轻松地循环和使用 if 条件。顺便说一下,这里有一个小工具可以帮助你。

http://code.google.com/p/jquery-json/

于 2012-04-10T05:40:20.127 回答