Comunidad de diseño web y desarrollo en internet online

Cambiar brillo y contraste de un movieclip con actionscript 2

Citar            
MensajeEscrito el 05 Feb 2015 05:30 pm
Hola:
Necesito que alguno de los que programáis y conocéis muy bien actionscript 2 me indicara cómo puedo modificar brillo de un movieclip a través de un botón. Sé que se puede hacer con ColorMatrixFilter, pero me lío mucho. Gracias de antemano

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Feb 2015 01:56 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Feb 2015 04:26 pm
No lo he utilizado nunca pero voy a mirar y si no es complicado y puedo lo intentaré. Muchas gracias

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Feb 2015 11:41 am
He descargado GreenSock-AS3 y lo he puesto en la carpeta donde tengo el programa Flash. He puesto en la configuración de actionscript 2 la ruta donde se tiene que localizar. En el archivo de prueba he dibujado un cuadrado coloreado, lo he convertido en movieclip (mc) y he puesto un botón (boton) de forma que al presionar el botón cambie el contraste y brillo del cuadrado:
-----------------------------
import com.greensock.plugins.TweenPlugin;
import flash.filters.ColorMatrixFilter;

boton.onPress = function() {
TweenLite.to(mc, 1, {colorMatrixFilter:{amount:1, contrast:2, brightness:5}});
}
---------------------------

pero algo no hago bien ya que algo tan simple y no funciona.
Podrías indicarme qué hago mal? Puedo imaginar qué pero no estoy segura. Espero respuesta y luego comento lo que he observado.
Muchas gracias de antemano

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Feb 2015 01:36 pm
El primer argumento de TweenLite.to es una referencia al objeto, y sospecho que lo que tienes lo copypasteaste de la ayuda. Necesitas una referencia al objeto. Supongamos que creaste un mc con nombre de instancia "miClip", prueba así

TweenLite.to(getChildByName("miClip"), 1, {colorMatrixFilter:{amount:1, contrast:2, brightness:5}});

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Feb 2015 01:42 pm
Perdón, bajaste la librería de AS3, entonces tienes que usar AS3 como te puse en el POST anterior, sino baja la librería de AS2 y prueba de nuevo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Feb 2015 06:08 pm
Sí, ese es el fallo creí haber cometido cuando me lo indicaste, pero lo cierto es que no encontraba la de AS2 en la dirección indicada, tuve que hacer búsqueda. A ver si me sale algo.
Gracias

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Feb 2015 07:01 pm
Es que volver tan atrás en el tiempo no es fácil, pero bueno, si la encontraste vuelve a probar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Feb 2015 03:26 pm
Encontré la librería AS2 pero tampoco observo que cambie nada. Debo hacer algo mal, pienso yo

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Feb 2015 03:31 pm
Seguramente, pon que código estas usando

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Feb 2015 03:36 pm
Este es el código de prueba :
-------------------------------------------

import com.greensock.plugins.TweenPlugin;
import flash.filters.ColorMatrixFilter;

boton.onPress = function() {
TweenLite.to(miClip, 1, {colorMatrixFilter:{amount:1, contrast:2, brightness:5}});
}
-----------------------------------------------------

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Feb 2015 03:45 pm
Tienes en el escenario un boton con nombre de instancia boton y un MovieClip con nombre de instancia miClip? Da errores?

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Feb 2015 03:51 pm
Sí, tengo eso y me da errores. Te muestro la dirección de la librería AS", por si tú ves algo raro. En mi flash 8, En Edición, luego en Preferencias y luego en ActionScript, en Lenguaje, selecciono Configuración de ActionScript 2 y en la Ruta aparece:
C:\Program Files\Macromedia\GreenShock-AS2\com
ahí es donde he colocado la librería y supuestamente el programa tiene que buscarla ahí, no?

Gracias

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Feb 2015 04:05 pm
Uff, ok, vamos con lo primero.
Si bien la ruta a las librerías se puede poner en las preferencias, comienza usando rutas desde donde esta tu fla para minimizar posibles problemas. Asumo que te bajaste el zip desde Github, lo descomprimes y copia desde la carpeta com con todas tus subcarpetas. SUpongamos que tu fla está en Mis documentos, entonces tienes que tener una ruta Mis documentos/com/greensock/ etc. De esta forma nos aseguramos que funcione el import y podamos empezar a probar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Feb 2015 08:58 am
Ante todo darte las gracias por molestarte tanto. Esto es importante para poder implementar una aplicación educativa.
Pero ya no se me ocurre más. He puesto:
Mis documentos/com/greensock/plugins
y sigo sin apreciar nada

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Feb 2015 09:18 am
Bueno, descubrí que la ruta de la clase en realidad la tengo que poner siguiendo estos pasos:
1º) Archivo > Configuración de publicación para abrir el cuadro de diálogo Configuración de publicación.
2º) En la ficha Flash, seleccionar ActionScript 2.0 .
3º) En el cuadro de diálogo de Configuración de ActionScript, añadir la carpeta deseada de la clase (en nuestro caso com/greensock/plugins) a la ruta de clases, para ello:
4º) En Buscar ruta, se busca la carpeta que se desea añadir y se hace clic en Aceptar.

Ahora lo he hecho así, pero sigo sin ver cambios.

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Feb 2015 10:54 am
La estructura sería así

Mis documentos/test.fla
Mis documentos/com/greensock/plugins/ .......

EL contenido del zip es algo así

GreenSock-AS2-master.zip\GreenSock-AS2-master\src\com\....

Tomas la carpeta com y todas sus subcarpetas, y la descomprimes en Mis Documentos. Esto hará que el fla pueda usar

import com.greensock.plugins.TweenPlugin;

Y por que funciona? Porque tienes la carpeta

Mis documentos/com/greensock/plugins/TweenPlugin.as

Los import refieren a carpetas, y si la carpeta está por debajo del fla, significa que el archivo debe estar en esa ruta. No hace falta que oruebes con mas código que el import, si falla ya te tira un error. Con paciencia estoy seguro que lograrás tu import

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Feb 2015 11:09 am
Voy a observar que todo esté correctamente, ya que algo se escapa. Muchísimas gracias

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Feb 2015 09:28 am
Finalmente, con el código siguiente conseguí el efecto.
Sin embargo, he observado que no funciona para movieclips realizados a partir de una imagen jpg, que justamente es con lo que quiero cambiar brillo y contraste.
--------------------------------------
import com.greensock.TweenLite;
import com.greensock.plugins.TweenPlugin;
import com.greensock.plugins.ColorMatrixFilterPlugin;
TweenPlugin.activate([ColorMatrixFilterPlugin]);

boton.onPress = function() {
TweenLite.to(miClip, 1, {colorMatrixFilter:{amount:1, contrast:1, brightness:1}});

}
---------------------------------------

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Feb 2015 01:50 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Feb 2015 04:59 pm
Bueno, ahora puse otra imagen, la convertí en movi y funcionó.
En cualquier caso no uso AS· porque el flash 8 que tengo trabaja con AS2 y pagar, la verdad me cuesta en estos momentos.
Gracias

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Feb 2015 06:14 pm
Me he descargado unos ficheros de quasimondo y lo cierto es que he encontrado lo que buscaba. Intentaré hacer mi propia cosecha con lo que he aprendido. Todo ello, gracias a tí, tus conocimientos y paciencia. Muchas gracias. Ya he avanzado mucho en mi objetivo.

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Feb 2015 11:30 pm
Buenísimo, suerte !

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Feb 2015 12:31 pm
Persiguiendo mi objetivo de poder cambiar brillo y contraste a un MovieClip, necesito entender y ver cómo puedo cambiar las cosas para lograr mi fin.
Me gustaría saber si ciertamente con las sentencias siguientes, se logra:
1º) Dibujar una instancia MovieClip de origen en un objeto BitmapData.
2º) Cambiar brillo y contraste de dicho MovieClip, construido a partir del objeto BitmapData.
----------------------------------
import flash.display.*;
import flash.geom.*;
import flash.filters.*;
import ColorMatrix;
var brightness:MovieClip;
var contrast:MovieClip;
var grid:Array=Array();
for (var y:Number=0;y<4;y++){
for (var x:Number=0;x<4;x++){
var n=grid.push(this["cb_"+y+""+x]);
grid[n-1].addEventListener("click",this);
}
}
brightness.addEventListener("change",this);
contrast.addEventListener("change",this);
var image_in:BitmapData = BitmapData.loadBitmap("demo");
var image:BitmapData = new BitmapData(image_in.width,image_in.height,true);
attachBitmap(image,1);
var fillMap:BitmapData = new BitmapData(10,10,false,0xffffff);
fillMap.fillRect(new Rectangle(0,0,5,5),0xcccccc);
fillMap.fillRect(new Rectangle(5,5,5,5),0xcccccc);
lineStyle();
beginBitmapFill(fillMap);
lineTo(image_in.width,0);
lineTo(image_in.width,image_in.height);
lineTo(0,image_in.height);
lineTo(0,0);
endFill();
show();
function show():Void
{
image.draw(image_in);
var mat:ColorMatrix = new ColorMatrix();
mat.adjustContrast(contrast.value/100);
mat.adjustBrightness(255*brightness.value/100);

var cr:Number = (grid[0].selected ? 1:0) | (grid[1].selected ? 2:0) | (grid[2].selected ? 4:0) | (grid[3].selected ? 8:0);
var cg:Number = (grid[4].selected ? 1:0) | (grid[5].selected ? 2:0) | (grid[6].selected ? 4:0) | (grid[7].selected ? 8:0);
var cb:Number = (grid[8].selected ? 1:0) | (grid[9].selected ? 2:0) | (grid[10].selected ? 4:0) | (grid[11].selected ? 8:0);
var ca:Number = (grid[12].selected ? 1:0) | (grid[13].selected ? 2:0) | (grid[14].selected ? 4:0) | (grid[15].selected ? 8:0);
var cm:ColorMatrixFilter = new ColorMatrixFilter(mat.matrix);
image.applyFilter(image,image.rectangle,new Point(0,0),cm);
}
function click(evt:Object):Void
{
show();
}
------------------------------------------
Si es así, cómo puedo cambiar el brillo y contraste de varias imágenes incluídas en un MovieClip, pero no todas a la vez, si no una cada vez que se haga clic en el botón que la pone en pantalla. Me he explicado?
Gracias de antemano

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Feb 2015 02:12 pm
Ok, te copipastaste el source code el ejemplo que te pasé, el cual es el resúmen de toda la invesigación de Mario Klingerman acerca del MatrixTransformer (de hace casi diez años, claro) Y no es buena idea empezar por el final. Entiendo que quieres aprender, con lo cual tienes que ir haciendo tareas mas simples. Esta es bastante simple:

Dibujar una instancia MovieClip de origen en un objeto BitmapData.

Se hace con el método BitmapData.draw(movieClip) y te permite hacer una copia instantánea de cualquier MC. Arranca con eso

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Feb 2015 09:05 pm
Sí, claro. Voy aprendiendo en función de lo que necesito. Para mí es la forma que mejor me ha funcionado siempre. Ya he hecho ejemplos con el método BitmapData.draw(movieClip) después de haber mirado bien las sentencias de Mario Klingerman. Bueno, a mí me maravilláis la gente que programa así. Yo lógicamente soy una aprendiz de vosotros y voy muy lenta.

Pero ....para situarme y aclararme en lo que yo deseo conseguir, no estoy segura de que ni tan siquiera plantee bien mis dudas: yo quiero saber si de cada imagen que yo tengo en mi moviclip tendría que Dibujar una instancia MovieClip con el método BitmapData.draw(movieClip) para cambiarle el brillo y contraste.

Una y mil veces muchas gracias a todos los foristas.

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Feb 2015 09:18 pm
Toma la parte esencial ... suponiendo que lograste con el metodo draw generar tu copia bitmap, esto es lo que puedes usar:

Código ActionScript :

//image es el BitmapData que copia image_in
image.draw(image_in);
var mat:ColorMatrix = new ColorMatrix();
//donde dice contrast.value cambialo por 50 o el porcentaje de contraste que necesites
mat.adjustContrast(contrast.value/100);
//lo mismo donde dice brightness.value
mat.adjustBrightness(255*brightness.value/100);
var cm:ColorMatrixFilter = new ColorMatrixFilter(mat.matrix);
image.applyFilter(image,image.rectangle,new Point(0,0),cm);


La magia la hace la clase ColorMatrix que es la que se encarga de la matem'atica pesada

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Feb 2015 08:50 am
No veo lo que me quieres enseñar. Si pongo después de generar el bitmap tus sentencias, no se carga la clase ColorMatrix y da error.
En cualquier caso mi problema radica en lograr cambiar brillo y contraste de cada imagen que yo tengo en un movieclip.
Tengo movieclip mc_imagen que contiene 19 imágenes jpg. Tengo un botón que cuando hago clic en él se muestra una de esas 19 imágenes, pongamos que es la 1; de la 1 quiero cambiar brillo y contraste. Después hago clic en botón y aparece imagen 2 y nuevamente quiero tener la posibilidad de cambiar brillo y contraste de ella.
Tal y como funciona lo de Mario Klingerman sólo es aplicable a una imagen jpg pero no a un movieclip

Por cmarcos

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Feb 2015 11:19 am
Ok, es verdad, vamos a modo copy&paste

En un fla nuevo, importas un jpg no muy grande (100x150) como para que se vea la copia. Creas Un MovieClip, metes el jpg dentro y lo arrastras al escenario en 0,0. Dale nombre de instancia mc. Luego pon este code

Código ActionScript :

import flash.display.*;
import flash.geom.*;
import flash.filters.ColorMatrixFilter;
import com.quasimondo.geom.ColorMatrix;

createCopy(mc)

function createCopy(target:MovieClip):Void{
   var image:BitmapData = new BitmapData(target._width, target._height, false, 0xff0000);
   //image es el BitmapData que copia image_in
   image.draw(mc);
   var mat:ColorMatrix = new ColorMatrix();
   //donde dice contrast.value cambialo por 50 o el porcentaje de contraste que necesites
   mat.adjustContrast(50/100);
   //lo mismo donde dice brightness.value
   mat.adjustBrightness(255*50/100);
   var cm:ColorMatrixFilter = new ColorMatrixFilter(mat.matrix);
   image.applyFilter(image,image.rectangle,new Point(0,0),cm);   
   //mostrarlo
   var copy:MovieClip = this.createEmptyMovieClip("holder", 2);
   copy._x= 100, copy._y = 200;
   copy.attachBitmap(image, 0);
}


Metí la rutina de copia en una función así la puedes reutilizar. Muy importante: la carpeta com\quasimondo\geom\ColorMatrix.as tiene que estar en donde tengas tu fla para que el import no falle

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Feb 2015 12:50 pm
Te adjunto un fla muy simplificado. Sobre las imágenes (en este caso muy simplificado, sólo dos) del movieclip mc_imagen que las contiene es donde tengo que actuar ya que mi aplicación se basa en él.
[flash width=550 height=400]C:\Users\usuario\Desktop\ejemplo flash brillo\colormatrix\prueba.swf[/flash]

Por cmarcos

46 de clabLevel



 

firefox

 

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