This has to do with the order in which the arguments of Animate are executed. Let's see if we can determine that:
ClearAll[eval, low, hi, init, x];
i = 1;
Animate[
eval[If[i > 10, 10, i++]] = x,
{x, low[i++] = x; 0, hi[i++] = x; 1},
Initialization :> (init[i++] = x;),
AnimationRunning -> False
]

Information /@ {low, hi, init, eval};

So, Mathematica first evaluates Animate's lower bound, then its upper bound, then repeats this process (!?).
It then sets Animate's running variable to the lower bound and only then does it execute the initialization.
Evaluation of the main body is the last step. Note that even though the animation isn't running (because of AnimationRunning -> False) the main body is evaluated continuously, just like in Manipulate since an assignment took place there, triggering a refresh.
Hence, the reason for your error is that you use the value set in the initialization in the animation bounds, but that part is executed earlier than the initialization.
Animateis not a control specification, so you should not expect it have the same semantics as it would have if it were the 2nd argument ofManipulate. What are you really trying to accomplish by using an initialized variable in a range specification? Also, you might consider injecting a value withWith. – m_goldberg Mar 19 '16 at 13:23Initializationis that if it is placed outsideAnimate, then each time the notebook of this code is opened,Animateruns automatically - it runs without the range specification, hence errors appear. – User18 Mar 19 '16 at 14:08Animateis just aManipulatewithControlType -> Animator! – xzczd Mar 20 '16 at 04:32