Lista de correos sobre Papervision en español
Hace un par de días que se ha creado una nueva lista de correos donde se hablará de todo lo relacionado con papervision.
Una buena oportunidad de aprender sobre este motor 3D para flash
Empezando con AS3
Hace ya muchos meses que no publico nada por aquí por el trabajo aunque hoy he decidido hacerle un hueco al AS3 para, poco a poco, ir haciéndome a trabajar con flash y AS3 (ya con flex he dado algunos pasitos) y de paso actualizar el blog un poquito.
El primer ejemplo que he creado es un comprobador de fortaleza de contraseña para indagar un poco en la expresiones regulares, los contenedores de display objects (el maravilloso y querido addChild
), etc.
Bueno aquí tenéis el ejemplo y el código fuente:
PD. Juanma ahora te paso la pelota a ver si te animas a publicar algo por aquí.
36223
36223 es el número de visitas que recibió este blog durante el año 2006.
La verdad es que me complace enormemente esta cifra y quería agradecer a todos aquellos que visitan este sitio por ello.Bueno ahora toca, como todos los años, proponerse escribir un poco más en el blog y es que el año viene cargado de sorpresas.
Por un lado, la nueva actualización de Flex 2.0.1 que salió hace unos días, por otro, Apollo (debería estar al caer) , y algo que he leído recientemente y me inquieta... la posible liberación del protocolo AMF.
En fin... esperemos tener un poco de tiempo libre para rellenar las líneas de este blog ya que el año promete.
Guia de cambios Flex 2.0.1
Interesante enlace con un pdf que nos cuenta los cambios que nos traerá la inminente actualización de flex.
A resaltar el soporte para aplicaciones modulares... adios a esos swf iniciales tan pesados
SWFAddress. Deep linking para flash
Hoy me he encontrado con este fantástico Script para que podamos implementar deep linking en flash, o dicho de otro modo, hacer que nuestras pelis en flash funcionen con el atrás-siguiente del navegador. Lo que puede ser más importante es que podemos acceder a una sección especifica de nuestra web en flash pasando una URL normal y corriente.
SWFAddress usa ExternalInterface para llamar al javascript que se encarga de hacer todo el trabajo. El script ha sido testado en los siguientes navegadores:
- Internet Explorer 6.0 y 7.0
- Mozilla Firefox 1.5
- Safari 2.04
- Opera 9.02
En la página web de su autor podemos ver algunos ejemplos para Flash / Flex / MTASC
Crear un webservice con nuSoap y consumirlo con Flex
Leyendo un post en MIF sobre Webservices y .net me entro la curiosidad y me puse a experimentar con servicios web basados en PHP y nuSoap. La experiencia fue muy grata ya que en unos minutos tenía creado un servicio.
Lo primero que debemos hacer es bajarnos la última versión de nuSoap y copiarla en nuestro servidor. En mi caso cree una carpeta llamada webservices para alojar los servicios y dentro de esta otra llamada nuSoap donde incluí todas las clases que previamente había descargado.
Una vez que tenemos las clases en nuestro servidor es hora de crear el servicio web. Para ello creamos un fichero llamado HolaMundo.php e incluimos el siguiente código:
< ?php require_once('nusoap/nusoap.php'); $server = new soap_server; function HolaMundo ($nombre) { return "Hola ".$nombre; } $server = new soap_server; $ns="http://localhost:9999/ws/HolaMundo"; $server->configurewsdl('ApplicationServices',$ns); $server->wsdl->schematargetnamespace=$ns; $server->register('HolaMundo', array('nombre' => 'xsd:string'), array('return' => 'xsd:string'), $ns); if (isset($HTTP_RAW_POST_DATA)) { $input = $HTTP_RAW_POST_DATA; } else { $input = implode("\r\n", file('php://input')); } $server->service($input); exit; ?>
Como vemos lo que hacemos es crear una instancia de la clase soap_server , asignamos el namespace del webservice, configuramos el WSDL y registramos el método HolaMundo indicando los parámetros de entrada y salida así como el tipo de cada uno de estos.
Una vez hecho esto ejecutamos el servicio web desde nuestro navegador y si todo ha ido bien nos aparecerá una pantalla como esta:

Por el lado de Flex el ejemplosería algo así (bastante similar al excelente articulo de MIF
)
< ?xml version="1.0" encoding="utf-8"?> <mx :Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="400" height="150" backgroundGradientColors="[#ffffff, #ffffff]" > </mx><mx :Script> < ![CDATA[ import mx.controls.Alert; private function ok():void { Alert.show(ws.HolaMundo.lastResult); } ]]> </mx> <mx :WebService id="ws" result="ok()" showBusyCursor="true" wsdl="http://www.alexdw.com/webservices/HolaMundo.php?wsdl" /> <mx :HBox width="100%"> <mx :Label text="Tu nombre: "/> <mx :TextInput id="src" enter="ws.HolaMundo(src.text)" toolTip="Escribe aquí tu nombre"/> <mx :Button label="Salúdame!!" click="ws.HolaMundo(src.text)" /> </mx>
Aquí lo que hemos hecho es crear un campo de entrada, un botón y hemos instanciado nuestro webservice de modo que al pulsar sobre el botón (o al hacer enter en el campo de texto) invocamos el método HolaMundo de nuestro webService pasando como parámetro el texto del campo de introducción.
Como veis la creación y uso de los webservices en flex se hace de lo más sencillo
Componente RemoteObject para AMF0 en Flex 2
Navegando por el site de Renaun Erickson me he topado con un mágnifico componente que hace muy sencillo el uso de AMFPHP sobre flex 2.
El componente emula la forma nativa integrada en flex 2 para llamar a los objetos remotos pero mediante el protocolo AMF0.
Utilizando los servicios que utilizamos en nuestro antiguo Hola mundo, nuestro mxml quedaría así:
< ?xml version="1.0" encoding="utf-8"?> <mx :Application� width="400" height="150" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:remoting="remoting.*" layout="vertical" backgroundGradientColors="[#ffffff, #ffffff]" borderStyle="none" borderColor="#ffffff"> <remoting :RemoteObjectAMF0 endpoint="http://www.alexdw.com/flashservices/gateway.php" id="HM" source="HolaMundo" showBusyCursor="true" makeObjectsBindable="false" result="ok( event )" fault="ko( event )"> </remoting> </mx><mx :Script> < ![CDATA[ import mx.rpc.events.*; import mx.controls.Alert; private function llamada(s:String):void { HM.saludar(s); } private function ok( event:ResultEvent ):void { Alert.show(event.result.toString()); } public function ko( event:FaultEvent ):void� { Alert.show("No se pudo acceder al servicio"); } ]]> </mx> <mx :HBox width="100%" height="100%" horizontalAlign="center" verticalAlign="middle"> <mx :Label text="Escribe tu nombre"/> <mx :TextInput id="entrada" width="90"/> <mx :Button label="Saludar" height="20" click="llamada(entrada.text)"/> </mx>