Foros del Web » Creando para Internet » Flash y Actionscript »

Como puedo hacer...

Estas en el tema de Como puedo hacer... en el foro de Flash y Actionscript en Foros del Web. Hola a todos, Estoy haciendo una web completa en flash, cargando swf externos (como indicais en el foro) en cierta posicion de la pelicula. La ...
  #1 (permalink)  
Antiguo 14/11/2005, 03:49
 
Fecha de Ingreso: abril-2005
Mensajes: 13
Antigüedad: 18 años, 11 meses
Puntos: 0
Como puedo hacer...

Hola a todos,

Estoy haciendo una web completa en flash, cargando swf externos (como indicais en el foro) en cierta posicion de la pelicula. La parte superior tiene un menu y abajo es donde cargo los swf.

Cuando veo la web completa, observo que en los swf que cargo, cuando me salgo de los margenes por arriba, tapa parte del menu. (Por ejemplo), al hacer que un mc venga desde arriba a abajo se ve, y no quiero.

Alguna idea? gracias.
  #2 (permalink)  
Antiguo 14/11/2005, 04:29
 
Fecha de Ingreso: abril-2005
Mensajes: 13
Antigüedad: 18 años, 11 meses
Puntos: 0
Capas

Gracias yoseman por tu ayuda, te cuento

Cargo los swf así.

on(press) {
_root.createEmptyMovieClip("vacio");
_root.vacio.loadMovie("ubicacion.swf");
_root.vacio._x = 12.5;
vacio._y = 193.3;
}

es decir, que como se crea dinamicamente, pues no sé en qué capa estaría... no me ha quedado claro, me podrias concretar?? Gracias
  #3 (permalink)  
Antiguo 14/11/2005, 06:30
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 3 meses
Puntos: 5
Tendrías que informarte sobre el uso de setMask, yo lo he probado alguna que otra vez, pero cuando lo voy a aplicar a un mc que carga un swf, no me funiona :(...

Respecto de la profundidad de la capa, aquí tienes un ejemplillo
Código:
_root.onEnterFrame= function()
{
this.createEmptyMovieClip('cuadrado_inicial',1);
_root.cuadrado_inicial.moveTo(0,0);
_root.cuadrado_inicial.beginFill(0xff0000)
_root.cuadrado_inicial.lineTo(100,0);
_root.cuadrado_inicial.lineTo(100,100);
_root.cuadrado_inicial.lineTo(0,100);
_root.cuadrado_inicial.endFill();
this.createEmptyMovieClip('mascara',3);
_root.mascara.moveTo(0,0);
_root.mascara.beginFill(0x000000)
_root.mascara.lineTo(50,0);
_root.mascara.lineTo(50,25);
_root.mascara.lineTo(0,25);
_root.mascara.endFill();
cuadrado_inicial.setMask(mascara);
}
Si te fijas, en este ejemplo la profundidad de la capa a la que aplicarías la máscara es 1, mientras que la capa máscara tiene profundidad de 3, ya que ha de estar por encima, es como un z-index. Te he puesto la capa que quedará enmascarada en rojo, para que quede bien claro que la otra esta actuando.

Pero no consigo hacer que aplique la máscara a un mc que carga un swf :(

A ver si alguién sabe

Salu2 ;)
__________________
[+]
[+]
  #4 (permalink)  
Antiguo 14/11/2005, 22:30
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 3 meses
Puntos: 5
Bueno, creo que lo he conseguido, te voy a poner como lo he hecho, aunque no sé si lo entenderás porque soy nuevo en flash y no sé si me explicaré bien...

Primero en tu clip de pelicula principal, tienes que crear un mc que será el que nos hará de máscara.

Código:
this.createEmptyMovieClip('otro',1);
loadMovie("trivial.swf",otro);
this.createEmptyMovieClip('cuadrado_mascara',2);
_root.cuadrado_mascara.moveTo(100,100);
_root.cuadrado_mascara.beginFill(0xffffff)
_root.cuadrado_mascara.lineTo(550,100);
_root.cuadrado_mascara.lineTo(550,550);
_root.cuadrado_mascara.lineTo(100,550);
_root.cuadrado_mascara.endFill();
Lo que hemos hecho es crear un clip de película que nos servirá posteriormente de máscara con nombre de instancia cuadrado_mascara que comprende como area de la máscara un rectángulo desde la coordenada 100,100 hasta la coordenada 550,550. Pero tu debes de configurar esa máscara para definir el area dónde quieres que se vea tu clip de pelicula. Es decir

Luego tb hemos llamado desde el clip principal al swf que contiene el swf que dices que aparece arriba a abajo. En este caso lo he llamado trivial.swf

Esto sería todo para el clip de película principal.

Luego en la pelicula que corresponde al swf que cargas debes de aplicar la máscara creada en el clip principal. Y dado lo que yo he entendido, para utilizar la función setMask es necesario que la máscara se aplique a un clip de pelicula. Es decir, que las partes de tu swf que quieras enmascarar deberán de estar dentro de un mc.

Para enmascarar el mc desde las acciones del mc
Código:
onClipEvent(load)
{ 
	this.setMask(_root.cuadrado_mascara);
}
Para enmascarar el mc desde las acciones del fotograma
Código:
	nombreInstanciaClipPelicula.setMask(_root.cuadrado_mascara);
Lo único que hacemos es referenciar la máscara creada en la película principal anteponiendo _root, y dependiendo de dónde lo declaremos referenciamos el mc como this(si lo declaramos en el mismo mc) o como su nombre de instancia si es desde fuera(en el ejemplo que te dejo el nombre de instancia del mc a enmascarar es dentro).

Te dejo un ejemplillo http://www.quatricomedia.com/tecnolo...sh/mascara.rar

Por cierto que parece ser que con éste método un clip de pelicula sólo puede enmascarar a otro, es decir sólo a uno, no puede servir de máscara a más de uno. Otra cosa que me he dado cuenta es que esto no significa que si el clip de pelicula que se va a enmascarar contiene otros clips de peliculas, estos no se enmascaren, ya que al pertener al enmascarado si lo harían. Juas esto parece un trabalenguas.

Y por último una cosilla que me he dado cuenta, es que parace que las capas de texto no reaccionana bien con este método, y la solución es meterlas dentro de un clip de película(dentro a su vez del que se va a enmascarar), y luego ya se pueden incluso hacer interpolaciones de movimiento :)

A ver si hay suerte y me he explicado bien y te sirve el ejemplillo(es que estoy empezando con flash y de momento estoy verdecillo :S)

Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 14/11/2005 a las 23:03
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:53.