forked from CreateJS/TweenJS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCSSPlugin.js
103 lines (90 loc) · 3.17 KB
/
CSSPlugin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
* CSSPlugin
* Visit http://createjs.com/ for documentation, updates and examples.
*
* Copyright (c) 2010 gskinner.com, inc.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
(function(window) {
/**
* TODO.
* @protected
* @class CSSPlugin
* @constructor
**/
var CSSPlugin = function() {
throw("CSSPlugin cannot be instantiated.")
}
var p = CSSPlugin.prototype;
// static interface:
/**
* Defines the default suffix map for CSS tweens. This can be overridden on a per tween basis by specifying a
* cssSuffixMap value for the individual tween. The object maps CSS property names to the suffix to use when
* reading or setting those properties. For example a map in the form {top:"px"} specifies that when tweening
* the "top" CSS property, it should use the "px" suffix (ex. target.style.top = "20.5px"). This only applies
* to tweens with the "css" config property set to true.
* @property cssSuffixMap
* @type Object
* @static
**/
CSSPlugin.cssSuffixMap = {top:"px",left:"px",bottom:"px",right:"px",width:"px",height:"px",opacity:""};
CSSPlugin.priority = -100; // very low priority, should run last
/**
*
**/
CSSPlugin.install = function() {
var arr = [], map = CSSPlugin.cssSuffixMap;
for (var n in map) { arr.push(n); }
Tween.installPlugin(CSSPlugin, arr);
}
/**
*
**/
CSSPlugin.init = function(tween, prop, value) {
var sfx0,sfx1,style,map = CSSPlugin.cssSuffixMap;
if ((sfx0 = map[prop]) == null || !(style = tween._target.style)) { return value; }
var str = style[prop];
if (!str) { return 0; } // no style set.
var i = str.length-sfx0.length;
if ((sfx1 = str.substr(i)) != sfx0) {
throw("CSSPlugin Error: Suffixes do not match. ("+sfx0+":"+sfx1+")");
} else {
return parseInt(str.substr(0,i));
}
}
/**
*
**/
CSSPlugin.tween = function(tween, prop, value, startValues, endValues, ratio, position, end) {
var style,map = CSSPlugin.cssSuffixMap;
if (map[prop] == null || !(style = tween._target.style)) { return value; }
style[prop] = value+map[prop];
return value;
}
// public properties:
// private properties:
// constructor:
// public methods:
// private methods:
window.CSSPlugin = CSSPlugin;
}(window));