Comunidad de diseño web y desarrollo en internet online

Dibujar Elipse

Citar            
MensajeEscrito el 22 Dic 2010 05:29 pm
Hola gente amiga, tengo un pequeño problema y necesito de vuestra ayuda.

Resulta que tengo una aplicacion en flash, que es una especie de paint, esta desarrollada en as2.
necesito agregarle la opcion de trazar óvalo.

mas o menos entiendo como funciona el curveTo, pero realmente necesitaría una función donde pueda pasarle radioX y radioX y trazara automáticamente la elipse.

Es buscado unas cuantas el google, pero algunas no se visualizan bien (estan realizadas con un conjunto de lineas) y otras que funcionan con curveTo no funciona correctamente:

Código ActionScript :

MovieClip.prototype.drawEllipse = function(xRadius, yRadius, x, y) {
   
   var angleDelta = Math.PI / 4;

   // corresponds to yRadius.
   var xCtrlDist = xRadius / Math.cos(angleDelta / 2);
   var yCtrlDist = yRadius / Math.cos(angleDelta / 2);
   var rx, ry, ax, ay;
   this.moveTo(x + xRadius,y);
   for (var i = 0; i < 8; i++) {
      angle += angleDelta;
      rx = x + Math.cos(angle - (angleDelta / 2)) * (xCtrlDist);
      ry = y + Math.sin(angle - (angleDelta / 2)) * (yCtrlDist);
      ax = x + Math.cos(angle) * xRadius;
      ay = y + Math.sin(angle) * yRadius;
      this.curveTo(rx,ry,ax,ay);
   }
};



Alguien tiene alguna función a mano? muy agradecido le estaría.

Por arix

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Dic 2010 05:50 pm
gente, me respondo a mi mismo, el problema esta en la definicion de "angle", hay que definirlo e igualarlo a 0, por lo tanto el código correcto seria:

Código ActionScript :

MovieClip.prototype.drawEllipse = function(xRadius, yRadius, x, y) {
   
   var angleDelta = Math.PI / 4;

   // corresponds to yRadius.
   var xCtrlDist = xRadius / Math.cos(angleDelta / 2);
   var yCtrlDist = yRadius / Math.cos(angleDelta / 2);
   var angle:Number = 0;
   
   var rx, ry, ax, ay;
   
   this.moveTo(x + xRadius,y);
   
   for (var i = 0; i <160; i++) {
      angle += angleDelta;
      rx = x + Math.cos(angle - (angleDelta / 2)) * (xCtrlDist);
      ry = y + Math.sin(angle - (angleDelta / 2)) * (yCtrlDist);
      ax = x + Math.cos(angle) * xRadius;
      ay = y + Math.sin(angle) * yRadius;
      this.curveTo(rx,ry,ax,ay);
   }
};

Por arix

20 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.