7e560ba125e20ff3e665bc7e94af2b6de572a213
[roojs1] / docs / src / Roo_lib_AnimMgr.js.html
1 <html><head><title>/home/edward/gitlive/roojs1/Roo/lib/AnimMgr.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty">
2 <span class="jsdoc-comment">/*
3  * Portions of this file are based on pieces of Yahoo User Interface Library
4  * Copyright (c) 2007, Yahoo! Inc. All rights reserved.
5  * YUI licensed under the BSD License:
6  * http://developer.yahoo.net/yui/license.txt
7  * &lt;script type=&quot;text/javascript&quot;&gt;
8  *
9  */
10
11 </span><span class="jsdoc-var">Roo.lib.AnimMgr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new function</span><span class="jsdoc-syntax">() {
12
13     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">thread </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
14
15
16     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">queue </span><span class="jsdoc-syntax">= [];
17
18
19     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tweenCount </span><span class="jsdoc-syntax">= 0;
20
21
22     </span><span class="jsdoc-var">this.fps </span><span class="jsdoc-syntax">= 1000;
23
24
25     </span><span class="jsdoc-var">this.delay </span><span class="jsdoc-syntax">= 1;
26
27
28     </span><span class="jsdoc-var">this.registerElement </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">) {
29         </span><span class="jsdoc-var">queue</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">queue.length</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">;
30         </span><span class="jsdoc-var">tweenCount </span><span class="jsdoc-syntax">+= 1;
31         </span><span class="jsdoc-var">tween._onStart.fire</span><span class="jsdoc-syntax">();
32         </span><span class="jsdoc-var">this.start</span><span class="jsdoc-syntax">();
33     };
34
35
36     </span><span class="jsdoc-var">this.unRegister </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">) {
37         </span><span class="jsdoc-var">tween._onComplete.fire</span><span class="jsdoc-syntax">();
38         </span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">getIndex</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">);
39         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">!= -1) {
40             </span><span class="jsdoc-var">queue.splice</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">, 1);
41         }
42
43         </span><span class="jsdoc-var">tweenCount </span><span class="jsdoc-syntax">-= 1;
44         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tweenCount </span><span class="jsdoc-syntax">&lt;= 0) {
45             </span><span class="jsdoc-var">this.stop</span><span class="jsdoc-syntax">();
46         }
47     };
48
49
50     </span><span class="jsdoc-var">this.start </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
51         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">thread </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">) {
52             </span><span class="jsdoc-var">thread </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">setInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.run</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.delay</span><span class="jsdoc-syntax">);
53         }
54     };
55
56
57     </span><span class="jsdoc-var">this.stop </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">) {
58         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">) {
59             </span><span class="jsdoc-var">clearInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">thread</span><span class="jsdoc-syntax">);
60
61             </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">queue.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
62                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">queue</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.isAnimated</span><span class="jsdoc-syntax">()) {
63                     </span><span class="jsdoc-var">this.unRegister</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">queue</span><span class="jsdoc-syntax">[0], 0);
64                 }
65             }
66
67             </span><span class="jsdoc-var">queue </span><span class="jsdoc-syntax">= [];
68             </span><span class="jsdoc-var">thread </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
69             </span><span class="jsdoc-var">tweenCount </span><span class="jsdoc-syntax">= 0;
70         }
71         </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
72             </span><span class="jsdoc-var">this.unRegister</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">);
73         }
74     };
75
76
77     </span><span class="jsdoc-var">this.run </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
78         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">queue.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
79             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tween </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">queue</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
80             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">tween </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">tween.isAnimated</span><span class="jsdoc-syntax">()) {
81                 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
82             }
83
84             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween.currentFrame </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">tween.totalFrames </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">tween.totalFrames </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">)
85             {
86                 </span><span class="jsdoc-var">tween.currentFrame </span><span class="jsdoc-syntax">+= 1;
87
88                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween.useSeconds</span><span class="jsdoc-syntax">) {
89                     </span><span class="jsdoc-var">correctFrame</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">);
90                 }
91                 </span><span class="jsdoc-var">tween._onTween.fire</span><span class="jsdoc-syntax">();
92             }
93             </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
94                 </span><span class="jsdoc-var">Roo.lib.AnimMgr.stop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
95             }
96         }
97     };
98
99     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">getIndex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">anim</span><span class="jsdoc-syntax">) {
100         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">queue.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
101             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">queue</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] == </span><span class="jsdoc-var">anim</span><span class="jsdoc-syntax">) {
102                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">;
103             }
104         }
105         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">-1;
106     };
107
108
109     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">correctFrame </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween</span><span class="jsdoc-syntax">) {
110         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">frames </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tween.totalFrames</span><span class="jsdoc-syntax">;
111         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">frame </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tween.currentFrame</span><span class="jsdoc-syntax">;
112         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">expected </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">tween.currentFrame </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">tween.duration </span><span class="jsdoc-syntax">* 1000 / </span><span class="jsdoc-var">tween.totalFrames</span><span class="jsdoc-syntax">);
113         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">elapsed </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">tween.getStartTime</span><span class="jsdoc-syntax">());
114         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tweak </span><span class="jsdoc-syntax">= 0;
115
116         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">elapsed </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">tween.duration </span><span class="jsdoc-syntax">* 1000) {
117             </span><span class="jsdoc-var">tweak </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.round</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">elapsed </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">expected </span><span class="jsdoc-syntax">- 1) * </span><span class="jsdoc-var">tween.currentFrame</span><span class="jsdoc-syntax">);
118         } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
119             </span><span class="jsdoc-var">tweak </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">frames </span><span class="jsdoc-syntax">- (</span><span class="jsdoc-var">frame </span><span class="jsdoc-syntax">+ 1);
120         }
121         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tweak </span><span class="jsdoc-syntax">&gt; 0 &amp;&amp; </span><span class="jsdoc-var">isFinite</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tweak</span><span class="jsdoc-syntax">)) {
122             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tween.currentFrame </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">tweak </span><span class="jsdoc-syntax">&gt;= </span><span class="jsdoc-var">frames</span><span class="jsdoc-syntax">) {
123                 </span><span class="jsdoc-var">tweak </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">frames </span><span class="jsdoc-syntax">- (</span><span class="jsdoc-var">frame </span><span class="jsdoc-syntax">+ 1);
124             }
125
126             </span><span class="jsdoc-var">tween.currentFrame </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">tweak</span><span class="jsdoc-syntax">;
127         }
128     };
129 };
130
131     </span></code></body></html>