Cristalab

Efecto de mosaico con Actionscript

Por: Dano + 25.07.2007

Desde que conocí a un nuevo amigo, olvidé a otro viejo, con el que pasé muchos momentos. El nuevo amigo me trajo cosas nuevas y diversión, pero yo desconsideradamente olvidé a mi viejo amigo. Hoy el remordimiento me ha ganado y he buscado a mi viejo amigo.

La verdad que hace tiempo que no me ponía a jugar con actionscript, he tenido demasiado trabajo. Pero hoy después de molestarme por un par de situaciones, decidí distraerme creando un efecto de mosaico (similar al de photoshop) y jugar un poco con este.

Aquí el resultado:



El código que he utilizado es el siguiente:

Los dos ciclos for, cortan la imagen, aplican el efecto de mosaico y la envían a las funciones que mueven los mosaicos.

Código :

import flash.display.*;
import flash.geom.*;
import flash.filters.*;

var bmpImage:BitmapData;
var thumb_image:BitmapData;
var i:Number;
var j:Number;
var imgWidth:Number;
var imgHeight:Number;
var thumbSize:Number;
var _curLevel:Number;

bmpImage = BitmapData.loadBitmap("Pattern");
imgWidth = bmpImage.width;
imgHeight = bmpImage.height;
thumbSize = 25;
blurIntense = 10;
_curLevel = 0;
for(j=0; j<imgHeight; j+=thumbSize)
{
   for(i=0; i<imgWidth; i+=thumbSize)
   {
      thumb_image = new BitmapData(thumbSize, thumbSize, true);
      thumb_image.copyPixels(bmpImage, new Rectangle(i, j, i+thumbSize, j+thumbSize), new Point(0, 0));
      //thumb_image.applyFilter(thumb_image, thumb_image.rectangle, new Point(0,0),new BlurFilter(blurIntense, blurIntense, 1));
      thumb_image.applyFilter(thumb_image, thumb_image.rectangle, new Point(0,0),new BevelFilter(2, 45, 0xFFFFFF, .2, 0x000000, .2, blurIntense, blurIntense, 1, 3, "inner"));      
      nueClip = createEmptyMovieClip("image_holder" + _curLevel, _curLevel);
      nueClip._x = i;
      nueClip._y = j;
      nueClip.attachBitmap(thumb_image, 0);
      breakIt(nueClip, _curLevel);
      _curLevel++;
   }
}
function breakIt(target:MovieClip)
{
   target.got = function()
   {
      dissolve(this);
   }
   target.downIt = downIt;
   target.inter = setInterval(target,"got", _curLevel * 750);
}
function dissolve(target:MovieClip)
{
   target._xscale = 110;
   target._yscale = 110;
   target.swapDepths(getNextHighestDepth());
   clearInterval(target.inter);
   target.interDown = setInterval(target, "downIt", 40);
}
function downIt()
{
   this._xscale += 5;
   this._yscale += 5;   
   this._y += 10;
   this._x += 7;
   this._alpha -= 2;
   this._rotation += 6;
   if( this._y > Stage.height and this._x > Stage.width)
      clearInterval(this.interDown);
}


Para probarlo, solo agreguen a la biblioteca una imagen, y la vinculan con el id "Pattern", es todo.

Los mosaicos seguramente les servirán para crear una infinidad de efectos más, sólo es cuestión de imaginación.

saludos miau

Etiquetas flash actionscript

Comentarios | Enviar un comentario
Saludos....

Disculpa mi ignorancia :s pero es que soy nuevo en esto de AtcionScript.

El asunto es que al poner el codigo me da los siguientes errores:

" **Error** Escena=Escena 1, capa=Capa 1, fotograma=1:Línea 5: No se ha podido cargar la clase 'BitmapData'.
var bmpImage:BitmapData;

**Error** Escena=Escena 1, capa=Capa 1, fotograma=1:Línea 6: No se ha podido cargar la clase 'BitmapData'.
var thumb_image:BitmapData;

Total de errores de ActionScript: 2 Errores comunicados: 2 "

Y mi pregunta es ¿Porque?(o mejor dicho ¿como solucionarlo?)

Gracias de todos modos.
Por: Razen_blog
Tal vez no hiciste un copiar/pegar completo. Te faltaron los imports, me imagino.
Por: Dano
ola yo quiero que me digan en quye casos puede ser util usar este efecto de mosaico en mis paginas web de flash gracias
Por: juandreso_blog
yo quiero que me digan que es imaginacion, y tambien creatividad , es que en mi diccionario no venia Triste por favor
Por: FeNtO
Una pregunta el codigo s epone en el fotograma ?? a la imagen hay ke ponerle de nombre "Pattern" con o sin comillas ?
Por: Zimon_blog
Sí, se pone en el fotograma. Hay que poner el nombre "Pattern" sin comillas, y es nombre de vinculación a action script, no nombre de instancia.

saludos
Por: Dano_From_Hell
Razen_blog... has tenido en cuenta que estas sentencias son para flash 8?? Si tiene MX olvidalas......
Por: martan_blog
Si tiene Flash MX, seguro no sabe AS para empezar.
Por: Norke_blog
sabes me pasa algo raro el codigo no me arroja errores,y tengo vinculada la imagen como Pattern pero sin embargo no pasa nada ¿alguna sugerencia?
Por: diego_blog
Hola buenas noches, me pasa igual q a diego. Vinculo como Pattern y coloco el code en el primer y unico fotograma pero nada, help thanks!!!
Por: Lucho_blog
¿Lo hacen en Flash 8?
¿Vinculan una imagen y no un MovieClip?
Por: Dano
¿Está hecho con AS3? ¿Cómo sería posible que desapareciesen trozos más grandes, y que fuese más rápidamente?
Por: laura_blog
Muy bueno Dano Duke Alex Danonson... Se ve bien !!!
Thumbs up
Por: M@U
como lo ases es muy chevere quisiera mas ejenplos de mosaicos
Por: eder_blog
no podrian poner el archivo fuente o que me den su correo para que me lo pasen
Por: Ghav_blog
Hola a todos estoy buscando como hacer algo parecido a lo que hay arriba. No se demasiado de flash ni action scrip, pero tengo un encargo en el trabajo y debere de aprender... Lo que busco es el efecto contrario, que las fotos vayan apreciendo hasta formar la imagen en la que se lee el nombre de la compañia. Si alguien tiene alguna idea puede escribirme a linkin@telefonica.net

Gracias y que siga asi esta página
Por: Hugo_blog
Muy Buen truco Dano ... gracias
Por: Christian_blog
Soy nueva en esto y de antemano gracias a estos cerebros de verdad que esto tiene su truco, bueno despues de esto dire que no me arroja ningun error pero tampoco pasa nada con la animacion que sera ??? se que esto ya lo preguntaron pero no hay respuesta ojala puedan ayudarnos mil gracias
Por: Alma Rosa_blog
Hola espero ayuda necesito exponer este tema mañana y tu algoritmo me haria sacar un 10 pero no me da respuesta lo pongo tal como lo dices y no hace nada porfavor ayudame enviame al mail el swf a mi mail gracias jorgar_882@hotmail.com
Por: Jorge Luis_blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.