Comunidad de diseño web y desarrollo en internet online

Efecto reflejo AS

Citar            
MensajeEscrito el 06 Jul 2007 06:39 am
Hola a todos y gracias. Existe algún método vía ActionScript para reflejar clips de película. Y que las acciones lógicamente afecten tanto al clip como alreflejo.

Gracias

Por sirguy

52 de clabLevel



 

msie7
Citar            
MensajeEscrito el 07 Jul 2007 04:18 pm
¿Reflejar?
Te refieres a que tenga un Reflejo... Que clase de reflejo?
Entre ellos, Con el suelo..
Accion para esto no hay.
Pero algun seco del ActionScript debe poder hacerlo!

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 07 Jul 2007 08:38 pm
XD ... seria genial que existiera un filtro mirrow XD... jajajaja

:P... mira, yo te recomendaría lo siguiente:

haces un movieclip contenedor :) dentro de el refrescarás todas tus acciones, creas otro movieclip reflejo y al final de tu script colocas un código donde:

    1. Borres el antiguo d_reflejo (un duplicado de contenedor)
    2. Dupliques el clip contenedor dentro de reflejo (si, d_reflejo)
    3. luego en un for, le des _xscale=-100 a todos los elemntos de d_reflejo

Y con esto tendrás un maravilloso espejo horizontal :P si lo quieres vertical XD... pues en vez de _xscale usa _yscale

:P espero te sirva.

Por El_Beto_TM

156 de clabLevel

1 tutorial

Genero:Masculino  

Mexicali, Baja California

firefox
Citar            
MensajeEscrito el 08 Jul 2007 06:51 pm
^^ NO entendi la esplicasion! :)
Igual seria interesante lograrlo! :o

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 09 Jul 2007 04:01 am
Lo que quiso decir es que duplicás el MC, lo invertís y lo hacés transparente.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 09 Jul 2007 06:07 am
Gracias por las respuestas, pero no es lo que buscaba, ya que en el momento que duplico son dos elementos diferentes y por lo tanto cualquier acción tendría que ser aplicada a ambos, con sus nombres de instancia. Ojalá existiera el filtro.

Un saludo

Por sirguy

52 de clabLevel



 

msie7
Citar            
MensajeEscrito el 09 Jul 2007 03:25 pm
Entonces, creás un MC vacío dónde attacheas el MC que tiene que tener el reflejo, luego, lo duplicás, lo invertís y jugás con la transparencia. Para lograr un mejor efecto podés usar máscaras, para que el reflejo sólo llegue a la mitad del dibujo (es decir, en general no se refleja todo, sino la mitad de abajo).

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 10 Jul 2007 06:11 am
Probaré a ver que puedo hacer. Gracias!!

Por sirguy

52 de clabLevel



 

msie7
Citar            
MensajeEscrito el 10 Jul 2007 10:59 pm
Si puedes crear una mascara Via Script... (Las no en Script no admiten Transparencias)

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 29 Jul 2007 02:14 pm

sirguy escribió:

Gracias por las respuestas, pero no es lo que buscaba, ya que en el momento que duplico son dos elementos diferentes y por lo tanto cualquier acción tendría que ser aplicada a ambos, con sus nombres de instancia. Ojalá existiera el filtro.

Un saludo

:roll: No si cargas un MC externo y lo manejas con AS, seria el mismo, aunque lo dupliques mil veces y lo reflejes mil veces va a tener siempre los efectos del MC original al cual podes aplicarle efectos con un .as que modificas cuando quieras cambiar el efecto, eso correo por tu cuenta e ingenio.
Aca te construi un minifiltro, no sera wuaaaau as3 pero funciona :lol:
http://www.primerhermano.com/imagenes/reflejo.html asi queda
Proba esto me parece que es el efecto que buscas,
1º crea un nuevo simbolo llamalo mascara o como a vos te parezca,
2º va a ser un rectangulo horizontal con un degradado lineal vertical,
con 100% alpha abajo y 0 % alpha hacia el extremo mas cercano a la figura que va a ser reflejada.
(el lado de 100% de alpha tiene que ser del color de fondo obvio)
3º ahora el objeto que queres reflejar tenes que hacerlo externo (.swf), esto para poder importarlo por AS y asi no duplicar en la biblio el clip,
4º en el primer KF de tu pelicula o en el primer KF del MC donde este el objeto reflejado usa esto


Código :

_root.createEmptyMovieClip("pantalla", 1);//el nombre que quieras yo use pantalla
_root.pantalla.loadMovie("nombre_del_clip_externo.swf");//cargas el mc
_root.pantalla._x =0; //posicionas el mc horizontalmente
_root.pantalla._y=0; //posicionas el mc verticalmente
_root.createEmptyMovieClip("reflejo", 2);//el nombre que quieras yo use reflejo
_root.reflejo.loadMovie("nombre_del_clip_externo.swf");//cargas el mismo mc que antes
_root.reflejo._rotation = 180;
_root.reflejo._xscale = -100;
_root.reflejo._alpha = 65;
_root.reflejo._x = 0;
_root.reflejo._y = 280;
_root.attachMovie("mascara", "mascara", 100);//mascara =>nombre de la mascara en la biblio 
_root.mascara._y = 210;//posicionas la mascara

pd: _root obviamente desaparece si el reflejo que vas a crear esta dentro de un nivel distinto a _root
pd 1:esto se aplica tambien a flv e imagenes externas
aca esta el efecto final
pd2: puse en practica el consejo de HernanRivas me parece
http://www.primerhermano.com/imagenes/reflejo.html :cool:

Por rootsco

15 de clabLevel



Genero:Masculino  



Ultima edición por rootsco el 29 Jul 2007 06:54 pm, editado 2 veces

firefox
Citar            
MensajeEscrito el 29 Jul 2007 03:14 pm

jaleru escribió:

Si puedes crear una mascara Via Script... (Las no en Script no admiten Transparencias)

me parece que con un degradado lineal con 100% de alpha en un lado y 0% de alpha el opuesto tenemos una perfecta mascara con transparencia y que yo sepa no es action script :?
y si en realidad era ...(Las EN Script no admiten Transparencias)
attachMovie("mascara", "mascara", 100); donde 100 es el valor alpha asignado a la mascara y se puede cambiar
Saludos. :wink:

Por rootsco

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Jul 2007 08:53 pm

rootsco escribió:

jaleru escribió:

Si puedes crear una mascara Via Script... (Las no en Script no admiten Transparencias)

me parece que con un degradado lineal con 100% de alpha en un lado y 0% de alpha el opuesto tenemos una perfecta mascara con transparencia y que yo sepa no es action script :?
y si en realidad era ...(Las EN Script no admiten Transparencias)
attachMovie("mascara", "mascara", 100); donde 100 es el valor alpha asignado a la mascara y se puede cambiar
Saludos. :wink:


En las mascaras... MASCARAs...a lo que se le llama mascara... No, no puede tener transparencia...
No eso que haces tu...Eso es tan solo sobreponer una imagen...

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 30 Jul 2007 11:28 pm
Y cuales son las mascaras MASCARAS? :? si se puede saber señor...
primero prueba a poner una rectangulo con 100% de allfa en una esquina y 0% de alfa en la otra con degradado lineal y ponla como mascara en propiedades de capa y vas a ver como es una mascara con transparencia primero probalo si no no contradigas gratis que a vos no te salga o no lo sepas hacer no quiere decir que no se pueda
eso seria una mascara segun Jaleru "NO en Script" y si se puede hacer y no es una superposicion de imagenes es una mAsCarA!!
Y esto es una mascara arrastrable con transparencia mediante ActIon Script

Código :

import flash.display.GradientType;
import flash.display.Loader;
import flash.display.Sprite;
import flash.geom.Matrix;
import flash.net.URLRequest;
var loader:Loader = new Loader();
var url:URLRequest = new URLRequest("http://www.flexmediacorp.com/javier/CO_logo.jpg");
loader.load(url);
this.addChild(loader);
var oval:Sprite = new Sprite();
var colors:Array = [0x000000, 0x000000];
var alphas:Array = [1, 0];
var ratios:Array = [0, 255];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(200, 100, 0, -100, -50);
oval.graphics.beginGradientFill(GradientType.RADIAL,
                                colors,
                                alphas,
                                ratios,
                                matrix);
oval.graphics.drawEllipse(-100, -50, 200, 100);
oval.graphics.endFill();
this.addChild(oval);
loader.cacheAsBitmap = true;
oval.cacheAsBitmap = true;
loader.mask = oval;
oval.startDrag(true);

uno entra aqui para brindar lo que sabe y en cuanto lo postea tiene alguien que cuestiona los metodos y los resultados sin siquiera conocer lo que esta cuestionando, asi no dan ganas de compartir nada si siempre tendras un obtuso creyendo que sabe mas que los demas, que indignante :evil:
a los que de verdad quieran sacarse la duda acudir a la documentacion de adobe aqui

Por rootsco

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Jul 2007 02:34 am

rootsco escribió:


uno entra aqui para brindar lo que sabe y en cuanto lo postea tiene alguien que cuestiona los metodos y los resultados sin siquiera conocer lo que esta cuestionando, asi no dan ganas de compartir nada si siempre tendras un obtuso creyendo que sabe mas que los demas, que indignante :evil:
a los que de verdad quieran sacarse la duda acudir a la documentacion de adobe aqui





:? :? :? Mañana verificare tu teoria.....Y te aviso.

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 31 Jul 2007 02:37 am
:lol: Que mal........No se como rayos puedes hacer una mascara con transparencia sin Script......
No...Mañana te subo el Fla..y me dises.....Cual es mi error......... :o (Si es que lo hay)

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 31 Jul 2007 05:10 am
Perdon si te ofendi jaleru no fue mi intencion, aca va como hacerlo
crean una forma (solo lo que quieran mostrar de la imagen enmascarada) con un degradado lineal con 100% de alfa en un extremo y 0% de alfa en el otro, (eso lo manejan en el panel color en tipo de relleno va lineal, y haciendo click en los apuntadores de los extremos de la barra de color pueden colocar el valor alpha justo a la izquierda del color picker, un extremo 100 y el otro 0) presionan F8 converten la forma en MovieClip y le dan el nombre de instancia "mascara"
la imagen o movieclip enmascarado va a tener el nombre de instancia "clip" en este ejemplo
en la linea de tiempo principal colocan este codigo en el primer KeyFrame

Código :

clip.cacheAsBitmap=true;
         mascara.cacheAsBitmap=true;
         clip.setMask("mascara");

y listo tienen la mascara con transparencia que no es generada por action script es una simple forma con gradientes, :wink:
deje el ejemplo aca http://www.primerhermano.com/ejemplos/gradiente.html
PD: esto esta disponible de flash 8 para arriba
y el fla aca para que lo chequen http://www.flexmediacorp.com/gradiente.fla
un saludo

Por rootsco

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Jul 2007 09:01 pm
Ouch! Creo que Hubo asqueroso mal entendido..
Yo ha eso que me dijiste le llamo una mascara via Script.. Ya que fue declarada como mascara desde el Panel de Acciones... Perdon ..Debi especificar xD
ME refiero que las mascaras..(La que uno elije un Layer como MAsked y el otro como Mask)
Esos NO admiten transparencia....
Bueno en.. fin..
Dejemoslo ..una mascara SIN script no puede tener una transparencia...

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 01 Ago 2007 04:26 am
ok.. :roll: ...ta bien..para mi las mascaras script son las generadas completamente via script sin tener que dibujar la forma uno mismo, sino generandola mediante codigo, y las NO en script son obriamente la antitesis de la anterior, pero sin tratar las figuras como bitmap es imposible la tranparencia de una mascara, sea mediante script o no.
saludos

Por rootsco

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 01 Ago 2007 06:47 am
Gracias una vez más por todas las respuestas, pero sigue sin funcionar. El caso es que cargo un vídeo con netStream, cuando uso el script de rootsco llamo al clip, en el swf externo cambio la línea que carga el video:

_root.pantalla.vid.mi_video_1.attachVideo(stream_ns);


Le pongo pantalla pare que cargue el vídeo y con ese cambio se ve el vídeo pero no el reflejo, refleja todo aquello que no es vídeo (bordes, logos,..) pero no el vídeo, supongo que será tema de rutas, ni idea.

En fin muchas gracias a todos.

Por sirguy

52 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Ago 2007 07:37 am
Para poder "reflejar" o hacer cualquier efecto con un video, en muchos casos, tienes que ir tomando sus frames y actuar sobre ellos.
Dicho de otro modo:
-Crea un clip vacio.
-Crea un bitmap del tamaño del video con bitmapData.
-Asocia el bitmap al clip vacio creado.(attachBitmap)
Dibuja en cada frame la imagen del video. (con onEnterFrame o con setInterval) y draw().
-Aplica el efecto al clip(que ahora contiene el frame de video).
Algo así:

Código :

this.createEmptyMovieClip("marco", 1);
bmp = new flash.display.BitmapData(video._width, video._height);
marco.attachBitmap(bmp, 0);
setInterval(captavideo, 30);
function captavideo(){
  bmp.draw(video);
//otras acciones aquí.
}

teniendo en el escenario una instancia de video llamada video
Y el MC marco será el mc al que aplicar lo que queramos ( en este caso un reflejo -_yscale)
ejemplo:
marco._y=video._y+2*video._height;
marco._yscale=-100;
marco._alpha=50;
Nota: el intervalo del setInterval es bueno ajustarlo a las fps del video.

Veamos un ejemplo que aplica lo dicho y sirve para darle nitidez a una imagen de video. ( aquí tomamos la webcam pero puede ser cualquier fuente de video.)

Código :

import flash.display.*;
import flash.geom.*;
import flash.filters.*;
video.attachVideo(Camera.get());
this.createEmptyMovieClip("marco", 2);
bmp=new flash.display.BitmapData(video._width,video._height,false,0);
marco.attachBitmap(bmp, 0,"auto",true);
nitidez = new ConvolutionFilter(3,3,[0,-1,0,-15,-1,0,-1,0]);
IT = setInterval(this, "captaframes", 100);
function captaframes(){
   bmp.draw(video);
   bmp.applyFilter(bmp,bmp.rectangle,new Point(),nitidez);
}
//clickar para ver la diferencia:
this.onMouseDown = function() {marco._visible = false;}
this.onMouseUp = function() {marco._visible = true;}

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 01 Ago 2007 09:16 am
Gracias por la respuesta.
No entiendo muy bien el tema. No sé cómo meto el swf con el netStream en este código. Vamos, que yo tengo un swf externo, cómo lo vínculo a esto. Gracias

Siento no tenerlo claro.

He probado esto:



import flash.display.*;
import flash.geom.*;
import flash.filters.*;
this.mi_video_1.attachVideo(stream);
this.createEmptyMovieClip("marco", 2);
bmp=new flash.display.BitmapData(this.mi_video_1._width,this.mi_video_1._height,false,0);
marco.attachBitmap(bmp, 0,"auto",true);
nitidez = new ConvolutionFilter(3,3,[0,-1,0,-15,-1,0,-1,0]);
IT = setInterval(this, "captaframes", 100);
function captaframes(){
bmp.draw(this.mi_video_1);
bmp.applyFilter(bmp,bmp.rectangle,new Point(),nitidez);
}
//clickar para ver la diferencia:
this.onMouseDown = function() {
marco._visible = false;
}
this.onMouseUp = function() {
marco._visible = true;
}


Me muestra el video pero no el reflejo.

Por sirguy

52 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Ago 2007 01:14 pm
Vamos a ver:
Ese ejemplo es para aumentar la nitidez.........no es para hacer un reflejo!! Si lo llega a hacer despachurro el presupuesto familiar en psiconalistas. :lol:

Si cargas el video en un solo objeto de video que en tu caso es:
_root.pantalla.vid.mi_video_1
con:
_root.pantalla.vid.mi_video_1.attachVideo(stream_ns);
tienes solo un objeto. no habrá reflejos ni nada.

2 caminos:

Creas otro objeto más de video en el escenario, cargas ambos.
y ahora al segundo le colocas, le inviertes y le bajas el alfa ( u otras maniobras)

Código :

_root.pantalla.vid.mi_video_1.attachVideo(stream_ns);
_root.pantalla.vid.mi_video_2.attachVideo(stream_ns);
_root.pantalla.vid.mi_video_2._y=_root.pantalla.vid.mi_video_1._y + 2*_root.pantalla.vid.mi_video_1._height;
_root.pantalla.vid.mi_video_2._yscale=-100;
_root.pantalla.vid.mi_video_2._alpha=50;


Eso dará el reflejo.

El otro camino es con una variación como te indique en el post anterior y con solo un objeto de video:

Código :

import flash.display.*;
import flash.geom.*;
import flash.filters.*;
_root.pantalla.vid.mi_video_1.attachVideo(stream_ns);
this.createEmptyMovieClip("marco", 2);
bmp = new flash.display.BitmapData(_root.pantalla.vid.mi_video_1._width, _root.pantalla.vid.mi_video_1.height);
marco.attachBitmap(bmp,0);
IT = setInterval(this, "correr", 30);
function correr(){
   bmp.draw(_root.pantalla.vid.mi_video_1);
   marco._y=_root.pantalla.vid.mi_video_1._y+2*_root.pantalla.vid.mi_video_1._height;
   marco._yscale=-100;
   marco._alpha=50; 
}

eso también hará el reflejo.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 02 Ago 2007 08:52 am
Lo probaré a ver que pasa. Lo de reflejar vídeo me tiene desesperado. Gracias

Por sirguy

52 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Ago 2007 01:06 pm
Puedes hacer lo mismo.... debes transformar la imagen del video A bitmap..
Con Bitmap Data....
Y luego le aplicas el efecto ya esplicado.

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 05 Dic 2007 12:51 pm
Me a servido el dato del reflejo _yscale = -100 para una galería que estoy desarrollando. Se les agradece ^^

Por Otaku RzO

BOFH

1890 de clabLevel

12 tutoriales
1 articulo

Genero:Masculino   Desarrollador de GAIA Bastard Operators From Hell

Lima - Perú

firefox

 

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