Felices Fiestas
![[Q] inteteractiva te desea Feliz Navidad y Próspero Año Nuevo [Q] inteteractiva te desea Feliz Navidad y Próspero Año Nuevo](http://www.q-interactiva.com/blog/imagenes/navidad2009.jpg)
Pues no queríamos dejar pasar las fiestas sin desearos lo mejor para estos días especiales (de una manera u otra) y sobre todo para el nuevo año que tenemos ya a la vuelta de la esquina. 2009 ha sido un año complicado, y deja tras de sí muchas sensaciones de muchos tipos, pero como somos positivos, nos quedamos con un montón de proyectos que han visto la luz y sobre todo la confianza de muchas personas y empresas que nos han ayudado a seguir creciendo profesionalmente y nos ofrecen unas perspectivas muy interesantes para 2010…
Esperamos que para vosotros 2010 sea también un gran año a todos los niveles, y cuando escribamos nuevamente estas líneas cuando corresponda, podamos decir que hemos compartido parte de vuestros éxitos, inquietudes e ilusiones.
¡Felices Fiestas a todos!
Librería AS3 para el procesamiento de imágenes

Pues me animo a volver a escribir para acercaros en esta ocasión una librería en AS3 para el trabajo con imágenes, en este caso unas clases que nos permitirán trabajar con más de 50 filtros que pueden arrojar resultados tan interesantes como los que nos muestra el autor:
Para aprender a usarla nada mejor que los ficheros para descargar y la documentación bien a mano.
De todas formas una buena explicación, aunque en inglés, la encontráis en la página original donde se detalla la librería.
#013 Flash [Q] Tips: swfobject y respeta los estándares con flash
Este tip es un poco doble, en realidad el objetivo principal es el de lograr crear código para un objeto flash que valide correctamente los estándares correspondientes, y de paso hablaros de un imprescindible en todos aquellos que trabajamos con flash como es swfobject.
La manera "tradicional" de generar un HTML con un flash incrustado, y que incluso es la que se mantiene en la versión CS4 de la suite de adobe es la siguiente:
-
<script language="JavaScript" type="text/javascript">
-
AC_FL_RunContent(
-
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0',
-
'width', '300',
-
'height', '300',
-
'src', 'test',
-
'quality', 'high',
-
'pluginspage', 'http://www.adobe.com/go/getflashplayer',
-
'align', 'middle',
-
'play', 'true',
-
'loop', 'true',
-
'scale', 'showall',
-
'wmode', 'window',
-
'devicefont', 'false',
-
'id', 'test',
-
'bgcolor', '#993399',
-
'name', 'test',
-
'menu', 'true',
-
'allowFullScreen', 'false',
-
'allowScriptAccess','sameDomain',
-
'movie', 'test',
-
'salign', ''
-
); //end AC code
-
</script>
-
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="300" height="300" id="test" align="middle">
-
<param name="allowScriptAccess" value="sameDomain" />
-
<param name="allowFullScreen" value="false" />
-
<param name="movie" value="test.swf" />
-
<param name="quality" value="high" />
-
<param name="bgcolor" value="#993399" />
-
<embed src="test.swf" quality="high" bgcolor="#993399" width="300" height="300" name="test" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
-
</object>
-
</noscript>
Hemos obviado el código javascript que ha generado también en dicho HTML. Pues bien, este código que ha generado el IDE de flash NO valida los estándares web que debería (esto no es nada nuevo, de hecho la solución que vamos a comentar tiene ya sus años, pero me jugaría bastante a que muchos de los que estáis leyendo esto, no os habéis preocupado demasiado de la validación de estándares de los objetos flash), y por tanto si en nuestras webs XHTML y CSS deseamos que sea una realidad el tema de la validación, deberemos tirar de recursos más elaborados.
Read more
#012 ActionScript [Q] Tips: precargas AS3 en Internet Explorer
Imagino que unos cuantos de vosotros habéis topado previamente con el bug que se da en Internet Explorer cuando hacemos una precarga empleando los eventos Event.COMPLETE y ProgressEvent.PROGRESS de AS3. El bug en cuestión aparece cuando tenemos una película cacheada y volvemos a ella, para reproducirlo solamente tenéis que cargar la película y una vez cargada, pulsar F5 en vuestro navegador IE, o Ctrl + F5. Cabe destacar que esto solo ocurre con la película principal, y no las que se cargan internamente en ella.
Veréis como la precarga se queda en pantalla por los siglos de los siglos, y es que no se disparan correctamente los eventos antes citados. La solución más simple para el problema, es controlar este hecho, y qué mejor manera que viendo antes de preparar los eventos, si resulta que ya tenemos cargada por completo la película.
Imaginemos que tenemos la siguiente estructura clásica para el preloader:
-
function cargando(ev:ProgressEvent):void
-
{
-
var porcentaje:Number = Math.floor( (ev.bytesLoaded*100)/ev.bytesTotal );
-
trace ('cargado... '+porcentaje);
-
}
-
-
function cargaCompleta(ev:Event):void
-
{
-
trace('Listo!');
-
}
-
-
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, cargando);
-
this.loaderInfo.addEventListener(Event.COMPLETE, cargaCompleta);
Muchos optan por evitar el problema haciendo un preloader convencional con un Event.ENTER_FRAME, no obstante no es necesario, y aquí os dejamos el Tip de este viernes que nos permite la limpieza y eficiencia de la aproximación por eventos en vez de un enterFrame, sin tener que asumir el malfuncionamiento en Internet Explorer 6 y 7.
Si simplemente tenemos en cuenta comprobar inicialmente si la película está cargada por completo, algo tan sencillo como esto:
-
if (this.loaderInfo.bytesLoaded/this.loaderInfo.bytesTotal == 1)
-
{
-
trace('ya está cargado por completo');
-
}
Por tanto nos quedaría algo así:
-
function cargando(ev:ProgressEvent):void
-
{
-
var porcentaje:Number = Math.floor( (ev.bytesLoaded*100)/ev.bytesTotal );
-
trace ('cargado... '+porcentaje);
-
}
-
-
function cargaCompleta(ev:Event):void
-
{
-
trace('Listo!');
-
}
-
-
if (this.loaderInfo.bytesLoaded/this.loaderInfo.bytesTotal == 1)
-
{
-
// ya está cargado
-
cargaCompleta(null);
-
}
-
else
-
{
-
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, cargando);
-
this.loaderInfo.addEventListener(Event.COMPLETE, cargaCompleta);
-
}