[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 /* 2 DynAPI Distribution 3 CircleAnimation Class 4 5 The DynAPI Distribution is distributed under the terms of the GNU LGPL license. 6 7 requires: dynapi.functions.Math,dynapi.fx.Thread 8 */ 9 10 function CircleAnimation(dlyr) { 11 this.Thread = Thread; 12 this.Thread(dlyr); 13 14 this.offsetX = 0; 15 this.offsetY = 0; 16 this.playing = false; 17 this.radius = 100; 18 this.angle = 0; 19 this.setAngleIncrement(10); 20 }; 21 var p = dynapi.setPrototype('CircleAnimation','Thread'); 22 p.setRadius = function (r) { 23 this.hradius = this.vradius = r; 24 }; 25 p.setHRadius = function (r) { 26 this.hradius = r; 27 }; 28 p.setVRadius = function (r) { 29 this.vradius = r; 30 }; 31 p.setAngle = function (a) { 32 this.angle = dynapi.functions.degreeToRadian(a); 33 }; 34 p.setAngleIncrement = function (inc) { 35 this.angleinc = dynapi.functions.degreeToRadian(inc); 36 }; 37 p.playAnimation = function () { 38 this.playing = true; 39 if (this.dlyr!=null) { 40 this.offsetX = this.hradius*Math.cos(this.angle); 41 this.offsetY = -this.vradius*Math.sin(this.angle); 42 this.baseX = this.dlyr.x-this.offsetX; 43 this.baseY = this.dlyr.y+this.offsetY; 44 this.dlyr.invokeEvent("circlestart"); 45 } 46 this.start(); 47 }; 48 p.stopAnimation = function () { 49 this.playing = false; 50 this.stop(); 51 if (this.dlyr!=null) this.dlyr.invokeEvent("circlestop"); 52 }; 53 p.run = function () { 54 if (!this.playing || this.dlyr==null) return; 55 this.angle += this.angleinc; 56 this.offsetX = this.hradius*Math.cos(this.angle); 57 this.offsetY = -this.vradius*Math.sin(this.angle); 58 59 if (this.dlyr!=null) { 60 this.dlyr.invokeEvent("circlerun"); 61 this.dlyr.setLocation(this.baseX+this.offsetX,this.baseY+this.offsetY); 62 } 63 }; 64 p.reset = function () { 65 this.angle = this.offsetX = this.offsetY = 0; 66 }; 67 p.generatePath = function(centerX,centerY) { 68 if (centerX==null) centerX = this.dlyr!=null? this.dlyr.x : 0; 69 if (centerY==null) centerY = this.dlyr!=null? this.dlyr.y : 0; 70 var path = []; 71 var i = 0; 72 /* for (var a=this.angle;a<=this.angle+Math.PI*2;a+=this.angleinc) { 73 path[i] = Math.round(centerX + this.hradius*Math.cos(a)); 74 path[i+1] = Math.round(centerY - this.vradius*Math.sin(a)); 75 i+=2; 76 }*/ 77 78 if (this.angleinc>0) 79 for (var a=this.angle;a<=this.angle+Math.PI*2;a+=this.angleinc) { 80 path[i] = Math.round(centerX + this.hradius*Math.cos(a)); 81 path[i+1] = Math.round(centerY - this.vradius*Math.sin(a)); 82 i+=2; 83 } 84 else 85 for (var a=this.angle;a>=this.angle-Math.PI*2;a+=this.angleinc) { 86 path[i] = Math.round(centerX + this.hradius*Math.cos(a)); 87 path[i+1] = Math.round(centerY - this.vradius*Math.sin(a)); 88 i+=2; 89 } 90 return path; 91 };
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |