Comunidad de diseño web y desarrollo en internet online

Dibujar un círculo... con ActionScript

Citar            
MensajeEscrito el 03 Ene 2008 07:14 pm
mi pregunta no puede ser más explícita, cómo se dibujaría un círculo con código

Por Juanlu_001

Claber

690 de clabLevel

6 tutoriales

 

firefox
Citar            
MensajeEscrito el 03 Ene 2008 07:38 pm
Ejemplos tan simples como esos vienen en la ayuda del Flash, sólo busca "circle" y obtendrás el código.

Saludos.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 03 Ene 2008 08:03 pm
Lo que ha dicho Darel es lo correcto.
De todos modos te pongo un apunte para "dibujar" círculos mediante un pequeño truco :wink: :

Código :

function circulo(centroX, centroY, diametro, color, alpha){
   this.lineStyle(diametro, color,alpha);
   this.moveTo(centroX,centroY); 
   this.lineTo(centroX,centroY + 0.15);
}
circulo(200,100,250,0xff6600,100);
// circulo con centro (200,100),  diametro 250, naranja, alfa 100


Por cierto este círculo es mucho más perfecto que usando 4 curveTo de la API de dibujo

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 03 Ene 2008 09:06 pm
Buen truco Teseo (Y) !

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 03 Ene 2008 09:47 pm
Efectivamente hay muchas formas de dibujar un circulo, y dependiendo de tu necesidad se podra hacer de una forma u otra.

Con las API de dibujo, no es que sea mas sencillo o mas complicado, simplemente puedes obtener un resultado mas detallado o no.
Las APIS solo te permiten dibujar dos tipos de objetos, lineas y linea curva (no circunferencias) y mover "el pincel" sin pintar.
Para dibujar una circunfenrecia debes pintar puntos equistantes de uno:

Se plantean dos cuestiones A)¿como dibujar un punto y B)como dibujar los puntos equidistantes.

A) Podemos hacerlo de dos formas con lineTo y con curveTo pero si es una curva es mejor usar curveTo.
Se consigue de la siguiente manera.
desplazamos el pincel a una posicion (x,y) con moveTo(ejex,ejey) y luego le mandamos pintar hasta otra coordenada o sea la misma lineTo (ejex,ejey) o mejor aun para el caso de curvas curveTo (ejex,ejey,ejex,ejey).

B) Ahora que sabemos como pintar un punto, necesitaremos "un compas" para realizar la circunferencia.
Nuestro compas en action script es un bucle.
radio = 10;
centro = {x:50, y:50};
lineStyle(5, 0xFFFF00, 100); //con lineStyle damos tamaño ,color y alfa a la linea dibujada
beginFill([0xFFFF00[, 100]]) //Si una linea corta a otra o se toca se rellena el area con este color, alfa (tu circulo)
//ahora viene lo dificil de entender si no recuerdas geometria basica , teorema de pitagoras.
for (grados=0; grados<=360; grados += 1) {
x = radio*Math.cos(Math.PI/180*grados);//distancia que hay desde el centro al eje x para grados
y = radio*Math.sin(Math.PI/180*grados);//distancia que hay desde el centro al eje y para grados
if (grados == 0) {
moveTo(cento.x+x, centro.y+y);//hay que mover "el pincel" a la posicion inicial de pintado sin pintar.
}
curveTo(centro.x+x, centro.y+y, centro.x+x, centro.y+y); //dibuja un punto
}
//ese comentario seria para el for pero arriba no se entenderia. El bucle hace que se pinte un punto con una diferencia de un grado, podrias poner 2 y no se apreciaria el cambio incluso podrias poner 20 pero lo que conseguirias seria hacer lineas rectas entre grados, dicho con otras palabras un poligono de N lados (360/20 = 18) una circunferencia es un poligono de infinitos lados (pero no es necesario llegar al infinito XD, solo al limite suficiente );
Esto es asi porque pintamos desde el grado anterior hasta el nuevo x,y . Como curveTo() con los parametros que le pasamos dibuja una recta.

Un saludo

Por Andurino

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Ene 2008 02:53 pm
muchas gracias por todas las aportaciones, las tendre en cuenta :)

Por Juanlu_001

Claber

690 de clabLevel

6 tutoriales

 

firefox
Citar            
MensajeEscrito el 26 Ene 2008 02:27 pm
Hola a todos, estoy haciendo una aplicación con api y queria saber si hay alguna forma de cambiar el tipo del trazo del pincel, no hablo del cuerpo (tamaño) sino la forma del trazo ej. lapiz o pincel.
Hay alguna opción con lineStyle.

Gracias!!! :)

Por sloly

1 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 28 Ene 2008 03:30 pm
XD

Por gustavogarzon

166 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Ene 2009 01:34 am
yo tengo una dudilla que voy a plantear de la manera mas concreta posible y espero me podais resolver:

suponiendo que tengo una escena con un punto fijo determinado ya (digamos x=117 y=137) y quiero dibujar un arco de circunferencia que cubra desde ese punto hasta otro dado por el raton al hacer click (supongo que tendre que poner toda la escena como un solo boton y cuando pulse coger los valores de la x e y del cursor y saltar al siguiente fotograma para asi ejecutar lo que yo quiero hacer) entonces mi pregunta es como dibujo un arco de una circunferencia que pase por esos dos puntos pero q no se dibuje entera la circunferencia solo el arco que va en sentido horario y hasta ese ultimo punto dado por el ratón

salu2

Por ivanchi69

2 de clabLevel



 

safari
Citar            
MensajeEscrito el 21 Feb 2009 05:21 pm
hola a todos... veran, estoy haciendo mi propio "paint" ya tengo las herramientas de lapiz y borrador, con sus colores y achos y todo eso, pero quiero hacer una herramienta de circulo, como la de todos los programas de diseño... como paint jajaja, como photoshop o fireworks, que al hacer clic y arrastrar se crea un circulo y cambia su tamaño dependiendo de cuanto halla sido arrastrado, pero no se hacer una funcion para hacer eso, alguien me podria ayudar? uso actionscript 2.0

se lo agradesco a todos :)

Por hormy1

Claber

124 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Feb 2009 07:29 pm
Dibujar un circulo al estilo photoshop o fireworks es algo dificil, el circulo se va modificando conforme se mueve el mouse, dese el punto de presion hasta donde se suelta.
Primero tendrias que crear tu funcion que dibuja el circulo, podria ser la que viene en la ayuda de flash, luego tendrias que crear los eventos onMouseDown, onMouseUp, o en su defecto, onPress onRelease, siendo el lienzo de dibujo el clip contenedor, se tiene que validar varias cosas, como que este activa la herramienta circulo o por ejemplo, una vez dibujado el circulo, poder volver a redimencionarlo. Para no hacerte el cuento largo, mejor mira esto. Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Feb 2009 08:49 pm
muchas gracias :D... el ejemplo que me muestras lo descargue pero tiene errores al seleccionar los objetos que ya ha dibujado... si te fijas al dibujar algo, puedes redimencionarlo, pero si dibujas otro objeto aparte, no puedes volver a seleccionar el objeto que dibujaste anteriormente :( pero bueno, espero poder arreglar eso :) igualmente muchas gracias

Por hormy1

Claber

124 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2009 08:53 pm
Mmm, no lo habia notado, tienes razon, U_U, pero igual es buena guia. :D

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

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