Actionscript 2.0: Como dibujar un círculo

Actionscript 2.0: Como dibujar un círculo

Etiquetas: lineTo lineStyle beginFill

Actionscript 2.0: Como dibujar un círculo

En la API de dibujo de Actionscript 2.0 no existe ninguna función para dibujar directamente un círculo (en Actionscript 3.0 tenemos drawCircle()). Sin embargo, podemos dibujar círculos con dos métodos diferentes.

El primero es el más intuitivo. Se trata de unir diversos puntos con lineTo() para formar el círculo. Por ejemplo podemos utilizar una función como esta para crear un círculo:

  1. function circuloLine(px, py, radio, color, alfa) {
  2.   lineStyle(1,color,alfa);
  3.   beginFill(color,alfa);
  4.   moveTo(px+radio,py);
  5.   for (grados=0; grados<=360; grados++) {
  6.   x = radio*Math.cos(Math.PI/180*grados);
  7.   y = radio*Math.sin(Math.PI/180*grados);
  8.   lineTo(px+x, py+y);
  9.   }
  10.   endFill();
  11. } 

Como se puede ver en la función son matemáticas básicas. Unimos 360 puntos, calculando las coordenadas con seno y coseno, y forman un círculo. En realidad es un polígono de 360 lados, pero los lados no se ven planos porque son muy pequeños. Para figuras muy grandes, se podría mejorar la función utilizando curveTo() en lugar de lineTo():

  1. function circuloCurve(px, py, radio, color, alfa) {
  2. 	lineStyle(1,color,alfa);
  3. 	beginFill(color,alfa);
  4. 	moveTo(px+radio,py);
  5. 	for (grados=0; grados<=360; grados++) {
  6. 		x = radio*Math.cos(Math.PI/180*grados);
  7. 		y = radio*Math.sin(Math.PI/180*grados);
  8. 		curveTo(px+x,py+y,px+x,py+y);
  9. 	}
  10. 	endFill();
  11. } 

La función es la misma, pero en vez de unir los puntos por rectas, los unimos por curvas.

La tercera opción que conozco para dibujar un círculo, es la más rápida e ingeniosa. Se trata de dibujar una linea muy pequeña, pero con un grosor igual al diametro que buscamos. Sería como "dibujar un punto muy gordo". El resultado es el más exacto de los 3, además del más eficiente.

  1. function circuloPunto(px, py, radio, color, alpha){
  2.    lineStyle(radio*2, color,alpha);
  3.    moveTo(px,py); 
  4.    lineTo(px,py + 0.15);
  5. } 
Actionscript 2.0: Utilizar imágenes de la biblioteca

Actionscript 2.0: Utilizar imágenes de la biblioteca

Etiquetas: attachBitmap BitmapData loadBitmap

El siguiente método muestra como añadir imágenes de nuestra biblioteca a la escena de la película, usando BitmapData y el método attachBitmap.
Precargas de archivos externos con Actionscript 2: MovieClipLoader

Precargas de archivos externos con Actionscript 2: MovieClipLoader

Etiquetas: MovieClipLoader onLoadInit onLoadComplete onLoadProgress

En Actionscript 2.0 podemos cargar archivos externos con loadMovie o por medio de un MovieClipLoader. loadMovie es aparentemente mas sencillo de utilizar, pero no da información de ningún tipo sobre el estado de la carga, por lo que si queremos hacer precargas deberemos usar una instancia de MovieClipLoader. Este ejemplo muestra como utilizar este tipo de objetos, y utilizar sus eventos asociados.
Actionscript 2.0: Base para juego con casillas de arrastre.

Actionscript 2.0: Base para juego con casillas de arrastre.

Etiquetas: startDrag swapDepths hitTest

Este código muestra como hacer un juego con casillas de arrastre, útil para juegos de formación y similares en los que el usuario tiene que colocar determinadas casillas en un lugar específico.
Controlar teclas pulsadas en AS2

Controlar teclas pulsadas en AS2

Etiquetas: Object onKeyDown onKeyUp Key.getCode addListener

El siguiente código controla los eventos de teclado "pulsar" (onKeyDown) y "soltar" (onKeyUp), devolviendo el código de la tecla con la que se ha interactuado.
Enlaces coloreados en Flash con Actionscript 2.0 y CSS

Enlaces coloreados en Flash con Actionscript 2.0 y CSS

Etiquetas: StyleSheet htmlText load TextField createTextField

Lo primero es tener nuestro archivo CSS. Yo voy a utilizar uno sencillo:

  1.  
  2. a{
    
  3.     font-size:16pt;
    
  4.     color:#0000ff;
    
  5.     text-decoration:underline;
    
  6. }
    
  7. d{
    
  8.     font-size:20pt;
    
  9.     color:#ff0000;
    
  10. }
    
  11. e{
    
  12.     font-size:18pt;
    
  13.     color:#00ff00;
    
  14. }
    
  15. f{
    
  16.     font-size:14pt;
    
  17.     color:#ff00ff;
    
  18. }
    
  19.  

En la parte Flash, cargamos el archivo CSS, y configuramos el campo de texto para que utilice la hoja de estilos que hemos cargado:

  1.  
  2. //Creo el campo de texto
  3.  
  4. createTextField("Texto_txt",0,0,0,300,300);
  5.  
  6. //Creo las variables que van a contener el texto html
  7.  
  8. var txt0:String = "<d>Este sería del tipo d</d><br/>";
  9. var txt1:String = "<e>Este sería el primer e</e><br/>";
  10. var txt2:String = "<f>Este es del tipo f</f><br/>";
  11. var txt3:String = "<a href = 'http://www.esedeerre.com'>Este sería un enlace coloreado</a>";
  12.  
  13. //Creo la variable para vargar el CSS
  14.  
  15. var loadCSS = TextField.StyleSheet = new TextField.StyleSheet();
  16.  
  17. //Cuando carguen los estilos, relleno el campo con el html
  18.  
  19. loadCSS.onLoad = function(){
  20.         Texto_txt.html = true;
  21.         Texto_txt.styleSheet = loadCSS;
  22.         Texto_txt.htmlText = txt0 + txt1 + txt2 + txt3;
  23. }
  24.  
  25. //Cargo los estilos
  26.  
  27. loadCSS.load("url del css");
  28. stop();
  29.  
Mostrar código Actionscript coloreado

Mostrar código Actionscript coloreado

Una idea de la página era ir recopilando scripts en Flash para tener una pequeña libreria. Buscando métodos para mostrar los códigos encontré esta página: http://www.shockwave-india.com/blog/services/as-highlight/ (enlace roto) Solo hay que pegar el código que queremos mostrar, y la página genera el código html que deberemos poner para verlo en el navegador.
Actionscript 2: Recorrer elementos de un objeto

Actionscript 2: Recorrer elementos de un objeto

Etiquetas: XML ignoreWhite childNodes firstChild

Este código sirve para recorrer todos los elementos de un objeto. Por ejemplo, recorrer todos los elementos de todos los niveles de una pelicula, o todos los nodos de un XML. La base es:

  1.  
  2. function RecorreInstancias(clip:MovieClip){
  3. 	for(a in clip){
  4. 		trace(clip[a]);
  5. 		RecorreInstancias(clip[a]);
  6. 	}
  7. }
  8. RecorreInstancias(_root);
  9.  

Por ejemplo, si quisieramos imprimir en pantalla los nombres de todos los nodos de un XML:

  1.  
  2. function CargarXML(){
  3.         recXml = new XML();
  4.         recXml.ignoreWhite = true;
  5.         recXml.onLoad = function(exito){
  6.                 if(exito){
  7.                         Recorrer(this.firstChild);
  8.                 }else{
  9.                         trace("Error al cargar");
  10.                 }
  11.         }
  12.         recXml.load("url del XML");
  13. }
  14.  
  15.  
  16. function Recorrer(xml){
  17.         for(var a in xml.childNodes){
  18.                 Recorrer(xml.childNodes[a]);
  19.                 trace(xml.childNodes[a].nodeName);
  20.         }
  21. }
  22.  
  23. CargarXML();
  24.