Adobe AIR e le API di Feedburner: reloaded

martedì 18 novembre, 2008

Prendo spunto dall'ottimo tutorial di Napolux, Flex 3, Adobe AIR e le API di Feedburner, che mostra come scrivere una semplice applicazione (o widget) Adobe AIR usando Flex 3, per mostrare come realizzare la stessa identica cosa usando Adobe Flash CS3. Se lo desiderate, inoltre, potete sfruttare l'estensione per la creazione di applicazioni Adobe AIR. Non è infatti necessario, ai fini di questo tutorial, compilare l'applicazione come eseguibile AIR; potete usare il codice proposto come semplice filmato Flash da "apporre" alle vostre pagine Web.

Flash vs Flex

Nonostante apprezzi Adobe AIR come tecnologia e come è stato implementato nelle piattaforme HTML (Dreamweaver), Flash e Flex, non sono "ancora" del tutto ben disposto verso Flex! Non voglio certo mettere a confronto Flash con Flex, nonostante hanno molti punti in comune ma anche molte differenze. Tuttavia non ho assolutamente apprezzato la politica Adobe rispetto a questo spinoff a volte privo di senso. Avrei preferito, invece, la costituzione di un unico ambiente (Flax) di sviluppo e non questa "inutile" separazione. Inoltre, da buon programmatore, gli ambienti troppo "visuali" non mi piacciono granchè e Flex sembra proprio destinato a diventare pericolosamente simile a Visual Basic, che tra l'altro conosco molto bene e su cui ho lavorato per molti anni. Insomma, Flex sinceramente non l'ho capito e non ho capito cosa vuole fare Adobe con questo branch. Se Flex è indicato come l'ambiente ideale per scrivere RIA qual'è il destino di Flash? Tutte le features di Flex, effettivamente non disponibili "direttamente" in Flash, potrebbero - volendo - essere inserite senza costringere ad acquistare licenze multiple per sviluppare - alla fine - la stessa identica cosa.

Differenze tra Flash e Flex

La prima cosa che noterete nella versione Flash è la presenza di un po' più codice. Infatti Flex risolve alcune procedure sfruttando direttamente i "suoi" file MXML. A ben guardare, comunque, non c'è tanto più codice di quello che si potrebbe pensare. La procedura più corposa, che in Flex è "oscurata", è la connessione via REST alle API di Feedburner. Uno dei vantaggi nell'uso di un codice scritto in Flash è che lo stesso può funzionare immediatamente sia come applicativo AIR che come filmato Flash su una qualsiasi pagina Web! Sempre se non abbiamo utilizzato funzionalità specifiche di un amiente desktop. Inoltre, ed ecco un altro motivo per cui Flex non mi convince affatto, l'applicazione Adobe AIR creata con Flash risulta 5 volte inferiore a quella proposta da Napolux e compilata con Flex builder:

Nota: ad onor del vero questo è imputabile a tutta una serie di componenti (come l'mx.controls.Alert ) che vengono inclusi in Flex e non nella mia versione Flash; in Actionscript 3.0, infatti, tutta una serie di funzionalità è stata eliminata: tutti i "pachetti" mx presenti in Actionscript 2.0 e migrati ora sotto Flex! Comunque mi riservo quanto prima di effettuare maggiori test al riguardo.

Il codice

Deciso o meno di compilare il nostro filmato come applicazione Adobe AIR (cosa che potete fare in qualsiasi momento successivo), ecco la classe documento Feedburner.as: (tutti i codici sono disponibili su Google Code)

Actionscript:
  1. package {
  2.     /**
  3.      * Class Document for FeedBurner Adobe AIR version
  4.      * Original idea by Napolux.com (http://www.napolux.com/2008/flex-3-adobe-air-feedburner.html)
  5.      *
  6.      * @author        Giovambattista Fazioli
  7.      * @email         g.fazioli@undolog.com
  8.      * @web           http://www.undolog.com
  9.      *
  10.      * CHANGE LOG
  11.      *
  12.      * ver 0.8
  13.      *    - First Adobe AIR release
  14.      *
  15.      */    
  16.     import flash.display.*;
  17.     import flash.text.*;
  18.     import flash.events.*;
  19.     import flash.net.URLLoader;
  20.     import flash.net.URLRequestMethod;
  21.     import flash.net.URLLoaderDataFormat;
  22.     import flash.net.URLRequest;
  23.     import flash.net.URLVariables;
  24.  
  25.     public class FeedBurner extends MovieClip {
  26.  
  27.         private const FEEDBURNER_API        :String        = 'http://api.feedburner.com/awareness/1.0/GetFeedData';
  28.        
  29.         public function FeedBurner():void {
  30.             trace("construtor::FeedBurner");
  31.             addEventListener( Event.ADDED_TO_STAGE, init );
  32.         }
  33.         //
  34.  
  35.         private function init( e:Event = null ):void {
  36.             result_txt.text = '';
  37.             feed_url.text     = 'http://www.undolog.com/feed';
  38.             //
  39.             check_btn.addEventListener( MouseEvent.CLICK, checkFeedBurnerReaders );
  40.         }
  41.        
  42.         //
  43.         private function checkFeedBurnerReaders(e:MouseEvent = null ):void {
  44.             trace( "FeedBurner::checkFeedBurnerReaders()" );
  45.             //
  46.             var loader        :URLLoader      = new URLLoader();
  47.             var urlreq        :URLRequest     = new URLRequest();
  48.             var param         :URLVariables   = new URLVariables();
  49.             //
  50.             param.uri                         = feed_url.text;
  51.             urlreq.url                        = FEEDBURNER_API;
  52.             urlreq.method                     = URLRequestMethod.GET;
  53.             urlreq.data                       = param;
  54.             //    
  55.             loader.dataFormat                 = URLLoaderDataFormat.TEXT;
  56.             loader.addEventListener(Event.COMPLETE, completeHandler);
  57.             try {
  58.                 loader.load(urlreq);
  59.             } catch (error:Error) {
  60.                 trace("Errore nel caricamento dell' URL");
  61.             }
  62.             function completeHandler(event:Event):void {
  63.                 //<rsp stat="ok">
  64.                 //  <feed id="651641" uri="undolog">
  65.                 //    <entry date="2008-11-17" circulation="389" hits="1348" downloads="0" reach="43"/>
  66.                 //  </feed>
  67.                 //</rsp>
  68.                 var x_xml    :XML             = XML(event.target.data);
  69.                 if( x_xml.@stat == 'ok' ) result_txt.text = x_xml.feed.entry.@circulation.toString();
  70.                 else result_txt.text = '0';
  71.             }
  72.         }
  73.     }
  74. }

La parte di interfaccia è disponibile su Feedburner.fla.

Post correlati

3 commenti a: “Adobe AIR e le API di Feedburner: reloaded”

  1. getAvatar 1.0 martedì 18 novembre, 2008 alle 15:21
    Napolux ha detto:

    Ottimo tutorial anche il tuo!
    Flash o Flex? Io preferisco Flex… Sarà per la sensazione del “questo è per sviluppatori, flash è per designer”, non lo so. Aspetto tra le altre cose di vedere cosa combina Thermo :P

  2. getAvatar 1.0 sabato 10 gennaio, 2009 alle 13:47
    Napolux ha detto:

    Hai aggiornato lo script per conteggiare anche i lettori di quelli passati a feedproxy.google.com?

  3. getAvatar 1.0 lunedì 12 gennaio, 2009 alle 17:15
    Giovambattista Fazioli ha detto:

    @Napolux:

    Hai aggiornato lo script per conteggiare anche i lettori di quelli passati a feedproxy.google.com?

    No… il mio codice era a scopo puramente didattico :D Lascio a te la realizzazione della versione “buona” :D

Lascia un commento

TAG XHTML permessi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Usa <pre> per racchiudere codice