Framerjs 如何为在for循环中创建的层创建动画

Framerjs 如何为在for循环中创建的层创建动画,framerjs,Framerjs,考虑集合网格和带有单击动画的层的两个片段。以下仅将动画侦听器添加到最后一个网格项(位于3:3位置的层): 如何在循环中单独命名层以应用动画 类似于cellLayer[rowIndex][colIndex]=新层的东西将是理想的,但不起作用;博士 只需使用以下do关键字即可解决此问题: do (cellLayer) -> cellLayer.on Events.Click, -> cellLayer.animate properties: scale: 1.4

考虑
集合网格
和带有单击动画的
层的两个片段。以下仅将动画侦听器添加到最后一个网格项(位于3:3位置的层):

如何在
循环中单独命名层以应用动画

类似于
cellLayer[rowIndex][colIndex]=新层的东西将是理想的,但不起作用;博士

只需使用以下
do
关键字即可解决此问题:

do (cellLayer) -> 
  cellLayer.on Events.Click, ->
    cellLayer.animate
      properties: scale: 1.4
      curve: "spring"

当使用JavaScript循环生成函数时,通常会插入一个闭包包装器,以确保循环变量被关闭,并且所有生成的函数不只是共享最终值。CoffeeScript提供“do”关键字,该关键字立即调用传递的函数,转发任何参数


从技术上讲,您必须使
cellLayer
的每个作用域成为循环,因为
cellLayer
的作用域是循环的。在CoffeeScript中,提供了语法sugar
do
关键字。只需在代码中放入
do
,然后使用iLife自动创建作用域。如果您对JavaScript有所了解,可以为您提供帮助。

还请注意,我将单击的层作为第二个参数添加到您的处理程序中:

 cellLayer.on Events.Click, (event, clickedLayer) ->
        clickedLayer.animate
            properties:
                scale: 1.4
            curve: "spring"
 cellLayer.on Events.Click, (event, clickedLayer) ->
        clickedLayer.animate
            properties:
                scale: 1.4
            curve: "spring"