Comunidad de diseño web y desarrollo en internet online

¿Como puedo lograr hacer un efecto de agua?

Ir a página Anterior  1, 2, 3, 4, 5 ... 9, 10, 11  Siguiente

Foros de discusión > Flash

Citar            
MensajeEscrito el 14 Ene 2007 10:56 pm
:shock: por :fsm:
tanto AS necesito :cc:
esta genial

Por egoman

61 de clabLevel



Genero:Masculino  

Concepción - Chile!

firefox
Citar            
MensajeEscrito el 15 Ene 2007 02:50 am
:fsm: :fsm: :fsm: :fsm: :o :o :o :o Un segundo Maestro :meditar: :meditar: :meditar: :meditar:

Gracias ^^

Por elfleat

871 de clabLevel

2 tutoriales

Genero:Masculino  

Miami, USA

firefox
Citar            
MensajeEscrito el 16 Ene 2007 03:22 pm
como o que tengo que cambiar en el script para que las ondas del primer ejemplo cominsen solas sin hacerle clip.
gracias por la duda anteiror.

Por author_W_one

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Ene 2007 03:29 pm
otra cosa: al vincular las imagenes, cuando se prueba la pelicula solo esto se visualiza si quisiera colocar un texto sobre el efecto u otra imagen encima que debo hacer.????

Por author_W_one

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Ene 2007 07:47 pm
A autor_W_one:
Si miras unos post un poco mas abajo de donde está el código, verás el código de la forma de "llover" usando random.
Y con respecto a la 2ª pregunta, también está explicada en la pagina 2 de este tema junto con un ejemplo.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 25 Ene 2007 02:52 am
al convertir este archivo fla a un avi funciona todo este codigo??'

Por lprada

1 de clabLevel



 

msie7
Citar            
MensajeEscrito el 25 Ene 2007 09:46 am
Los efectos aquí descritos son dinámicos. Algunos necesitan acciones del mouse para actuar, luego es evidente que montados como avi no haran nada.
Otra cosa es que, por ejemplo, en el efecto de agua uses un algoritmo, con o sin random, en lugar del movimiento del mouse para generar el efecto entonces podrás guardar la pelicula en AVI con alguno de los programas que lo hacen sobre el actionScript como este.
Si usas ese programa o similar, (que coja el AS2) el efecto lago, llama, bandera, etc. que no necesitan interactuar, funcionarán sin problemas. Decides el tiemplo de "grabación" y ya tienes la película.

Gracias a Zguillez por facilitar el link. :)

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 26 Ene 2007 06:25 am
Teseo maestro,

primero que nada excelentes codigos, me han servido de mucho,muachas gracias, pero tengo problemas con este de las ondas de lluvia, los deje aleatorios, lei cada post, pero aun no puedo lograr que no se valla por encima de los otros frames, ni que me quede transparente como el png original, haber si me puedes ayudar un poquito:

Código :

import flash.display.BitmapData;
 import flash.geom.*; 
import flash.filters.ConvolutionFilter;
import flash.filters.DisplacementMapFilter;
fondo = BitmapData.loadBitmap("nuevo");


anc= fondo.width; alt =fondo.height;
sal = new BitmapData(anc/2,alt/2, false, 128);
sal1 = sal2 = new BitmapData(anc,alt, false,0);

ori = acum = new BitmapData(anc/2,alt/2, false,128);
Mx = new Matrix(); Mx.scale(2,2);
ola = new ConvolutionFilter(3,3,[1,1,1,1,1,1,1,1,1],9,0);
ade = new ColorTransform(0,0,0.996,1,0,0,2,0);
agua = new DisplacementMapFilter(sal2,new Point(),4,4,48,48,"ignore");
attachBitmap(sal2, 3);


onEnterFrame = function () { 
if (random(100)<20) {  
    XM = random(anc)/2 ; 
YM = random(alt)/2;     
   ori.setPixel(XM+1,YM,0); 
ori.setPixel(XM-1,YM,0);  
      ori.setPixel(XM,YM+1,0);
 ori.setPixel(XM,YM-1,0);
}

sal.applyFilter(ori,new Rectangle(0, 0, anc/2,alt/2),new Point(),ola);   
sal.draw(sal,new Matrix(),null,"add"); 
  sal.draw(acum,new Matrix(),null,"difference");
    sal.draw(sal, new Matrix(),ade);  
  sal1.draw(sal,Mx,null,null,null,true);  
  sal2.applyFilter(fondo,new Rectangle(0,0,anc,alt), new Point(),agua);
    acum = ori; ori = sal.clone();
}


de ante mano, muchas gracias.

Por rzs

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 26 Ene 2007 08:28 am
rzs:
Fíjate en esta linea:

Código :

attachBitmap(sal2, 3); 

Esa instrucción es equivalente a :
_root.attachBitmap(sal2, 3);
Es decir, el MC del que cuelgas el efecto es el raiz ( el raiz es en sí un MC)
Para "independizar" el efecto y que funcione como otro MC cualquiera deberás crear un "contenedor" del mismo.
Sustituye esa linea por:

Código :

agua = createEmptyMovieClip("agua", getNextHighestDepth()); 
agua.attachBitmap(sal2, 1);

Ahora el efecto está en un MC llamado agua que puedes colocar,escalar, etc, como todos los demás.
Si posteriormete creas otro MC dinámicamente y lo colocas por encima, puedes invertir su posición también dinámicamente con swapDepths entre ellos.
En cuanto al problema de transparencia. Si has leido el post habrás visto el ejemplo de agua con transparencia y mi respuesta en él (pag 3). Comprueba que no sea también tu caso.
Aparte de eso puedes también usar el código mejorado que publiqué aquí y añadirle o cambiarle las variaciones correspondientes a tu aplicación específica.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 26 Ene 2007 05:11 pm
puse el codigo de esta manera y sigue saliendo por encima del resto:

Código :

import flash.display.BitmapData;
 import flash.geom.*; 
import flash.filters.ConvolutionFilter;
import flash.filters.DisplacementMapFilter;
fondo = BitmapData.loadBitmap("nuevo");


anc= fondo.width; alt =fondo.height;
sal = new BitmapData(anc/2,alt/2, false, 128);
sal1 = sal2 = new BitmapData(anc,alt, false,0);

ori = acum = new BitmapData(anc/2,alt/2, false,128);
Mx = new Matrix(); Mx.scale(2,2);
ola = new ConvolutionFilter(3,3,[1,1,1,1,1,1,1,1,1],9,0);
ade = new ColorTransform(0,0,0.996,1,0,0,2,0);
agua = new DisplacementMapFilter(sal2,new Point(),4,4,48,48,"ignore");
aguaxx = createEmptyMovieClip("aguaxx", getNextHighestDepth());
aguaxx.attachBitmap(sal2, 1);


onEnterFrame = function () { 
if (random(100)<20) {  
    XM = random(anc)/2 ; 
YM = random(alt)/2;     
   ori.setPixel(XM+1,YM,0); 
ori.setPixel(XM-1,YM,0);  
      ori.setPixel(XM,YM+1,0);
 ori.setPixel(XM,YM-1,0);
}

sal.applyFilter(ori,new Rectangle(0, 0, anc/2,alt/2),new Point(),ola);   
sal.draw(sal,new Matrix(),null,"add"); 
  sal.draw(acum,new Matrix(),null,"difference");
    sal.draw(sal, new Matrix(),ade);  
  sal1.draw(sal,Mx,null,null,null,true);  
  sal2.applyFilter(fondo,new Rectangle(0,0,anc,alt), new Point(),agua);
    acum = ori; ori = sal.clone();
}



haber si me puedes ayudar maestro!

Por rzs

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 27 Ene 2007 10:46 am
rzs:
Usa este código, o entiende o el concepto y aplícalo al otro.
Este código detiene totalmente la imagen al pararlo,
No está con el random para simular el goteo de lluvia. Cambia la toma del puntero por el aleatorio.
Solo hay que ajustar la variable fz (fuerza);
Cambia la vinculación por el nombre de vinculación tuyo ( nuevo, en tu caso)
El MC a mover y libre del "fondo" es: salidaMC.

Código :

import flash.display.*;
import flash.geom.*;
import flash.filters.*;
img = BitmapData.loadBitmap("imagen");
createEmptyMovieClip("salidaMC", 1);
salidaMC.attachBitmap(img, 2, "auto", true);
w = img.width-1;
h = img.height-1;
pt = new Point();
Nx = new Matrix();
Mx = new Matrix();
Mx.scale(2, 2);
fz = 60;// fz: fuerza del oleaje de 0 en adelante;
v = (255/256)-1/100000;
sal = new BitmapData(w/2, h/2);
sal1 = sal2 = new BitmapData(w, h);
salidaMC.attachBitmap(sal2, 3);
ori = acum = new BitmapData(w/2, h/2, false, 128);
attachBitmap(sal2, 0);
 ola = new ConvolutionFilter(3, 3, [1, 1, 1, 1, 1, 1, 1, 1, 1], 9);
ade = new ColorTransform(0, 0, v, 1, 0, 0, 2, 0);
agua = new DisplacementMapFilter(sal2, pt, 4, 4, fz, fz);
onda();
onMouseDown = function () {
   pul = true;
   clearInterval(ID);
   ID = setInterval(onda, 30);
}
onMouseUp = function () { pul = false;}
function onda() { 
  if (pul) { 
     cont = 0; 
     XM = (_xmouse-salidaMC._x)/2 ;
     YM = (_ymouse-salidaMC._y)/2;
     ori.setPixel(XM, YM, 0)
      agua.scaleY = agua.scaleX += 10*(agua.scaleX<(fz-10));
   } else { 
     cont++;
      if (cont>fz) { 
        agua.scaleY = agua.scaleX -= 5*(agua.scaleX>50)+.25;
      } 
  }
   sal.applyFilter(ori, new Rectangle(0, 0, w/2, h/2), pt, ola);
   sal.draw(sal, Nx, null, "add");
   sal.draw(acum, Nx, null, "difference");
   sal.draw(sal, Nx, ade);
   sal1.draw(sal, Mx, null, null, null, true); 
   sal2.applyFilter(img, new Rectangle(0, 0, w, h), pt, agua);
   acum = ori;   ori = sal.clone();
   if (agua.scaleX<=0) { 
      agua.scaleY = agua.scaleX=fz;
      cont = 0;
     clearInterval(ID);
   }
}

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 28 Ene 2007 11:40 pm
muy buenos codigos, felicidades

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  

en algún lugar del mundo

msie
Citar            
MensajeEscrito el 29 Ene 2007 12:36 am
aun no lo puedo lograr, hay algo que choca o no sé..
se ve un poco transparente, pero no queda en el fondo :(
ayudame porfavor Teseo.

te dejo el codigo como lo tengo.

Código :

import flash.display.*;
import flash.geom.*;
import flash.filters.*;
img = BitmapData.loadBitmap("nuevo");
createEmptyMovieClip("salidaMC", 1);
salidaMC.attachBitmap(img, 2, "auto", true);
salidaMC.blendMode=6;
w = img.width-1;
h = img.height-1;
pt = new Point();
Nx = new Matrix();
Mx = new Matrix();
Mx.scale(2, 2);fz = 60;// fz: fuerza del oleaje de 0 en adelante;
v = (255/256)-1/100000;sal = new BitmapData(w/2, h/2);
sal1 = sal2 = new BitmapData(w, h);
salidaMC.attachBitmap(sal1, 3);
ori = acum = new BitmapData(w/2, h/2, false, 128);
salidaMC.attachBitmap(sal2, 0); 
ola = new ConvolutionFilter(3, 3, [1, 1, 1, 1, 1, 1, 1, 1, 1], 9);
ade = new ColorTransform(0, 0, v, 1, 0, 0, 2, 0);
agua = new DisplacementMapFilter(sal2, pt, 4, 4, fz, fz);

onda();
onMouseDown = function () {  
 pul = true;  
 clearInterval(ID);   
ID = setInterval(onda, 30);
}
onMouseUp = function () { 
pul = false;
}
function onda() {   
if (pul) { 
     cont = 0;  
    XM = (_xmouse-salidaMC._x)/2 ; 
    YM = (_ymouse-salidaMC._y)/2;  
   ori.setPixel(XM, YM, 0)   
   agua.scaleY = agua.scaleX += 10*(agua.scaleX<(fz-10));  
 } 
else {  
    cont++;  
    if (cont>fz) {  
       agua.scaleY = agua.scaleX -= 5*(agua.scaleX>50)+.25;     
 }  
 }  
sal.applyFilter(ori, new Rectangle(0, 0, w/2, h/2), pt, ola); 
  sal.draw(sal, Nx, null, "add");   sal.draw(acum, Nx, null, "difference");
   sal.draw(sal, Nx, ade);   sal1.draw(sal, Mx, null, null, null, true); 
   sal2.applyFilter(img, new Rectangle(0, 0, w, h), pt, agua);  
 acum = ori; 
  ori = sal.clone();  
 if (agua.scaleX<=0) {  
     agua.scaleY = agua.scaleX=fz; 
     cont = 0;     clearInterval(ID);  
 }
}

Por rzs

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 31 Ene 2007 06:12 pm
Hola Teseo, de nuevo felicitarte por tu trabajo y generosidad, por mas vuelta que le doy no se como situar la imagen en una cierta parte de la pantalla, me refiero al efecto del agua,gracias Teseo.

Por arri

30 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 31 Ene 2007 06:22 pm
Teseo perdona por la pregunta de antes de situarlo en cierta parte de la pantalla, esta resuelto , un poco de despiste lo siento.

Por arri

30 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 05 Feb 2007 12:38 pm
Estoy viendo estos códigos. Son fantásticos. ¡Bueno!... Estoy usando o intentándolo hacer el siguiente script para dar el efecto de bandera al viento...

Código :

//mover bandera al viento
import flash.display.BitmapData;
import flash.geom.*;
import flash.filters.*;
img = BitmapData.loadBitmap("imagen");
img2 = img.clone();
createEmptyMovieClip("efecto",0);
efecto.attachBitmap(img,0);
offset = new Point();
desMap = new DisplacementMapFilter(img2,new Point(),1,1,24,20,"clamp");
onEnterFrame = function(){
   offset.x -= 7;
   offset.y -= 4;
   img2.perlinNoise(200,400,1,0,true,true,1,true,[offset]);
   img.merge(img2,new Rectangle(0, 0, 100, 120), new Point(),256,0,0,0);
   efecto.filters=[desMap];
}

Este script funciona muy bien cuando importas la imagen a la biblioteca... En mi caso particular la bandera la cargo dinámicamente dependiendo de la nacionalidad del usuario mediante el siguiente script...

Código :

.......
.......
var_banderas.load(ruta+bandera);
var_banderas.onLoad = function(exito:Boolean) {
 if (exito) {
    loadMovie(ruta+bandera, bandera_mc);
    bandera_mc._xscale = 18; 
    bandera_mc._yscale = 15;

.......
.......

Aunque lo he intentado de todas las maneras que conozco, no consigo hacerlo funcionar en mi script....
¿Qué hago mal?
Gracias

[zah]¡Usa las ETIQUETAS CODE![/zah]

Por trucosweb

65 de clabLevel



Genero:Masculino  

Santander

msie7
Citar            
MensajeEscrito el 05 Feb 2007 06:07 pm
Si tienes un clip llamado mc:

Código :

var mc:MovieClip;
var img:BitmapData = new BitmapData(mc._width, mc._height, true);
img.draw(mc);
mc._visible = false;

Por cierto, después de 85 mensajes ya deberías saber usar las etiquetas code y que no se deben repetir posts!

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 05 Feb 2007 06:11 pm
trucosweb:
Puedes hacer perfectamente lo que te dice zah.
Si quieres hacer el script con esa modificación "integrada" hazlo así:
Cuando efectuas esa carga lo que tienes es un MC. Necesitamos un bitmap de ese MC para trabajar con él.( Lo que hace el script de zah)
Este es el script modificado para trabajar con el MC bandera_mc que cargas.
La diferencia es que tomamos los datos de ancho y alto de la bandera cargada para crear un marco que es un bitMap de las dimensiones deseadas. Clonamos este para usarlo de ola. Ahora le dibujamos a marco( que está vacio) el MC que contiene la bandera bandera_mc. Hacemos otra copia del dibujo en un nuevo marco marco2 para la mezcla. Y finalmente usamos el MC original (podríamos hacerlo en uno nuevo) para cargarle el bitmap marco y en el mismo subnivel (0) para pisar el anterior (el cargado).
bandera_mc.attachBitmap(marco,0); ( Esta linea creo que se puede suprimir en el código, prueba porque lo he corregido aquí al vuelo y sin testear la variación. Si no funciona dímelo y pruebo, pero me parece que es correcta. La he puesto por el tema del redimensionado)


Código :

import flash.display.BitmapData;
import flash.geom.*;
import flash.filters.DisplacementMapFilter;
br=180; // brillo de 0 a 256 
velo=10; //velocidad viento 
ond= 10; //nº de ondas que se crean
w = bandera_mc._width;
h = 4*bandera_mc._height/3;
marco = new BitmapData(w,h,true,0);
ola = marco.clone()
marco.draw(bandera_mc,new Matrix(1,0,0,1,0,h/7));
marco2 = marco.clone();
bandera_mc.attachBitmap(marco,0);
offset = new Point();
ond= ond*.16;
velo = velo*.26;
desMap = new DisplacementMapFilter(ola,new Point(),8,8,24,20,"clamp");
onEnterFrame = function (){
  offset.x -= velo*w/50;
  offset.y -=velo*w/100;
  ola.perlinNoise(w,2*h,1,0,true,true,8,true,[offset]);
  marco.perlinNoise(w/ond,h/(ond*2),1,0,true,true,7,true,[offset]);
  marco.merge(marco2,new Rectangle(0,0,w,h),new Point(),br,br,br,256);
  bandera_mc.filters = [desMap];
};

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 05 Feb 2007 06:19 pm
Hola zah
Perdona mi ignorancia respecto a las etiquetas code....
Estoy revisando tu código. Imagino que faltará más action para poder obtener el efecto de bandera.
Ya comenté que el srcipt funciona correctamente cuando cargas las imagen en la biblioteca y la vinculas.
En mi caso la imagen la cargo dinámicamente. Al mc contenedor es al que debo aplicar el filtro de bandera. ¿Estoy equivocado?...
De todas las maneras y para no repetir código, arriba indico la forma de cómo cargo mi bandera.
Gracias por la yuda prestada....

Por trucosweb

65 de clabLevel



Genero:Masculino  

Santander

msie7
Citar            
MensajeEscrito el 05 Feb 2007 06:24 pm
De todas las maneras he probado esa porción de script y el flash me devuelve el siguiente error...
No se pudo cargar la clase o interfaz 'BitmapData'.
var img:BitmapData = new BitmapData(bandera_mc._width, bandera_mc._height, true);
Mi mc contenedor se llama bandera_mc
Gracias

Por trucosweb

65 de clabLevel



Genero:Masculino  

Santander

msie7
Citar            
MensajeEscrito el 05 Feb 2007 06:42 pm
Teseo te lo explica perfectamente. Y lo mío en rigor era un trozo de código que tenías que sustituir por la línea img = BitmapData.loadBitmap("imagen"); suponiendo que mc sea el nombre del clip al que quieras aplicar el efecto. Teseo te propone hacer lo mismo, pero en el mismo clip, sin tener que ocultarlo, aunque habría que inventarse una historia para ocultar lo de debajo.
Mi código sería así (todo bien cocinadito ¬¬):

Código :

import flash.display.BitmapData;
import flash.geom.*;
import flash.filters.DisplacementMapFilter;
br = 180;
// brillo de 0 a 256 
velo = 10;
//velocidad viento 
ond = 10;
//nº de ondas que se crean   
//img = BitmapData.loadBitmap("imagen");
img = new BitmapData(mc._width, mc._height, true);
img.draw(mc)
//mc._visible=false;
w = img.width;
h = 4*img.height/3;
marco = new BitmapData(w, h, true, 0);
ola = marco.clone();
marco.draw(img, new Matrix(1, 0, 0, 1, 0, h/7));
marco2 = marco.clone();
//createEmptyMovieClip("bandera", this.getNextHighestDepth());
mc.attachBitmap(marco, 0);
offset = new Point();
ond = ond*.16;
velo = velo*.26;
desMap = new DisplacementMapFilter(ola, new Point(), 8, 8, 24, 20, "clamp");
onEnterFrame = function () {
   offset.x -= velo*w/50;
   offset.y -= velo*w/100;
   ola.perlinNoise(w, 2*h, 1, 0, true, true, 8, true, [offset]);
   marco.perlinNoise(w/ond, h/(ond*2), 1, 0, true, true, 1 | 2 | 4, true, [offset]);
   marco.merge(marco2, new Rectangle(0, 0, w, h), new Point(), br, br, br, 256);
   bandera.filters = [desMap];
};

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 05 Feb 2007 06:53 pm
gracias zah
no funciona... ¡bueno!.... ahora por lo menos no da error... se aprecia un puntito haciendo "algo dentro de bandera_mc".... pero nada más...
de todas las maneras gracias por contestar....
un saludo
javier

Por trucosweb

65 de clabLevel



Genero:Masculino  

Santander

msie7
Citar            
MensajeEscrito el 05 Feb 2007 09:39 pm
Este es un código para hacer una carga externa de la imagen a ondear como bandera.
Cuando se quiera cargar o cambiar la imagen, simplemente dar la orden de carga (la última linea) en cualquier evento.
nota: Carga en el nivel 0 si se desea otro nivel cambiar ese valor en las 2 lineas que crean el MC bandera_mc

Código :

import flash.display.BitmapData;
import flash.geom.*;
import flash.filters.DisplacementMapFilter;
bandera_mc = createEmptyMovieClip("bandera_mc", 0);
miListener =new Object();;
cargador = new MovieClipLoader();
cargador.addListener(miListener);
miListener.onLoadInit = function(bandera__mc){
 br=180; // brillo de 0 a 256 
 velo=10; //velocidad viento 
 ond= 10; //nº de ondas que se crean
 w = bandera_mc._width;
 h = 4*bandera_mc._height/3;
 marco = new BitmapData(w,h,true,0);
 ola = marco.clone()
 marco.draw(bandera_mc,new Matrix(1,0,0,1,0,h/7));
 marco2 = marco.clone();
 bandera_mc = createEmptyMovieClip("bandera_mc", 0);
 bandera_mc.attachBitmap(marco,0);
 offset = new Point();
 ond= ond*.16;
 velo = velo*.26;
 desMap = new DisplacementMapFilter(ola,new Point(),8,8,24,20,"clamp");
 onEnterFrame = function (){
   offset.x -= velo*w/50;
   offset.y -=velo*w/100;
   ola.perlinNoise(w,2*h,1,0,true,true,8,true,[offset]);
   marco.perlinNoise(w/ond,h/(ond*2),1,0,true,true,7,true,[offset]);
   marco.merge(marco2,new Rectangle(0,0,w,h),new Point(),br,br,br,256);
   bandera_mc.filters = [desMap];
 }
}
/*
cada vez que se dé la siguiente orden en cualquier evento
cargará la bandera o imagen de la URL: rutadebandera (en este
ejemplo es "bandera1.jpg" supuestamente en el mismo directorio)                                       
*/
cargador.loadClip("bandera1.jpg", bandera_mc);

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 05 Feb 2007 11:20 pm
Hola Teseo
No funciona... Te he enviado un mensaje privado con el link del fla para que lo veas con tus propios ojos. He realizado diferentes pruebas sin resultados satisfactorios. La única diferencia es el método de carga de la imagen.... Mi script principal carga las imgs con urls... es decir, http://www.dominio.com/carpeta/bandera.jpg
¡En fin!... ¡esto es una locura!...
Un saludo
Javier

Por trucosweb

65 de clabLevel



Genero:Masculino  

Santander

msie7
Citar            
MensajeEscrito el 06 Feb 2007 09:22 am
Si funciona, el script está comprobado, pero no instancies ningún MC en el escenario con el nombre bandera_mc. Ya lo crea el script.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 06 Feb 2007 09:42 am
Hola Teseo
Efectivamente funciona.... sin instanciar a bandera_mc
Gracias
Javier

Por trucosweb

65 de clabLevel



Genero:Masculino  

Santander

msie7
Citar            
MensajeEscrito el 06 Feb 2007 09:57 am
Hola
En grande queda muy bien... Al reducir el tamaño por exigencias de la web que la contiene el efecto en un momento dado hace extraños... ¡pero queda bien!...
Un saludo
Javier

Por trucosweb

65 de clabLevel



Genero:Masculino  

Santander

msie7
Citar            
MensajeEscrito el 06 Feb 2007 10:59 am
Ese es "otro" error. Efectuar el redimensionado fuera del script.....el bitMap no lo hará y se crea una imagen doble.
Justo después de esta linea:
bandera_mc.attachBitmap(marco,0);
Coloca el redimensionado que se debe de hacer ANTES de la llamada al filtro.
bandera_mc._xscale = 15;
bandera_mc._yscale = 15;

NOTA importante: el borde se mantiene por el "clamp" del desplazamiento de mapa de bits.
Si el BORDE de la bandera no está bien definido ( algunos jpg o gif tienen un suavizado o distinto color en el borde) eso será arrastrado y la visualización será mas defectuosa. Para evitarlo, editar la bandera y retocar esos bordes de distinto color.

Posteriormente ya pueden hacer modificaciones de tamaño y posición del MC fuera del script
Aquí pongo un ejemplo con unas banderas "como vienen" y otras con el borde retocado para que se aprecie la diferencia:
Ejemplo de carga externa:
CLICKAR EN LA BANDERA PARA CAMBIAR

este es el script de carga añadido en el ejemplo anterior:

Código :

cargador.loadClip("http://www.direccion.com/flags/cristalab.jpg", bandera_mc);
arrayflag=[];
n=0;
arrayflag[0] = "http://www.direccion.com/flags/espana.jpg";
arrayflag[1] = "http://www.direccion.com/flags/colombia.gif"; 
arrayflag[2]= "http://www.direccion.com/flags/chile.gif"; 
arrayflag[3]="http://www.direccion.com/flags/europa.gif"; 
arrayflag[4]="http://www.direccion.com/flags/cristalab.jpg"; 
arrayflag[5]="http://www.direccion.com/flags/pastafari.jpg"; 
onMouseDown = function(){
   cargador.loadClip(arrayflag[n%6], bandera_mc);
   n++
}

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 13 Feb 2007 08:40 pm
Este código efectua una partición en trozos de cualquier imagen. Las "piezas" quedan almacenadas como un array de pz[n] para poder moverse o usarse según convenga.
Cogemos una imagen, llamamos a la función y ya está hecho el puzzle!!
Está escrito como una función llamada puzzle a la que llamamos para dividir la imagen del siguiente modo:
puzzle("imagen", filas, columnas, false);
Imagen es el nombre de vinculación desde la biblioteca, luego las filas y colunmas deseadas y por último si hacer cuadros o piezas de puzzle (true o false).
Las piezas tienen cada una una forma distinta generándose aleatoriamente.
El filtro de borde y el "imán" de posición se ajustan automáticamnete dependiendo del tamaño de las piezas.
La partición en cuadraditos, tiras, etc es muy util para efectos de transiciones de imágenes. Pondré un ejemplo posteriormente con esa utilidad.
He añadido solamente el cambiador de nivel, un ajustador automático de posición y un detector de puzzle terminado o "todas en su sitio" en las funciones de drag.
Los movimientos de mezcla y dispersión son funciones aparte que dependen de la aplicación que demos al script.
CODIGO 13: Puzzle

Código :

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

puzzle("imagen", 4, 4, false); // tipo de llamada a la función

function puzzle(imagen, f, c, lin) {
   for (hg=0; hg<4*tpz; hg++){pz[hg].removeMovieClip();}
   a=new Array(1,12,0,.35,2,12,1,.15,3,2,4,.2,5,4,6,.5,7,6,8,.5,10,12,2,.15,9,8,10,.4,11,12,10,.15);
   tpz = f*c;
   c>f ? j=20/c : j=20/f;
   bF = new BevelFilter(1,45,0xffffff,.5,0,.5,j,j,4,3,"inner",false);
   img = BitmapData.loadBitmap(imagen);
   w = img.width; h = img.height; m1 = w/(3*c); m2 = h/(3*f);
   // creando matriz delados congruentes entre piezas contiguas
   p = []; d = 0; 
   for (m=0; m<4*tpz; m+=4) {
      p[m+7] = p[m+1] = d++;
      if((d-1)%(2*c) == 2*(c-1)) {p[m+1]=p[(m+4)%(4*tpz) +3]=2*tpz-2};
      p[m+4*c] = p[m+2] = d++;
      if(d>2*(tpz-c) && d%2 == 0) {p[m+2]=p[(m+4*c)%(4*tpz)]=2*tpz-1};
   }
   for (g=0; g<2*tpz; g++) {
      b[g] = [];
      b[g][0] = new Point(m1, m2);
      alea()<0 ? sig=-1 : sig=1; // curvas a distinto lado aleatoriamente
      if (g%2 == 0) { //puntos para lados horizontales
         b[g][12] = new Point(m1, 4*m2);
         b[g][4] = new Point(m1-m1*sig*.6, m2*(2+alea()));
         b[g][6] = new Point(m1-m1*sig*.9, m2*(2.5+alea()));
         b[g][8] = new Point(m1-m1*sig*.6, m2*(3+alea()));
      } else { //puntos para lados verticales
         b[g][12] = new Point(4*m1, m2);
         b[g][4] = new Point(m1*(2+alea()), m2-m2*sig*.6);
         b[g][6] = new Point(m1*(2.5+alea()), m2-m2*sig*.9);
         b[g][8] = new Point(m1*(3+alea()), m2-m2*sig*.6);
      }
      for (r=0; r<29; r+=4){ //puntos centrales de curvas para H y V 
         b[g][a[r]] = Point.interpolate(b[g][a[r+1]],b[g][a[r+2]],a[r+3]+alea());
      }
   }
   pz = [];
   pt=[];
   for (n=0; n<f*c; n++) {
      pz[n] = createEmptyMovieClip("pz"+n, n+1);
      tmp2 = new BitmapData(5*m1, 5*m2, true, 0);
      pt[n] = new Point((n%c)*3*m1-m1, Math.floor(n/c)*3*m2-m2);
      tmp2.copyPixels(img,new Rectangle(pt[n].x,pt[n].y,5*m1,5*m2),null);
      //dibujando los 4 lados de cada pieza
      for (z=0; z<4; z++) {
         z == 2 ? sy=3*m2 : sy=0; z == 1 ? sx=3*m1 : sx=0;
         g = p[4*n+z];
         pz[n].beginBitmapFill(tmp2);
         pz[n].moveTo(5*m1/2, 5*m2/2);
         pz[n].lineTo(b[g][0].x+sx, b[g][0].y+sy);
         if (g>(2*tpz-3) || lin){pz[n].lineTo(b[g][12].x+sx, b[g][12].y+sy);}
         else {
            pz[n].lineTo(b[g][1].x+sx, b[g][1].y+sy);
            for (j=2; j<12; j+=2){
               pz[n].curveTo(b[g][j].x+sx, b[g][j].y+sy,b[g][j+1].x+sx,b[g][j+1].y+sy);
            }
            pz[n].lineTo(b[g][12].x+sx, b[g][12].y+sy);
         }
         pz[n].lineTo(5*m1/2, 5*m2/2);
         pz[n].endFill();
      }
      //doblando la asignacion para evitar fallos por decimales.
      pz[n]._x = pt[n].x; pt[n].x = pz[n]._x;
      pz[n]._y = pt[n].y; pt[n].y = pz[n]._y;
      pz[n].filters = [bF];
      pz[n].v = n;
   }
   for (h=0; h<tpz; h++) {
      pz[h].onPress = function() {
         this.startDrag();
         this.swapDepths(tpz+1);
      }
      pz[h].onRelease = function() {
         this.stopDrag();
         // iman de colocación si está cerca la pieza.
         cerca = new Point(this._x,this._y)
         if (Point.distance(pt[this.v],cerca)< 4+(m1+m2)/15){
            this._x = pt[this.v].x; this._y = pt[this.v].y;
         }
         //comprobador de puzzle completo:
         cnt=0;
         for (tt=0; tt<tpz; tt++){
           if((pz[tt]._y == pt[tt].y) && (pz[tt]._x == pt[tt].x)) {++cnt;}
           cnt==tpz ? texto="completo" : texto="faltan: "+(tpz-cnt);
        }
      }
   }
}

EJEMPLO:
CLICKAR EN LAS PIEZAS PARA MOVERLAS y Usar los botones para ver distintas formas.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 18 Feb 2007 01:32 pm
Que bien esta echo este Post, Teseo eres una machine :D

Pd: Una anotacion, este post no tendria que estar en el Foro de ActionScript.....

Por Suriv

131 de clabLevel



 

firefox
Ir a página Anterior  1, 2, 3, 4, 5 ... 9, 10, 11  Siguiente
Foros de discusión > Flash

 

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