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 * <script type="text/javascript">
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">() {
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">;
16 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">queue </span><span class="jsdoc-syntax">= [];
19 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tweenCount </span><span class="jsdoc-syntax">= 0;
22 </span><span class="jsdoc-var">this.fps </span><span class="jsdoc-syntax">= 1000;
25 </span><span class="jsdoc-var">this.delay </span><span class="jsdoc-syntax">= 1;
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">();
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);
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"><= 0) {
45 </span><span class="jsdoc-var">this.stop</span><span class="jsdoc-syntax">();
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">);
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">);
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">< </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);
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;
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">);
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">< </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">;
84 </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">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">)
86 </span><span class="jsdoc-var">tween.currentFrame </span><span class="jsdoc-syntax">+= 1;
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">);
91 </span><span class="jsdoc-var">tween._onTween.fire</span><span class="jsdoc-syntax">();
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">);
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">< </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">;
105 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">-1;
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;
116 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">elapsed </span><span class="jsdoc-syntax">< </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);
121 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tweak </span><span class="jsdoc-syntax">> 0 && </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">>= </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);
126 </span><span class="jsdoc-var">tween.currentFrame </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">tweak</span><span class="jsdoc-syntax">;
131 </span></code></body></html>