Prototipo para buscar si existe una palabra en un texto

Este prototipo es muy simple busca una palabra cualquiera que pasemos como parámetro en la función y si existe nos devuelve true de lo contrario false, no hace gran cosa pero es útil en algunos casos como por ejemplo en este formulario: http://www.leobaraldi.com.ar/2008/03/11/hacer-formulario-whois-para-dominios-comar/

ActionScript
< view plain text >
  1. String.prototype.findstring = function(string) {
  2. if (this.indexOf(string) != -1) {
  3. return true;
  4. } else {
  5. return false;
  6. }
  7. };

ejemplo de uso:

ActionScript
< view plain text >
  1. String.prototype.findstring = function(string) {
  2. if (this.indexOf(string) != -1) {
  3. return true;
  4. } else {
  5. return false;
  6. }
  7. };
  8. var texto:String = "hola a todos";
  9. trace(this.texto.findstring("hola")+" --&gt;SI existe 'hola'");
  10. trace(this.texto.findstring("Chau")+" --&gt;NO existe 'Chau'");

Centrar movie clip segun resolucion y cambio de estado del navegador

Esta es una consulta que me llego a mi mail de las tantas que llegan, les pido que tengan paciencia que de a poco voy contestando. La consulta en si es como hacer que un clip de película se centre en la ventana del navegador independientemente a la resolución que el usuario este utilizando.

A esto le sumamos que el objeto se debe centrar también si se cambia el estado de la venta (tamaño) asi que también vamos a necesitar algún método para detectar dicho evento.publicacion-centrar-movieclip.jpg

Antes de exponer el código es necesario que aclare unas cosas o requerimientos.

La película debe estar en html con la propiedad “No escalar” y su alto como ancho debe ser del 100% del tamaño de la ventana del navegador.

Así mismo debe estar centrada la película en las posiciones 0,0 que serian izquierda, top.

Puntualmente en este caso lo que hice fue crear un prototipo para los MovieClip que con solo llamarlo e indicarle la posición que pretendemos nuestro AS se encargara de los restantes eventos. A este prototipo se le suma también como parámetro la posibilidad de poder manipular un margen de separación para las distintas posiciones.

No voy a explicar los pasos y función del prototipo porque es muy simple y no lo veo relevante simplemente cópienlo en su línea de tiempo y lo pueden utilizar de la siguiente manera:

Mipelicula_mc.centrar(“centro-top”, 10)
Esta línea se encargara de indicarle al prototipo como debe interactuar con la película “Mipelicula_mc” , como ven en este caso pase dos parámetros “centro-top” para que este elemento se posicione en el eje “X” al centro y el eje “Y” a un margen superior de 10 pixeles.
Podes hacer cuantas llamadas quieras del prototipo y cada llamada con diferentes posiciones. Así mismo desde cualquier parte de tu swf :)

Las opciones de posiciones son las siguientes:

izq-top: izquierda, superior “x=100%, y=0%” (se puede indicar margen)
izq-centro: izquierda, centro “x=100%, y=50%” (se puede indicar margen)
izq-inf: izquierda, inferior o base “x=100%, y=100%” (se puede indicar margen)

centro-top: centro, superior “x=50%, y=0%” (se puede indicar margen)
centro: centro, centro “x=50%, y=50%” (NO se puede indicar margen)
centro-inf: centro, inferior “x=50%, y=100%” (se puede indicar margen)

der-top: derecha, superior “x=0%, y=0%” (se puede indicar margen)
der-centro: derecha, centro “x=0%, y=50%” (se puede indicar margen)
der-inf: derecha, inferior o base “x=0%, y=100%” (se puede indicar margen)

ActionScript
< view plain text >
  1. MovieClip.prototype.centrar = function(pos:String, margen:Number) {
  2. Stage.scaleMode = "noScale";
  3. var ancho:Number = Stage.width;
  4. var alto:Number = Stage.height;
  5. var peli:MovieClip = this;
  6. //
  7. switch (pos) {
  8. case "izq-top" :
  9. this._x = margen;
  10. this._y = margen;
  11. break;
  12. case "izq-centro" :
  13. this._x = margen;
  14. this._y = (alto/2)-(this._height/2);
  15. break;
  16. case "izq-inf" :
  17. this._x = margen;
  18. this._y = alto-(this._height+margen);
  19. break;
  20. case "centro-top" :
  21. this._x = (ancho/2)-(this._width/2);
  22. this._y = margen;
  23. break;
  24. case "centro" :
  25. this._x = (ancho/2)-(this._width/2);
  26. this._y = (alto/2)-(this._height/2);
  27. break;
  28. case "centro-inf" :
  29. this._x = (ancho/2)-(this._width/2);
  30. this._y = alto-(this._height+margen);
  31.  
  32. break;
  33. case "der-centro" :
  34. this._x = ancho-(this._width+margen);
  35. this._y = (alto/2)-(this._height/2);
  36. break;
  37. case "der-top" :
  38. this._x = ancho-(this._width+margen);
  39. this._y = margen;
  40. break;
  41. case "der-inf" :
  42. this._x = ancho-(this._width+margen);
  43. this._y = alto-(this._height+margen);
  44. break;
  45.  
  46. }
  47. //
  48. var escuchador:Object = new Object();
  49. escuchador.onResize = function() {
  50. ancho = Stage.width;
  51. alto = Stage.height;
  52. //
  53. switch (pos) {
  54. case "izq-top" :
  55. peli._x = margen;
  56. peli._y = margen;
  57. break;
  58. case "izq-centro" :
  59. peli._x = margen;
  60. peli._y = (alto/2)-(peli._height/2);
  61. break;
  62. case "izq-inf" :
  63. peli._x = margen;
  64. peli._y = alto-(peli._height+margen);
  65. break;
  66. case "centro-top" :
  67. peli._x = (ancho/2)-(peli._width/2);
  68. peli._y = margen;
  69. break;
  70. case "centro" :
  71. peli._x = (ancho/2)-(peli._width/2);
  72. peli._y = (alto/2)-(peli._height/2);
  73. break;
  74. case "centro-inf" :
  75. peli._x = (ancho/2)-(peli._width/2);
  76. peli._y = alto-(peli._height+margen);
  77. break;
  78. case "der-centro" :
  79. peli._x = ancho-(peli._width+margen);
  80. peli._y = (alto/2)-(peli._height/2);
  81. break;
  82. case "der-top" :
  83. peli._x = ancho-(peli._width+margen);
  84. peli._y = margen;
  85. break;
  86. case "der-inf" :
  87. peli._x = ancho-(peli._width+margen);
  88. peli._y = alto-(peli._height+margen);
  89. break;
  90. }
  91. };
  92. Stage.addListener(escuchador);
  93. };
  94. //aqui indico las posiciones para mis peliculas
  95. cuadrado_mc.centrar("centro");
  96. pie_mc.centrar("der-inf",10);
  97. logo_mc.centrar("der-top",10);

Efecto saturacion de luz usando ColorTransform

Hola a todos, ante que nada 2 cositas importantes: Primero disculpas por no estar colocando contenidos mas periódicamente ya que estoy gracias a Dios con mucho trabajo. Segundo este ejemplo esta hecho con flash 9 pero en action scrip 2.0 así que para abrir el archivo fla deben tener flash 9 o sino copien el código y peguelon en su proyecto en flash 8.

Trabajando en un proyecto para un cliente uno de los requerimientos del mismo hera poder crear unas películas dinámicamente pero cada película con diferente color. Para ello se me ocurrió usar la clase Color, pero O!!! sorpresa me entero que ya es una clase defazada para flash 8!!!! “que desactualizado estoy :(” . Defazada significa que fue reemplazada por otra clase nueva, pero esto no quita en la mayoría de los casos que nuestro AS 2.0 la pueda interpretar!. Así que mirando la nueva clase que se llama ColorTransform me encuentro que con la misma podemos manipular el offset de cada uno de los colores RGB. A consecuencia de esto me trajo a la memoria un prototype viejo en AS 1.0 que daba el efecto de quemar una imagen o fotografía, consiguiendo de este modo un efecto muy lindo a la hora de mostrar una foto.

Así que manos a la obra revivi dicho efecto renombrandolo como “Luz” usando esta nueva clase de AS 2.0.
Código mas excusas pur que :)

ActionScript
< view plain text >
  1. //definimos que es un proto y lo asociamos con los elementos que sean películas
  2. //le pasamos 2 parametros, dirección y velocidad del efecto
  3. MovieClip.prototype.luz = function(direccion:String, Velocidad:Number) {
  4. //La dirección es realidad sera afectada por los valores -255 a 255 pasando por 0 que es la foto en su estado normal
  5. var dir:Number = 0;
  6. //aquí recuperamos la velocidad
  7. var velocidad:Number = Velocidad;
  8. //un contador para detener posteriormente los procesos
  9. var contador:Number = 0;
  10. //evaluamos la dirección y sobreescribimos las variables con los únicos 2 valores que necesitamos
  11. if (direccion == "in") {
  12. dir = 255;
  13. contador = 0;
  14. } else {
  15. -255;
  16. contador = -255;
  17. }
  18. //Importamos las clases necesarias pa que funke!
  19. //
  20. import flash.geom.Transform;
  21. import flash.geom.ColorTransform;
  22. //creamos una función que llamaremos periódicamente para aplicar el efecto, como parametro pasamos el
  23. //nombre de instancia de la peli afectada
  24. function saturar(peli:MovieClip) {
  25. //creamos un nuevo objeto transform, y lo asociamos al mc (peli)
  26. var trans:Transform = new Transform(peli);
  27. //pasamos los valores que se deben aplicar a nuestra peli
  28. var luzColorTransform:ColorTransform = new ColorTransform(1, 1, 1, 1, dir, dir, dir, dir);
  29. //y los hacemos afectiva dicha coloración
  30. trans.colorTransform = luzColorTransform;
  31. //acá evaluamos pa que lado vamos
  32. if (direccion == "in") {
  33. dir--;
  34. } else {
  35. dir++;
  36. }
  37. if (dir == contador) {
  38. //si ya completamos el proceso detenemos la recurrencia a nuestra función
  39. clearInterval(intervalID);
  40. }
  41. }
  42. //
  43. //creamos una llamada periódica a una función pasando (nombre de la función, velocidad en ms, y la instancia del mc)
  44. var intervalID:Number = setInterval(saturar, velocidad, this);
  45. };

Como verán es muy simple, lo único que deben hacer es copiar este código y pegaro en el primer frame de su root. Como usa un setinterval no es necesario para la velocidad incrementar el frame rate.
Hasta aquí muy lindo!!! Pero como hago para aplicarlo a mis peli???????

ActionScript
< view plain text >
  1. //foto_mc[nombre de instancia].luz[nombre del proto]("in"[dirección], 1[velocidad])
  2. foto_mc.luz("in",1);

Para que sea el efecto tipo out o de salida en el parametro “in” coloca “out” o simplemente nada “”, la velocidad es un numero cualquiera, así que prueba pasarle varios para ver cual es el mas adecuado para vos.

ActionScript
< view plain text >
  1. //foto_mc[nombre de instancia].luz[nombre del proto]("in"[dirección], 1[velocidad])
  2. foto_mc.luz("",1);

Puedes llamar a este proto la veces que quieras y cuando quieras con solo poner nombreInstancia.luz(“in”,1)

Reemplazar caracteres o palabras en flash

Este prototipo es muy util a la hora de trabajar con contenidos dinámico como cuando conectamos nuestro flash a una base de datos usando por ejemplo un xml.
Muchas veces en este caso si usamos un CDATA para pasar una porción de texto grande vamos a ver que puede que algunas cosas el flash no las interprete bien como por ejemplo un simple “br” un salto de linea.
En estos caso solo reemplazamos nuestro “br” por un newline por ejemplo.

ActionScript
< view plain text >
  1. //creamos el prototipo
  2. String.prototype.reemplazar = function(termino1, termino2) {
  3.     var temp_array = this.split(termino1);
  4.     var new_cadena = "";
  5.     for (var k = 0; k<temp_array.length; k++) {
  6.         new_cadena += temp_array[k]+""+termino2;
  7.     }
  8.     new_cadena = new_cadena.substring(0, new_cadena.length-termino2.length);
  9.     return new_cadena;
  10. };
  11. //en este caso vamos a colocar un texto dentro de un campo
  12. //de texto dinamico.
  13. //Primero creamos una variable con el contenido del campo de texto
  14. cont = texto_txt.text;
  15. //Segundo creamos una nueva variable con contentra la variable
  16. //anterior mas el prototipo y como parametro le pasamos primero
  17. //el texto o caracter a reemplazar y como segundo parametro
  18. //le pasamos el texto en si a colocar
  19. cont2 = cont.reemplazar("a", " <aqui habia una 'a'> ");
  20. //por ultimo volvemos a escribir el nuevo texto en la caja
  21. texto_txt.text = cont2;

Dibujar marco en un MovieClip

Este proto dibuja un marco a un movie clip cualquiera que le indiquemos y tambienpermite pasarle el ancho del marco como asi tambien el color del mismo. La particularidad que tiene es que si le pasamos un valor positivo de ancho dibuja el marco dentro del MC y si es negativo lo dibijara fuera del mc.

ActionScript
< view plain text >
  1. MovieClip.prototype.drawFrame = function(borderThickness:Number, borderColor:Number) {
  2.  this.p = this.getBounds();
  3.  var frame_mc:MovieClip = this.createEmptyMovieClip("frame_mc", 0);
  4.  frame_mc.beginFill(borderColor, 100);
  5.  frame_mc.moveTo(this.p.xMin+borderThickness, this.p.yMin+borderThickness);
  6.  frame_mc.lineTo(this.p.xMax-borderThickness, this.p.yMin+borderThickness);
  7.  frame_mc.lineTo(this.p.xMax-borderThickness, this.p.yMax-borderThickness);
  8.  frame_mc.lineTo(this.p.xMin+borderThickness, this.p.yMax-borderThickness);
  9.  frame_mc.lineTo(this.p.xMin+borderThickness, this.p.yMin+borderThickness);
  10.  frame_mc.moveTo(this.p.xMin, this.p.yMin);
  11.  frame_mc.lineTo(this.p.xMin, this.p.yMax);
  12.  frame_mc.lineTo(this.p.xMax, this.p.yMax);
  13.  frame_mc.lineTo(this.p.xMax, this.p.yMin);
  14.  frame_mc.endFill();
  15. };
  16. //Uso:
  17. cuadrado_mc.drawFrame(10, 0x666666);

Posición absoluta de un MovieClip

Este prototipo devuelve el valor absoluto de los ejes _x & _y con repecto al _root o level0. Muy util si trabajamos con elementos anidados dentro de otros mc y debemos saber en que coordenadas el mismo se encuentra.

ActionScript
< view plain text >
  1. MovieClip.prototype.globalize = function() {
  2.  var sum:Array = new Array(this._x, this._y);
  3.  var parent:MovieClip = this._parent;
  4.  while (parent) {
  5.   sum[0] += parent._x;
  6.   sum[1] += parent._y;
  7.   parent = parent._parent;
  8.  }
  9.  return sum;
  10. }

 

Ejemplo de uso:

ActionScript
< view plain text >
  1. MovieClip.prototype.globalize = function() {
  2.  var sum:Array = new Array(this._x, this._y);
  3.  var parent:MovieClip = this._parent;
  4.  while (parent) {
  5.   sum[0] += parent._x;
  6.   sum[1] += parent._y;
  7.   parent = parent._parent;
  8.  }
  9.  return sum;
  10. };
  11. //Uso:
  12. uno_mc.dos_mc.onPress = function() {
  13.  this.startDrag();
  14. };
  15. uno_mc.dos_mc.onRelease = function() {
  16.  this.stopDrag();
  17.  _root.posx_txt.text = "pos_X: "+uno_mc.dos_mc.globalize()[0];
  18.  _root.posy_txt.text = "pos_Y: "+uno_mc.dos_mc.globalize()[1];
  19. };