Eclipse FDT Loading Workbench Cuelgue
July 3rd, 2010

Si alguna vez te ocurre que al abrir Eclipse se te queda en: Loading Workbench… esta es la solución:

Vas a .metadata/.plugins/org.eclipse.core.resources y borras el archivo .snap

Quiero ser como el viento
June 13th, 2010

Quiero ser como el viento

Visto en la tele.
Odio la locución (escuchada 2312 veces por lo menos).

Enamorado de Signals
June 13th, 2010

Y para muestra un botón :)

Actionscript:
package view.ui.common
{
    import com.greensock.TweenMax;
    import flash.events.MouseEvent;
    import org.osflash.signals.natives.NativeSignal;

    import flash.display.Sprite;

    /**
     * @author robot04
     */

    public class BasicButton extends Sprite
    {
        private var overed:NativeSignal;
        private var outed:NativeSignal;
        public var clicked:NativeSignal;
       
        public function BasicButton()
        {
            buttonMode = true;
            mouseChildren = false;
            overed = new NativeSignal(this, MouseEvent.MOUSE_OVER);
            outed = new NativeSignal(this, MouseEvent.MOUSE_OUT);
            clicked = new NativeSignal(this, MouseEvent.CLICK, MouseEvent);
        }
       
        public function removeListeners():void
        {
            overed.remove(onOver);
            outed.remove(onOut);
        }
       
        public function addListeners():void
        {
            overed.add(onOver);
            outed.add(onOut);
        }

        protected function onOut(event:MouseEvent):void
        {
            TweenMax.to(this, .4, {alpha:1});
        }

        protected function onOver(event:MouseEvent):void
        {
            TweenMax.to(this, .4, {alpha:.8});
        }
    }
}

Robert Penner - Signals

Reforest
June 13th, 2010

Reforest

Reforest es una aplicación desarrollada en Adobe AIR que crea estructuras de proyecto a través de plantillas.

Estas plantillas pueden ser configuradas al gusto de cada uno para crear el árbol de carpetas y archivos que formarán nuestro directorio de proyecto.
El ejemplo que viene con Reforest, cuando lo descargáis, es un MVC simple con Flash y AS3, pero se puede utilizar para cualquier tipo de proyecto, diseño, .php, html, etc

La plantilla, a partir de ahora semilla (.seed), está compuesta por los siguientes nodos:

info

Info es la parte de la semilla que nos va a proveer de la información de ésta, como autor, fecha, nombre, descripción, etc.

Esta es la estructura:

XML:
<seed>
    <info>
        <author>Robot04</author>
        <date>09/09/09</date>
        <name>Example Template</name>
        <description>Estructura de proyecto base con vista y controlador</description>
        <notes>Acuérdate de borrar el árbol de main.fla :) </notes>
    </info>
</seed>

Después encontramos la estructura.

structure

Structure es la etiqueta que va a contenter nuestro proyecto, y en ella podremos crear y copiar los archivos y directorios que solamos utilizar frecuentemente en nuestros proyectos.

Dentro de structure podremos utilizar dos tipos de etiquetas diferentes:

  • folder
  • file

folder

Folder es la encargada de crear los directorios, tiene un sólo parámetro obligatorio name.
Si el valor del parámetro name es projectName, el valor se sustituirá en tiempo de ejecución por el nombre que elijamos para el proyecto.

XML:
<seed>
    <info>
        <author>Robot04</author>
        <date>09/09/09</date>
        <name>Example Template</name>
        <description>Estructura de proyecto base con vista y controlador</description>
        <notes>Acuérdate de borrar el árbol de main.fla :) </notes>
    </info>
    <structure>
        <folder name="projectName">
        </folder>
    </structure>
</seed>

file

El nodo file se encarga de copiar archivos y carpetas a nuestro directorio de proyecto.

Tiene dos parámetros obligatorios:

  • name
  • route

Name indica el nombre con el cual se guardará el archivo en nuestro directorio de proyecto y route es el path al archivo que se va a copiar.

XML:
<seed>
    <info>
        <author>Robot04</author>
        <date>09/09/09</date>
        <name>Example Template</name>
        <description>Estructura de proyecto base con vista y controlador</description>
        <notes>Acuérdate de borrar el árbol de main.fla :) </notes>
    </info>
    <structure>
        <folder name="projectName">
            <folder name="flash">
            <file name="main.fla" route="files/flash/main.fla" />
        </folder>
        </folder>
</seed>

Además de esto y esta es la joyita de Reforest, el nodo file tiene un atributo opcional parse.

Si le decimos a Reforest que parsee el documento con el atributo parse="true". Reforest buscará en esos archivos variables de Reforest y nos permitirá durante la creación del proyecto cambiar sus valores por otros al vuelo.

Las variables de Reforest tienen el siguiente aspecto:
%RFST:Variable=Valor%

Por ejemplo un uso básico en archivo html podría ser:
<title>%RFST:title=titulo%</title>

o en un .as podríamos ajustar las características de nuestro fla de la siguiente manera:

Actionscript:
[SWF(width="%RFST:SWFWidth=1004%", height="%RFST:SWFHeight=680%", backgroundColor="%RFST:SWFBGColor=#FFFFFF%", frameRate="%RFST:SWFFramerate=30%")]

Espero que lo disfrutéis y si tenéis sugerencias o dudas, ya sabéis :)

PD: Junto con el instalador de Reforest encontraréis más información y un ejemplo de uso.

AIR Autoupdater en 10 pasos
July 14th, 2009

Ale, aquí os dejo cómo configurar un autoupdater para AIR en diez pasos.

1. Bajar el SDK de AIR.
2. Copiar el archivo applicationupdater_ui.swc a nuestra carpeta de proyecto.
3. Linkarlo en configuración de publicación.

advanced_settings_as3.jpg

4. Crear un updateConfig.xml con los siguientes parámetros:

XML:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0">
    <url>http://www.robot04.com/reforest/update.xml</url>
   <delay>1</delay>
    <defaultUI>
           <dialog name="checkForUpdate" visible="false" />
           <dialog name="downloadUpdate" visible="true" />
           <dialog name="downloadProgress" visible="true" />
           <dialog name="installUpdate" visible="true" />
           <dialog name="fileUpdate" visible="false" />
           <dialog name="unexpectedError" visible="true" />
    </defaultUI>
</configuration>

5. En el Main o donde iniciéis la app (esto es solo una muestra, a partir de aquí se pueden jugar con todos los parámetros del ApplicationUpdater y configurarlo a vuestro gusto):

Actionscript:
package
{
    import air.update.events.UpdateEvent;   
    import air.update.events.StatusUpdateErrorEvent;   
    import flash.events.ErrorEvent;  
    import air.update.events.StatusUpdateEvent
    import air.update.ApplicationUpdaterUI;
   
    public class Main
    {
        public function Main()
        {
            initUpdater();
        }
        public function initUpdater():void
        {
            appUpdater = new ApplicationUpdaterUI();                appUpdater.addEventListener(StatusUpdateErrorEvent.UPDATE_ERROR, updateError);
            appUpdater.addEventListener(UpdateEvent.INITIALIZED, updateInitialized);
            appUpdater.addEventListener(StatusUpdateEvent.UPDATE_STATUS, updateStatus);
            appUpdater.configurationFile = new File("app:/updateConfig.xml");
            appUpdater.initialize();
        }      
        private function updateInitialized(event:UpdateEvent):void
        {
            checkForUpdates();
        }
        private function checkForUpdates():void
        {
            appUpdater.checkNow();
        }

        private function updateError(event:ErrorEvent):void
        {
            trace("Error");
        }

        private function updateStatus(event:StatusUpdateEvent):void
        {
            trace("update status: " + event.version);
            trace("update available: " + event.available);
            trace("update details: " + event.details);
        }
    }
}

6. Añadir el updateConfig.xml en los settings de AIR: File --> AIR Settings --> Included Files + updateConfig.xml.
7. Compilar versión dejando, por ejemplo, en los AIR Settings en el campo de versión 0.90, la instalamos y compilamos otra versión cambiando el valor de la versión a la 0.91.
8. Crear un update.xml con:

XML:
<?xml version="1.0" encoding="utf-8"?>
<update xmlns="http://ns.adobe.com/air/framework/update/description/1.0">
 <version>0.91</version>
 <url>http://www.robot04.com/reforest/reforest.air</url>
 <description><![CDATA[
Versión 0.91
 * Añadida actualización automática
 ]]>
</description>
</update>

9. Subir la versión nueva y el update.xml al servidor.
10. Añadir un nuevo tipo MIME ".air" al server

Abrimos la aplicación instalada y veremos que nos aparece la ventana de Update para descargar la nueva versión.
Nota: joder que mal se ven los estilos de syntax hiliter para los xml. Ya lo cambiaré.

Como? – Cámbiame
June 9th, 2009

El modo de visualizacion tiene que primero el dominio que tiene el servicio y debajo los servicio que tiene ese dominio pueden ser.

Dios que dura es la vida :)

Especificaciones para banner – Cámbiame
May 20th, 2009

Estas son las especificaciones:

"formato html, que es como si fuera un flash"

Venga pues nos ponemos manos a la obra ;)

Como NO DEBERÍAS nombrar – Cámbiame
May 6th, 2009

No puedo entender como todavía hay gente que aún nombra las carpetas o ficheros como en el siguiente ejemplo (es real):

Os he pasado en la carpeta "videos ok ok" el archivo frontal_ok_ok.mov corregido o_O
o la siguiente:
fondo-ok-ligeramente-fixed.jpg

No me quiero imaginar como pueden acabar estas cosas, siguiendo una sucesión lógica debería ser algo así.

En la carpeta "vídeos ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok" te he dejado el vídeo frontal_ok_ok_ok_ok_ok_ok_ok_ok_ok_ok_ok.mov

En el segundo caso sería algo más complejo pero no menos curioso:

fondo-ok-ok-ok-ok-ok-ok-totalmente-de-verdad-final-completo-ok-ok-definitivo-fixed-del-todo4.jpg

Por favor, señores y señoras de cuentas, diseñadores y programadores... no usen este tipo de nomenclatura cuando tengan que trabajar con personas.

Config Constants – ActionScript 3.0
May 4th, 2009

Config Constants en Flash CS4. Con la creación de las constantes de configuración podemos acceder a partes de nuestro código dependiendo del valor de las mismas. Para ver un pequeño ejemplo, imaginad que tenéis un fla que va a ir en dos idomas, con las constantes podemos hacer que un mismo fla (o fla diferentes) accedan a un idioma en la programación o a otro.

Creamos un par de Constantes, una para el español CONFIG::ES y otra para el portugués CONFIG::PT y le damos a la primera un valor de true y a la segunda un valor de false en la configuración de publicación.

ConfigConstants.jpg

Después en nuestro código podremos tener lo siguiente:

Actionscript:
public function createButtons():void
{
        CONFIG::ES
        {
                botones = [ "El sistema de franquicias", "Pasos a seguir", "Tipos de tienda",
                        "Inversión inicial", "Criterios de emplazamiento" ];
        }
            
        CONFIG::PT
        {
            botones = [ "O sistema de franchising", "Passos a seguir", "Tipos de loja",
                        "Investimento Inicial", "Critérios de localização" ];
        }
}

Al compilar la película flash cogerá lo que aparezca dentro del CONFIG::ES e ignorará lo que esté dentro del CONFIG:PT.

???
April 27th, 2009

???.jpg
Ya queda poco.