Problema con Actionscript 3.0 visualizando contenidos
Hola, en primer lugar me presento ya que es mi primer Thread, me llamo Ximo, de Alicante, llevo ya bastante tiempo desarrollando en Actionscript, y después de leer mucha documentación de la nueva versión y estudiar el funcionamiento de la lista de distribución y demás ha llegado el momento de la verdad, me he puesto a crear mi primer proyecto integramente con Actionscript 3.0, y como no han empezado a surgir los problemas, os explico lo que ocurre y os pongo al final la URL de donde está la prueba del problema y a ver si alguien me puede echar un cable, de antemano gracias.
He dejado un ejemplo sencillo, en el que cargo 2 imágenes externas que van a ser el fondo del site. A continuación importo de la biblioteca el logo corporativo de la empresa que en lugar de ser una imagen está creado en Flash, por lo que es vectorial. El problema surge cuando al colocar el logo (vectorial) sobre las imágenes (Bitmap), el logo se ve fatal, como con mucho ruido y sin ninguna nitidez, por más que he buscado no he encontrado nada de información respecto a cual puede ser el problema. Os detallo el orden jerárquico de la lista de visualización desde el MainTimeLine y el enlace del ejemplo y a ver si alguien sabe algo, ok?.
MainTimeLine (la línea de tiempo principal)
-> elementosComunes(clase que genera los elementos de interfaz)
->-> contenedorFondo(Sprite que sirve del contenedor para la imagen de fondo)
->->-> imagenFondo(Bitmap de la imagen cargada dinámicamente)
->-> contenedorImagenFlor(Sprite que sirve del contenedor para otra imagen que tiene el fondo)
->->-> imagenFlor(Bitmap de la otra imagen cargada dinámicamente)
->-> contenedorLogo(El contenedor sobre el que cargamos el elemento de la biblioteca)
->->-> Shape (el objeto creado en flash)
La url donde he colgado el ejemplo es:
http://www.ximodesigns.com/almendral
Espero que alguien me pueda ayudar porque la verdad es que estoy algo desesperado, venga gracias de antemano y un saludo.
Ximo
dourado
Buenas, antes de hacer lo que sea en codigo, que tal si el logo vectorizado lo conviertes a un png(mejor hacerlo en fireworks) y lo vuelves meterle en el flash. En la libreria, en las propriedades del png, lo metes con "Allow smoothing".
Salud++
ximolledo
Hola Dourado, en primer lugar gracias por tu respuesta, ya lo había probado pero te paso url para que veas que se ve mejor, aunque tampoco llega a verse todo lo bien que debiera, supongo que sera porque el logo tiene las serifas de esa letra que son algo delicadas.
A pesar de ello lo que me repatea es que en Actionscript 2.0 no ocurrían esas cosas, colocabas el MovieClip donde quisieras y a funcionar.
Url logo vectorizado: http://www.ximodesigns.com/almendral
Url logo PNG: http://www.ximodesigns.com/almendral/index2.html
Un saludo y gracias.
Ximo.
dourado
ximo.lledo
Hola Dourado, en primer lugar gracias por tu respuesta, ya lo había probado pero te paso url para que veas que se ve mejor, aunque tampoco llega a verse todo lo bien que debiera, supongo que sera porque el logo tiene las serifas de esa letra que son algo delicadas.
A pesar de ello lo que me repatea es que en Actionscript 2.0 no ocurrían esas cosas, colocabas el MovieClip donde quisieras y a funcionar.
Url logo vectorizado: http://www.ximodesigns.com/almendral
Url logo PNG: http://www.ximodesigns.com/almendral/index2.html
Un saludo y gracias.
Ximo.
Pues con el utlimo(png a 24bits) fijate en otra cosa, que la posición del sprite/clip esté a una posición X y Y exacta y no decimales..
Salud++
ximolledo
El .png ya está en una posición exacta en las coordenadas x e y, la verdad es que es desalentador que surjan estas cosas, y más todavía porque llevo bastante tiempo trabajando con Flash/Actionscript y en vez de facilitar las cosas a los desarrolladores parece que nos las compliquen más.
Un saludo.
Ximo.
athomix
Estás aplicando algún filtro? la sombra? es extraño, al aumentar el tamaño se ve bien.
ximolledo
Athomix
Estás aplicando algún filtro? la sombra? es extraño, al aumentar el tamaño se ve bien.
Hola Athomix, no aplico ningún filtro, ya había detectado lo de que al maximizar se veía bien, ya lo he resuelto y no veas el peso que me he quitado de encima, me agobie muchísimo, pero el problema era el siguiente.
Resulta que yo me tenía mi librería de Tweenings creada por mi para AS 2.0, como en AS 3.0 la gestión de eventos cambia (a mejor he de reconocer), yo me preocupé simplemente de hacerla funcionar como lo hacía en AS 2 para que me funcionara en AS 3. Yo en dicha librería creaba las transiciones con eventos onEnterFrame de los que se usan en AS 2, pero en AS 3 podemos hacerlo sobre cualquier objeto DiplayObject, la peculiaridad es que para que funciones eventos Event.ENTER_FRAME de AS 3 has de hacerlo sobre un objeto MovieClip, y yo intentaba hacerlo sobre un Sprite, dándome el error bananero que me daba, ya que el objeto Sprite al no tener línea de tiempo no genera evento ENTER_FRAME mas que cuando se carga la primera vez, por eso daba ese error extraño, ya lo he solucionado gracias a este paquete de Tweeners que me ha sido de ayuda vital http://code.google.com/p/tweener/.
El ejemplo viéndose bien lo tienes en la misma URL de antes:
http://ximodesigns.com/almendral/
Ahora ya sigo desarrollando todo el site y la verdad es que se programa mucho mejor en AS 3 que en AS 2, algo que empezaba a dudar cuando tuve el problema que posteé al principio, pero como casi siempre NO ES QUE ALGO NO FUNCIONE, ES QUE NO SABÍA COMO DEBÍA FUNCIONAR.
Un saludo y gracias por el interés.
Ximo.
athomix
Me alegro, y se agradece que desveles la solución al problema. ;)
dourado
Athomix
Me alegro, y se agradece que desveles la solución al problema. ;)
Enhorabuena por la solución y por los links :)
Salud++
ximolledo
dourado
<div class="quote">
Athomix
<blockquote>Me alegro, y se agradece que desveles la solución al problema. ;)</blockquote>
</div>
Enhorabuena por la solución y por los links :)
Salud++
Gracias a vosotros por el interés, y de nada, que para eso estamos, para echarnos una mano cuando podamos.
Un saludo.
Ximo
ventdaval
ximo.lledo
...la peculiaridad es que para que funciones eventos Event.ENTER_FRAME de AS 3 has de hacerlo sobre un objeto MovieClip, y yo intentaba hacerlo sobre un Sprite,...
Estas seguro? porque a mi esto me funciona perfectamente:
<code>var spr:Sprite=new Sprite();
var i:int=0;
spr.addEventListener(Event.ENTER_FRAME,function() {trace(i++)});</code>
:S
ximolledo
Ventd'Aval
<div class="quote">
ximo.lledo
<blockquote>...la peculiaridad es que para que funciones eventos Event.ENTER_FRAME de AS 3 has de hacerlo sobre un objeto MovieClip, y yo intentaba hacerlo sobre un Sprite,...</blockquote>
</div>
Estas seguro? porque a mi esto me funciona perfectamente:
<code>var spr:Sprite=new Sprite();
var i:int=0;
spr.addEventListener(Event.ENTER_FRAME,function() {trace(i++)});</code>
:S
Hola Ventd'Aval intenta probarlo así:
<code>var spr:Sprite=new Sprite();
spr.alpha=0;
var i:int=10;
spr.addEventListener(Event.ENTER_FRAME,fade);
private function fade():void{
if(str.alpha<100){
spr.alpha+=i;
}else{
spr.alpha=100;
spr.removeEventListener(Event.ENTER_FRAME,fade);
}
}
</code>
Y antes de disparar el Event.ENTER_FRAME carga una imagen de fondo y la colocas debajo del Sprite, todo dinámicamente.
Lo que tu haces te funciona porque no estás modificando ninguna propiedad del Sprite, y no lo tienes situado sobre la imagen de fondo, que es el problema que me surgió a mi. Según he estado leyendo en el libro Essential ActionScript 3.0 de Colin Moock, intentar asignar comportamientos de MovieClip a objetos Sprite que no son exactamente lo mismo puede llevar a comportamientos inesperados, en mi caso fue ese, pero no quiere decir que no lo detecte, igual lo exprese mal en mi post anterior.
Un saludo.
Ximo
ventdaval
perdona, es que yo tambien soy bastante nuevo en as3, y me extraña tu comentario... no entiendo mucho lo q dices...
Tu script tiene varios errores (str.alpha en vez de spr.alpha, alpha ahora es de 0 a 1 (no de 0 a 100), un clip nuevo siempre tiene alpha=1, etc...).
En cualquier caso, las propiedades de un Sprite se pueden modificar igual que las de un MovieClip (de hecho MovieClip extiende de Sprite ^^)... los unicos metodos y propiedades exclusivos de un MovieClip son los que tienen que ver con la linea de tiempo (gotoAndPlay, stop, play, etc...)... y claro, la otra particularidad del MovieClip es que es el unico DisplayObject dinamico, por tanto puedes crearle variables al vuelo... tal que asi:
<code>new MovieClip().mivar=0; //funciona
new Sprite().mivar=0; //error</code>
El enterFrame es un evento de la clase DisplayObject (toooodos los displayObjects pueden tener el evento enterFrame).... por eso me extrañó tu comentario... y no entiendo que tiene que ver la imagen de fondo :S
ximolledo
Yo uso indistintamente la propiedad alpha con valores de 100 o de 1 (solamente que siempre de una forma u otra, sin mezclar la sintaxis), identifica ambos sin problemas (aunque se recomienda utilizar la última como tú has dicho), respecto al tema de la herencia es cierto que ambas heredan de DisplayObject, pero a la conclusión que he llegado es que el Sprite al no tener línea de tiempo no tiene frames, con lo que puede darte errores si intentas trabajar con frames con un objeto que no los posee (a eso se refiere lo de que puede dar errores inesperados), yo tampoco entiendo porque solamente me fallaba cuando lo situaba sobre una imagen de fondo, se veía mal, lo que ocurre es que en el servidor ya lo he actualizado para comprobar que funcionaba correctamente.
Aunque si no viste el error que daba igual sigues sin entender a lo que me refiero.
Un saludo.
Ximo
ximolledo
Mis disculpas Ventd'Aval, tenías razón, otro error que cometía era que utilizaba la propiedad alpha con los valores antiguos de 100, y no es como yo pensaba, solamente funciona con valores de 0 a 1, el caso es que no recuerdo donde leí que se podía hacer también con los antiguos valores de 0 a 100, gracias por tu comentario y aclaración.
Un saludo.
XImo
ventdaval
es este?
http://www.ximodesigns.com/almendral/index2.html
yo apostaria 100 euros a que es porque le pones alpha=100... las transparencias de los bordes se multiplican, y te queda dentado, tambien me ha ocurrido ;)
Intenta con ese mismo clip haciendole el alpha a 1.
<fieldset>Alpha:
Indicates the alpha transparency value of the object specified. Valid values are 0 (fully transparent) to 1 (fully opaque). The default value is 1. Display objects with alpha set to 0 are active, even though they are invisible. </fieldset>
Cuando pones mas de uno, en algunos casos, multiplicas las transparencias ^^
ventdaval
Ah, y sobre el tema del enterFrame... flash trabaja con frames, siempre. Tiene ciertos frames por segundos, y a traves de ellos mueve todo. Por tanto que un objeto sin timeline tenga el evento enterFrame no es ningun error ^^
ximolledo
Ventd'Aval
es este?
http://www.ximodesigns.com/almendral/index2.html
yo apostaria 100 euros a que es porque le pones alpha=100... las transparencias de los bordes se multiplican, y te queda dentado, tambien me ha ocurrido ;)
Intenta con ese mismo clip haciendole el alpha a 1.
<fieldset><blockquote>Alpha:
Indicates the alpha transparency value of the object specified. Valid values are 0 (fully transparent) to 1 (fully opaque). The default value is 1. Display objects with alpha set to 0 are active, even though they are invisible. </blockquote></fieldset>
Cuando pones mas de uno, en algunos casos, multiplicas las transparencias ^^
No es ese, el enlace que estás viendo es una imagen .png 24, el que me daba error es el vectorial, que era el enlace anterior, solo que ya lo he sustituido y ahora se ve bien:
Url logo vectorizado:
http://www.ximodesigns.com/almendral
Url logo PNG:
http://www.ximodesigns.com/almendral/index2.html
Mañana te cuelgo el que se veía mal y lo ves, pero también voy a revisar lo de los alpha, ah, y no te acepto la apuesta, no estoy para tirar la pasta y ya me has dejado mosca y empiezo a creer que es más lo que tu dices que lo que yo creía. ;-)
Un saludo.
Ximo.
ximolledo
Confirmado tenías razón, el error era por el tema del alpha y no por el comportamiento extraño con el Event.ENTER_FRAME, 100 euros que hubieras ganado, gracias por tu comment.
Un saludo.
Ximo