我的@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);
mostrarButton = (Button) getActivity().findViewById(R.id.boton_mostrar);
}
函数如何运行嵌套的无名函数有点困惑。使用snap.svg到动画圈子。
我已将所有代码设置在circleAnimation
函数中,然后声明另一个名为setTimeout
的函数,其中包含运行我的圈子第一次旋转的代码。
我希望我的圈子能够无限制动画,所以我找到了一种方法来实现这一点,添加一个嵌套在circleAnimation
函数下的匿名函数我声明了一个匿名的circleAnimation
在匿名函数中,我重置了动画,使其看起来无限制动画。
这是我有点困惑的地方......
不确定如何我能够将匿名function(){});
作为回调传递..
我在函数范围的顶层调用function(){});
来调用匿名circleAnimation();
,然后在function(){});
函数的底层执行第二次调用执行第一个函数circleAnimation
。
我对匿名功能的运作方式感到有些困惑......我知道我的功能最多,但我觉得这个拼图中有一块我很想念。所以一些澄清会很棒!
circleAnimation
答案 0 :(得分:1)
因此,如果我们打破它并查看它,我们有
circles.stop().animate({...},10000, function(){...});
应该非常清楚,函数作为参数传递给animate()
。
恰好你可以从中调用周围的函数,导致整个循环再次循环。
答案 1 :(得分:0)
匿名函数表达式是引用点函数,然后传递给外部函数circleAnimation
。这允许动画的连续循环。
没有重置内部功能所以只需旋转一次然后停止
// calling circleAnimation
circleAnimation();
// animate circles
function circleAnimation() {
// one rotation
circles.stop().animate({
transform: 'r360,20,20'
}, 10000);
}
现在我们向circleAnimation
添加一个内部函数,它将重复动画
function() {
// reset
circles.attr({
transform: 'rotate(0 20 20)'
});
// passing inner function to outer function `circleAnimation`
// this allows us to have a continuous loop
circleAnimation();
});
function circleAnimation() {
// rotate 360
circles.stop().animate({
transform: 'r360,20,20'
}, 10000,
function() {
// repeat animation start from 0
circles.attr({
transform: 'rotate(0 20 20)'
});
// pass anomn function to `circleAnimation`
circleAnimation();
});
}