|
программное рисование во flash mx. управление кривыми. (часть ii)ВСЕ!!! Создание окончено. Целиком код метода выглядит так: movieClip.prototype.ellipseTo = function(){ var t = arguments[0][0] == undefined ? 1 : 0; var CenterX = arguments[0+t][0]; var CenterY = arguments[0+t][1]; var Dir = 1; var ARadius; var BRadius; var StartAngle = 0; var EndAngle = 0; var ARadAngle = 0; var div = 12; var delta = Math.PI/6; with (Math){ if (arguments[1+t][0] == undefined){ ARadius = BRadius = arguments[1+t]; } else { ARadius = arguments[1+t][0]; BRadius = arguments[1+t][1]; }; if (arguments.length > 2+t){ if (arguments[2+t][0] == undefined){ ARadAngle = PI*arguments[2+t]/180; } else { StartAngle = PI*arguments[2+t][0]/180; EndAngle = PI*arguments[2+t][1]/180; if (ARadius != BRadius){ if (cos(StartAngle)<0){ StartAngle = PI+atan(ARadius*tan(StartAngle)/BRadius); } else if (cos(StartAngle)> 0){ StartAngle = atan(ARadius*tan(StartAngle)/BRadius); }; if (cos(EndAngle)<0){ EndAngle = PI+atan(ARadius*tan(EndAngle)/BRadius); } else if (cos(EndAngle)> 0) { EndAngle = atan(ARadius*tan(EndAngle)/BRadius); }; }; while (!(EndAngle > StartAngle)){ StartAngle -= 2*PI; }; while (EndAngle-StartAngle > 2*PI){ EndAngle -= 2*PI; }; div = ceil(6*(EndAngle-StartAngle)/PI); delta = (EndAngle-StartAngle)/div; if (arguments.length == 4){ ARadAngle = PI*arguments[3+t]/180; }; }; }; var te; var X1; var Y1; var X2; var Y2; if (t==0){ te = ARadius*cos(StartAngle); Y1 = BRadius*sin(StartAngle); X1 = CenterX+teX*cos(ARadAngle)-teY*sin(ARadAngle); Y1 = CenterY+teX*sin(ARadAngle)+teY*cos(ARadAngle); this.moveTo (X1, Y1); } else if (Dir==-1){ te = StartAngle; StartAngle = EndAngle; EndAngle = te; } for (var i = 1; i<=div; i++){ te = ARadius*cos(StartAngle+Dir*delta*i); Y1 = BRadius*sin(StartAngle+Dir*delta*i); X1 = CenterX+te*cos(ARadAngle)-Y1*sin(ARadAngle); Y1 = CenterY+te*sin(ARadAngle)+Y1*cos(ARadAngle); te = ABRadius*cos(StartAngle+Dir*delta*(i-0.5)); Y2 = BBRadius*sin(StartAngle+Dir*delta*(i-0.5)); X2 = CenterX+te*cos(ARadAngle)-Y2*sin(ARadAngle); Y2 = CenterY+te*sin(ARadAngle)+Y2*cos(ARadAngle); this.curveTo (X2, Y2, X1, Y1); }; }; } Впрочем, рекомендую скачать исходник и посмотреть программный код целиком именно там (во избежании возможных опечаток 8-)). Надеюсь, что данная статья была для Вас полезной. В завершении хочу выразить благодарность Nox Noctis'у - за предпросмотр и критику. До свидания! Удачи! Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Продолжение статьи: ч.10 Продолжение статьи: ч.11 Продолжение статьи: ч.12 Продолжение статьи: ч.13 Продолжение статьи: ч.14 Другие статьи по теме: - Flash переменные и их использование- Flash баннер - программное рисование во flash mx. управление кривыми. (часть ii) - использование flash, javascript и fscommand. - Flash. кривые безье — основа основ |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |