root / trunk / web / dojo / dojox / fx / text.js @ 12
History | View | Annotate | Download (7.22 KB)
| 1 |
/*
|
|---|---|
| 2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
| 3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
| 4 |
see: http://dojotoolkit.org/license for details
|
| 5 |
*/
|
| 6 |
|
| 7 |
|
| 8 |
if(!dojo._hasResource["dojox.fx.text"]){ |
| 9 |
dojo._hasResource["dojox.fx.text"]=true; |
| 10 |
dojo.provide("dojox.fx.text");
|
| 11 |
dojo.require("dojo.fx");
|
| 12 |
dojo.require("dojo.fx.easing");
|
| 13 |
dojox.fx.text._split=function(_1){ |
| 14 |
var _2=_1.node=dojo.byId(_1.node),s=_2.style,cs=dojo.getComputedStyle(_2),_3=dojo.coords(_2,true); |
| 15 |
_1.duration=_1.duration||1000;
|
| 16 |
_1.words=_1.words||false;
|
| 17 |
var _4=(_1.text&&typeof (_1.text)=="string")?_1.text:_2.innerHTML,_5=s.height,_6=s.width,_7=[]; |
| 18 |
dojo.style(_2,{height:cs.height,width:cs.width});
|
| 19 |
var _8=/(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)/g; |
| 20 |
var _9=(_1.words?/(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)\s*|([^\s<]+\s*)/g:/(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)\s*|([^\s<]\s*)/g); |
| 21 |
var _a=(typeof _1.text=="string")?_1.text.match(_9):_2.innerHTML.match(_9); |
| 22 |
var _b=""; |
| 23 |
var _c=0; |
| 24 |
var _d=0; |
| 25 |
for(var i=0;i<_a.length;i++){ |
| 26 |
var _e=_a[i];
|
| 27 |
if(!_e.match(_8)){
|
| 28 |
_b+="<span>"+_e+"</span>"; |
| 29 |
_c++; |
| 30 |
}else{
|
| 31 |
_b+=_e; |
| 32 |
} |
| 33 |
} |
| 34 |
_2.innerHTML=_b; |
| 35 |
function _f(_10){ |
| 36 |
var _11=_10.nextSibling;
|
| 37 |
if(_10.tagName=="SPAN"&&_10.childNodes.length==1&&_10.firstChild.nodeType==3){ |
| 38 |
var _12=dojo.coords(_10,true); |
| 39 |
_d++; |
| 40 |
dojo.style(_10,{padding:0,margin:0,top:(_1.crop?"0px":_12.t+"px"),left:(_1.crop?"0px":_12.l+"px"),display:"inline"});
|
| 41 |
var _13=_1.pieceAnimation(_10,_12,_3,_d,_c);
|
| 42 |
if(dojo.isArray(_13)){
|
| 43 |
_7=_7.concat(_13); |
| 44 |
}else{
|
| 45 |
_7[_7.length]=_13; |
| 46 |
} |
| 47 |
}else{
|
| 48 |
if(_10.firstChild){
|
| 49 |
_f(_10.firstChild); |
| 50 |
} |
| 51 |
} |
| 52 |
if(_11){
|
| 53 |
_f(_11); |
| 54 |
} |
| 55 |
}; |
| 56 |
_f(_2.firstChild); |
| 57 |
var _14=dojo.fx.combine(_7);
|
| 58 |
dojo.connect(_14,"onEnd",_14,function(){ |
| 59 |
_2.innerHTML=_4; |
| 60 |
dojo.style(_2,{height:_5,width:_6});
|
| 61 |
}); |
| 62 |
if(_1.onPlay){
|
| 63 |
dojo.connect(_14,"onPlay",_14,_1.onPlay);
|
| 64 |
} |
| 65 |
if(_1.onEnd){
|
| 66 |
dojo.connect(_14,"onEnd",_14,_1.onEnd);
|
| 67 |
} |
| 68 |
return _14;
|
| 69 |
}; |
| 70 |
dojox.fx.text.explode=function(_15){ |
| 71 |
var _16=_15.node=dojo.byId(_15.node);
|
| 72 |
var s=_16.style;
|
| 73 |
_15.distance=_15.distance||1;
|
| 74 |
_15.duration=_15.duration||1000;
|
| 75 |
_15.random=_15.random||0;
|
| 76 |
if(typeof (_15.fade)=="undefined"){ |
| 77 |
_15.fade=true;
|
| 78 |
} |
| 79 |
if(typeof (_15.sync)=="undefined"){ |
| 80 |
_15.sync=true;
|
| 81 |
} |
| 82 |
_15.random=Math.abs(_15.random); |
| 83 |
_15.pieceAnimation=function(_17,_18,_19,_1a,_1b){ |
| 84 |
var _1c=_18.h;
|
| 85 |
var _1d=_18.w;
|
| 86 |
var _1e=_15.distance*2; |
| 87 |
var _1f=_15.duration;
|
| 88 |
var _20=parseFloat(_17.style.top);
|
| 89 |
var _21=parseFloat(_17.style.left);
|
| 90 |
var _22=0; |
| 91 |
var _23=0; |
| 92 |
var _24=0; |
| 93 |
if(_15.random){
|
| 94 |
var _25=(Math.random()*_15.random)+Math.max(1-_15.random,0); |
| 95 |
_1e*=_25; |
| 96 |
_1f*=_25; |
| 97 |
_22=((_15.unhide&&_15.sync)||(!_15.unhide&&!_15.sync))?(_15.duration-_1f):0;
|
| 98 |
_23=Math.random()-0.5;
|
| 99 |
_24=Math.random()-0.5;
|
| 100 |
} |
| 101 |
var _26=((_19.h-_1c)/2-(_18.y-_19.y)); |
| 102 |
var _27=((_19.w-_1d)/2-(_18.x-_19.x)); |
| 103 |
var _28=Math.sqrt(Math.pow(_27,2)+Math.pow(_26,2)); |
| 104 |
var _29=_20-_26*_1e+_28*_24;
|
| 105 |
var _2a=_21-_27*_1e+_28*_23;
|
| 106 |
var _2b=dojo.animateProperty({node:_17,duration:_1f,delay:_22,easing:(_15.easing||(_15.unhide?dojo.fx.easing.sinOut:dojo.fx.easing.circOut)),beforeBegin:(_15.unhide?function(){ |
| 107 |
if(_15.fade){
|
| 108 |
dojo.style(_17,"opacity",0); |
| 109 |
} |
| 110 |
_17.style.position=_15.crop?"relative":"absolute"; |
| 111 |
_17.style.top=_29+"px";
|
| 112 |
_17.style.left=_2a+"px";
|
| 113 |
}:function(){
|
| 114 |
_17.style.position=_15.crop?"relative":"absolute"; |
| 115 |
}),properties:{top:(_15.unhide?{start:_29,end:_20}:{start:_20,end:_29}),left:(_15.unhide?{start:_2a,end:_21}:{start:_21,end:_2a})}}); |
| 116 |
if(_15.fade){
|
| 117 |
var _2c=dojo.animateProperty({node:_17,duration:_1f,delay:_22,easing:(_15.fadeEasing||dojo.fx.easing.quadOut),properties:{opacity:(_15.unhide?{start:0,end:1}:{end:0})}}); |
| 118 |
return (_15.unhide?[_2c,_2b]:[_2b,_2c]);
|
| 119 |
}else{
|
| 120 |
return _2b;
|
| 121 |
} |
| 122 |
}; |
| 123 |
var _2d=dojox.fx.text._split(_15);
|
| 124 |
return _2d;
|
| 125 |
}; |
| 126 |
dojox.fx.text.converge=function(_2e){ |
| 127 |
_2e.unhide=true;
|
| 128 |
return dojox.fx.text.explode(_2e);
|
| 129 |
}; |
| 130 |
dojox.fx.text.disintegrate=function(_2f){ |
| 131 |
var _30=_2f.node=dojo.byId(_2f.node);
|
| 132 |
var s=_30.style;
|
| 133 |
_2f.duration=_2f.duration||1500;
|
| 134 |
_2f.distance=_2f.distance||1.5;
|
| 135 |
_2f.random=_2f.random||0;
|
| 136 |
if(!_2f.fade){
|
| 137 |
_2f.fade=true;
|
| 138 |
} |
| 139 |
var _31=Math.abs(_2f.random);
|
| 140 |
_2f.pieceAnimation=function(_32,_33,_34,_35,_36){ |
| 141 |
var _37=_33.h;
|
| 142 |
var _38=_33.w;
|
| 143 |
var _39=_2f.interval||(_2f.duration/(1.5*_36)); |
| 144 |
var _3a=(_2f.duration-_36*_39);
|
| 145 |
var _3b=Math.random()*_36*_39;
|
| 146 |
var _3c=(_2f.reverseOrder||_2f.distance<0)?(_35*_39):((_36-_35)*_39); |
| 147 |
var _3d=_3b*_31+Math.max(1-_31,0)*_3c; |
| 148 |
var _3e={};
|
| 149 |
if(_2f.unhide){
|
| 150 |
_3e.top={start:(parseFloat(_32.style.top)-_34.h*_2f.distance),end:parseFloat(_32.style.top)};
|
| 151 |
if(_2f.fade){
|
| 152 |
_3e.opacity={start:0,end:1};
|
| 153 |
} |
| 154 |
}else{
|
| 155 |
_3e.top={end:(parseFloat(_32.style.top)+_34.h*_2f.distance)};
|
| 156 |
if(_2f.fade){
|
| 157 |
_3e.opacity={end:0};
|
| 158 |
} |
| 159 |
} |
| 160 |
var _3f=dojo.animateProperty({node:_32,duration:_3a,delay:_3d,easing:(_2f.easing||(_2f.unhide?dojo.fx.easing.sinIn:dojo.fx.easing.circIn)),properties:_3e,beforeBegin:(_2f.unhide?function(){ |
| 161 |
if(_2f.fade){
|
| 162 |
dojo.style(_32,"opacity",0); |
| 163 |
} |
| 164 |
_32.style.position=_2f.crop?"relative":"absolute"; |
| 165 |
_32.style.top=_3e.top.start+"px";
|
| 166 |
}:function(){
|
| 167 |
_32.style.position=_2f.crop?"relative":"absolute"; |
| 168 |
})}); |
| 169 |
return _3f;
|
| 170 |
}; |
| 171 |
var _40=dojox.fx.text._split(_2f);
|
| 172 |
return _40;
|
| 173 |
}; |
| 174 |
dojox.fx.text.build=function(_41){ |
| 175 |
_41.unhide=true;
|
| 176 |
return dojox.fx.text.disintegrate(_41);
|
| 177 |
}; |
| 178 |
dojox.fx.text.blockFadeOut=function(_42){ |
| 179 |
var _43=_42.node=dojo.byId(_42.node);
|
| 180 |
var s=_43.style;
|
| 181 |
_42.duration=_42.duration||1000;
|
| 182 |
_42.random=_42.random||0;
|
| 183 |
var _44=Math.abs(_42.random);
|
| 184 |
_42.pieceAnimation=function(_45,_46,_47,_48,_49){ |
| 185 |
var _4a=_42.interval||(_42.duration/(1.5*_49)); |
| 186 |
var _4b=(_42.duration-_49*_4a);
|
| 187 |
var _4c=Math.random()*_49*_4a;
|
| 188 |
var _4d=(_42.reverseOrder)?((_49-_48)*_4a):(_48*_4a);
|
| 189 |
var _4e=_4c*_44+Math.max(1-_44,0)*_4d; |
| 190 |
var _4f=dojo.animateProperty({node:_45,duration:_4b,delay:_4e,easing:(_42.easing||dojo.fx.easing.sinInOut),properties:{opacity:(_42.unhide?{start:0,end:1}:{end:0})},beforeBegin:(_42.unhide?function(){ |
| 191 |
dojo.style(_45,"opacity",0); |
| 192 |
}:undefined)});
|
| 193 |
return _4f;
|
| 194 |
}; |
| 195 |
var _50=dojox.fx.text._split(_42);
|
| 196 |
return _50;
|
| 197 |
}; |
| 198 |
dojox.fx.text.blockFadeIn=function(_51){ |
| 199 |
_51.unhide=true;
|
| 200 |
return dojox.fx.text.blockFadeOut(_51);
|
| 201 |
}; |
| 202 |
dojox.fx.text.backspace=function(_52){ |
| 203 |
var _53=_52.node=dojo.byId(_52.node);
|
| 204 |
var s=_53.style;
|
| 205 |
_52.words=false;
|
| 206 |
_52.duration=_52.duration||2000;
|
| 207 |
_52.random=_52.random||0;
|
| 208 |
var _54=Math.abs(_52.random);
|
| 209 |
var _55=10; |
| 210 |
_52.pieceAnimation=function(_56,_57,_58,_59,_5a){ |
| 211 |
var _5b=_52.interval||(_52.duration/(1.5*_5a)),_5c=("textContent" in _56)?_56.textContent:_56.innerText,_5d=_5c.match(/\s/g); |
| 212 |
if(typeof (_52.wordDelay)=="undefined"){ |
| 213 |
_52.wordDelay=_5b*2;
|
| 214 |
} |
| 215 |
if(!_52.unhide){
|
| 216 |
_55=(_5a-_59-1)*_5b;
|
| 217 |
} |
| 218 |
var _5e,_5f;
|
| 219 |
if(_52.fixed){
|
| 220 |
if(_52.unhide){
|
| 221 |
var _5e=function(){ |
| 222 |
dojo.style(_56,"opacity",0); |
| 223 |
}; |
| 224 |
} |
| 225 |
}else{
|
| 226 |
if(_52.unhide){
|
| 227 |
var _5e=function(){ |
| 228 |
_56.style.display="none";
|
| 229 |
}; |
| 230 |
var _5f=function(){ |
| 231 |
_56.style.display="inline";
|
| 232 |
}; |
| 233 |
}else{
|
| 234 |
var _5f=function(){ |
| 235 |
_56.style.display="none";
|
| 236 |
}; |
| 237 |
} |
| 238 |
} |
| 239 |
var _60=dojo.animateProperty({node:_56,duration:1,delay:_55,easing:(_52.easing||dojo.fx.easing.sinInOut),properties:{opacity:(_52.unhide?{start:0,end:1}:{end:0})},beforeBegin:_5e,onEnd:_5f}); |
| 240 |
if(_52.unhide){
|
| 241 |
var _61=Math.random()*_5c.length*_5b;
|
| 242 |
var _62=_61*_54/2+Math.max(1-_54/2,0)*_52.wordDelay; |
| 243 |
_55+=_61*_54+Math.max(1-_54,0)*_5b*_5c.length+(_62*(_5d&&_5c.lastIndexOf(_5d[_5d.length-1])==_5c.length-1)); |
| 244 |
} |
| 245 |
return _60;
|
| 246 |
}; |
| 247 |
var _63=dojox.fx.text._split(_52);
|
| 248 |
return _63;
|
| 249 |
}; |
| 250 |
dojox.fx.text.type=function(_64){ |
| 251 |
_64.unhide=true;
|
| 252 |
return dojox.fx.text.backspace(_64);
|
| 253 |
}; |
| 254 |
} |