Visualizzazione post con etichetta iPhone. Mostra tutti i post
Visualizzazione post con etichetta iPhone. Mostra tutti i post

martedì 3 agosto 2010

iPhone vs Android: il melafonino perde terreno?



Diverse indagini di mercato sembrano mostrare un cambio di tendenza nelle vendite dei nuovi smartphone: Android OS sarebbe passato dal 6% dell'utlima quarto 2009 al 17% del primo quarto 2010 con un icnremento delle vendite dell'866%, laddove Apple è scesa dal 39% al 33.

Nel secondo quarto di 2010 il 27% dei nuovi smartphone venduti è un Android OS mentre Apple è scesa al 23 (c'da dire comunque che i dati non tengono conto dell'iPhone 4G).

fonte: sfgate.com

venerdì 23 luglio 2010

Microsoft fa il botto, tutto grazie a Windows 7


Si è fatto un gran rumore, ultimamente, con il sorpasso di Apple ai danni di Microsoft nel mercato azionario.

Sorpasso dovuto in grandissima parte alle vendite dell'iPhone. Tuttavia oltre al sorpasso azionario c'era chi paventava anche quello del fatturato, forse ancora più cocente. Sarebbe stato il vero cambio della guardia. Ieri, invece, l'annuncio della società guidata da Steve Ballmer ha gelato gli entusiasmi di coloro che pregustavano lo storico sorpasso.

Microsoft ha infatti superato di 800 milioni di dollari le aspettative di Wall Street con un quarto trimestre scoppiettante nel segno di Windows 7, il nuovo sistema operativo entrato in commercio lo scorso autunno, creando così un divario di 300 milioni di dollari con Apple. Le entrate del periodo terminato a fine giugno sono state pari a 16,04 miliardi di dollari (gli analisti avevano fissato l'asticella massima a 15,27 miliardi), con un incremento del 22% rispetto all'anno precedente, quando a Redmond dovettero mettere a bilancio il primo trimestre con fatturato e utili in flessione della sua storia. A distanza di un anno, l'eventualità di un nuovo, "scomodo", smacco al cospetto della rivale californiana – che può giustamente festeggiare i 15,7 miliardi di dollari, con un profitto netto di 3,25 miliardi, centrati nel terzo trimestre fiscale - non si è verificata. E i vertici di Microsoft possono tirare un sospiro di sollievo sbattendo in faccia ai critici numeri che parlano da soli. Fra questi tre sono assai significativi: i profitti sono saliti del 48% a 4,52 miliardi di dollari, le vendite di licenze di Windows 7 hanno toccato quota 175 milioni e le entrate della divisione Windows (che comprende anche i servizi Live) ha generato nel trimestre ricavi per 4.55 miliardi e utili lordi per 3.06 miliardi. Come dire: quando la domanda di personal computer tira, e così è stato nei primi sei mesi del 2010 e ci aspetta sarà anche in futuro, il business di Microsoft ne trae evidenti benefici, anche sotto il profilo della marginalità.

lunedì 7 giugno 2010

iPhone 4G: oggi la presentazione ufficiale




Attenuatesi le attenzioni sull'iPad - che ha superato i due milioni di esemplari venduti in soli due mesi - Apple si prepara ad avere nuovamente i riflettori puntati su di sé: tra poche ore, alle 19.00 secondo il fuso orario italiano (ma alle 10.00 secondo quello di San Francisco) Steve Jobs aprirà la Worldwide Developer Conference presentando la star del 2010: l'iPhone 4G.

Nonostante le fughe di notizie, Apple è stata attentissima a far sì che non trapelassero ulteriori informazioni su quello che - forse - si chiamerà iPhone HD e non 4G.

Se a causa della disattenzione di un dipendente di Apple già sappiamo come dovrebbe essere l'aspetto del nuovo iPhone - più sottile, più leggero, senza il retro bombato - molto meno certe sono le notizie sulle sue caratteristiche interne, anche se si possono fare delle predizioni, basate sulle poche indiscrezioni, che abbiano un certo grado di attendibilità.

Il cuore dell'ultimo melafonino sarà un processore più potente di quello adottato dai suoi predecessori, forse lo stesso utilizzato dall'iPad, e che sfrutterà la potenza aggiuntiva per permettere l'uso del multitasking, finalmente introdotto con il sistema operativo iPhone OS 4.0.

Lo schermo guadagnerà la risoluzione di 960x640 pixel - stando a quanto si dice - mentre la fotocamera posteriore arriverà a 5 megapixel e potrà registare video in alta definizione fino a 720p; debutterà in questa versione anche una videocamera anteriore (con risoluzione VGA) da utilizzare per le videochiamate.

Una batteria più potente, in grado di assicurare una lunga autonomia, e 64 Gbyte di spazio di memorizzazione per il modello più capiente completeranno il rinnovamento dell'hardware, almeno per quanto è dato di sapere finora. Pare, infine, che cesserà il supporto alle Sim tradizionali: come l'iPad, il nuovo iPhone supporterà solo le mini-Usim.

Insieme all'iPhone HD (o 4G) alla WWDC 2010 dovrebbero fare la propria comparsa anche Safari 5 (ultima versione del browser di Apple) e l'annuncio della disponibilità dei servizi MobileMe (sincronizzazione online dei dati: indirizzi, email, foto e via di seguito) a titolo gratuito: un primo indizio della svolta cloud che la società di Cupertino starebbe apportando alle proprie strategie e che dovrebbe interessare anche iTunes, rinnovando ancora una volta il settore della vendita di musica online.

fonte:http://www.zeusnews.it/

domenica 23 maggio 2010

iPhone 4G in multicolor? Un Fake


Girano sulla rete delle immagini che mostrano delle ipotetiche versioni multicolor tratte dal prototipo dell'iPhone 4G sfuggito a Apple settimane orsono.

Insospettito da una notizia tanto interessante mi son informato e quanto ho scoperto era in fondo più che ovvio:

"iSpazio has gone ahead and used their creative skills to show us how the new iPhone 4G will look in white, black, pink, light blue and green color"

Ossia, sono stati creati da grafici di iSpazio che hanno appunto elaborato queste immagini. Comunque niente male.

domenica 9 maggio 2010

Jailbreak iPhone 3GS 3G 2G 1G, iPod Touch e iPad


L'hardware creato e distribuito da Apple, lo sanno tutti, è praticamente più sotto il controllo di Apple che del proprietario che lo acquista: apple infatti, tramite uno stretto controllo delle Apps distribuite tramite iStore, decide quali funzioni del suo hardware sbloccare e perchè, lasciando all'utente finale una libertà pari quasi allo zero, in termini di personalizzabilità dell'ambiente iPad/iPhone.

Anni or sono, quando l'iPhone era ancora agli albori, un gruppo di hackers, per sopperire all'allora penuria di apps creò uno stratagemma denominato jailbreak (lett. "evasione") che permetteva agli sviluppatori di eseguire su iPhone codice non direttamente approvato da Apple, che quindi utilizzava a suo piacimento le funzioni dell'iPhone: si connetteva il telefono al MAC/PC, ci si connetteva a un sito, e l'iPhone magicamente era breakato.

In seguito al boom del'iStore, Apple chiuse una dopo l'altra tutte le falle di sicurezza che rendevano possibile questo stratgemma, rendendolo via via sempre più complicato e rischioso. I metodi erano diversi a seconda della macchina, della versione del suo OS e del mac/pc che si utilizzava per applicarlo.

Poi però, la scorsa settimana, un tool denominato Spirit è stato rilasciato a livello mondiale: è semplice, veloce, relativamente sicuro, e soprattutto, funziona su qualsiasi iPod Touch/iPhone/iPad.

Prima che continuiate, è doveroso avvisarvi che per quanto perfezionato, sussite un minimo rischio di brick del dispositivo. Ma se come me non sopportate l'idea che il proprietario del vostro iPhone resti Apple, anche dopo averlo acquistato, allo sono certo che non riuscirete a resistere all'idea vedere il vostro iProduct al 100% del suo potenziale. Mettiamoci all'opera:

  1. Cosa vi serve:
    • Spirit Jailbreak Tool (MAC OS/Windows)
    • iTunes 9.X (l'ultima versione testata per questo jb è la 9.1.1)  
    • Un cavo per (iPhone/iPad/iPod)
    • Un iPhone/iPad/iPod che: non sia già breakato (...); funzioni correttamente; non mostri la schermata "connect to iTunes"; abbia un OS versione 3.1.3 o inferiore (3.2 nel caso dell'iPad)
  2.  Collegate il device al vostro PC/Mac e attendete che iTunes lo riconosca
  3. Fate un backup COMPLETO di tutto ciò che vi è al suo interno e successivamente risincronizzatelo. Il backup vi tornerà in aiuto del caso vi siano perdite di dati durante uil jailbreak (cosa tutto sommato frequente)
  4. Aprite Sprit JB Toll, e attendete che riconosca il device collegato. Se ciò non accadesse, disconnettete il device, chiudete spirit e riprovate da capo
  5. Clickate su Jailbreak
  6. Non toccate assolutamente nulla durante la routine di jailbreak. Se tutto sta andando bene, dovreste vedere una scritta "Restore complete" sul vostro device. Dopodichè si riavvierà con una schermata piena di colori e una progressbar. In 30 secondi al massimo i giochi saranno fatti e il vostro tablet/smartphone/mp3 sarà inzializzato alla sua homescreen, così come era prima del jailbreak. Solo che ora siete finalmente in jailbreak.
  7. Ora, se osservate attentamente, noeterete una nuova icona, chiamata "Cydia" (v. foto): è un nuovo iStore. Niente panico, quello vecchio è ancora lì, solo che ora ne avete uno in più :)
  8. Se entrate in Cydia, noterete un bottone"Make my life easier". Se lo cliccate, il profilo di attivazione del vostro device verrà salvato su un server remoto in modo da recuperà il jailbreak in caso di upgrade involontario del sistema. Mica male

Ora che avete finalmente effettuato il vostro jailbreak, potrete avventurarvi nel download di Apps davvero sfuziose da Cydia. Alcune vi permetteranno il tanto agognato multytask), la possibilità di navigare tra le cartelle (features, a essere onesti, incluse nel prossimo firmware), personalizzare la vostra homescreen etc etc
Sembra inoltre che questo escamotage funzioni anche con la versione 4.0, ma qui siamo nel campo delle speculazioni...


Rimando a una prissima guida come effettuare l'Unlock (per usare il vostro iPhone con qualsiasi operatore telefonico) e l'Un-Jail, ossia riportare il device allo stato nativo.



don't worry, be Creative!

fonte: Gizmodo.com

    sabato 8 maggio 2010

    iPhone 4G: data di uscita e foto del nuovo gioiello Apple



    Tradizionalmente, dall'annuncio di un nuovo modello di iPhone al suo effettivo rilascio per la vendita passano diverse settimane. Tuttavia sembra che per il caso della versione 4G del celeberrimo smartphone Apple farà una eccezione: la data di rialscio cinciderà, forse, con quella di presentazione al WWDC (World Wide Developer Conference), ossia il 7 giugno 2010.

    Questa inusualità sembra sia dovuta ad una fuga di notizie sul nuovo telefono ad opera di Gizmodo (noto portale hitech) che avrebbe sottratto, più o meno legalmente (sarà il giudice a stabilirlo), un prototipo dell'iPhone 4G ad un ingegnere Apple.

    Gizmodo ha infatti annunciato alcune 'presunte' feature segrete del nuovo iPhone, tra cui un body in ceramica, più sottile del corrispettivo per 3GS, un peso maggiore, una minicam frontale e una sul retro di dimensioni maggiorate (non si è capito se maggiorater rispetto a quella frontale o alla versione posteriore del 3GS).

    Ultimo ma non ultimo, il prototipo mostrato utilizza micro-sim, dettaglio fondamentale per dimostrare la sua autenticità, visto che attualmente non esistono cellulari in commercio con questo standard (l'unico è l'iPad). Quindi, o quelli di Gizmodo hanno creato una replica artigianale con tanto di slot micro-sim, o è davvero l'iPhone 4G.

    Ecco quì una foto del prototipo su cui Gizmodo ha messo le mani:


    Effettivamente, se di fake si tratta, è realizzato magistralmente. Con tanto di marchio Apple sul fondo. Eccolo in un confronto con il suo predecessore:


    Il WWDC si terrà a San Francisco il 7 giugno. A quel punto tutti sapremo la verità.

    martedì 4 maggio 2010

    Creare apps per iPhone con Flash CS5


    Con il rilascio della nuova Creative Suite 5 sono stati aggiornati numerosi ambienti di sviluppo. Una delle migliorie più significative (eh, ahimè, presto inutili) è l'iPhone Packager, ossia un compiler in grado di convertire un sorgente ActionScript 3.0 in un eseguibile per iPhone.

    Giusto per testare le effettive capacità del packager, ho provato a implemntare una banale app che reagisca all'inclinazione del telefono. Per farlo occorre utilizzare le nuove classi del package flash.sensor (implementate proprio in vista dei nuovi smartphone).

    Vediamo nel dettaglio il codice

    import flash.sensors.Accelerometer;
    import flash.events.AccelerometerEvent;

    stage.scaleMode = StageScaleMode.NO_SCALE;//blocca lo scale dello stage
    stage.align = StageAlign.TOP_LEFT;//allinea lo stage in alto a sx (utile per posizionare oggetti al suo interno)
    //stage.cacheAsSurface = true;//boh...

    Innanzitutto importiamo i package che ci servono. In teoria questi import non servono se non quando si implementa una nuova classe, ma Flash CS5 le ha inserite non appena ho dichiarato gli oggetti, per cui...



    var xSpeed:Number = 0;
    var ySpeed:Number = 0;
    const RADIUS = 20;


    Inizializzo le variabili di cui ho bisogno:
    1. accelerometer contiene eventi e relative informazioni riguardo i sensori X,Y,Z dello smartphone.
    2. timer regolerà la frequenza di aggiornamento del movimento della pallina
    3. xSpeed/ySpeed sono le varibili Number della velocità della pallina nel piano
    4. RADIUS è una costante che dovrebbe indicare l'ingombro della pallina nello stage. Ovvio che è a vostra discrezione...

    if (Accelerometer.isSupported)
    {
        var accelerometer = new Accelerometer();
        accelerometer.addEventListener(AccelerometerEvent.UPDATE, accUpdateHandler);
        var timer = new Timer(40);
        timer.addEventListener(TimerEvent.TIMER, timerHandler);
        timer.start();
    }

    Il metodo statico isSupported della classe Accelerometer rileva la configurazione dello SP in modo da capire se ha o no i sensori di accelerazione e se sono abilitati dal suo O.S. E' utile per prevenire eventuali errori in caso di mancato funzionamento di questi ultimi.
    1. Istanzio quindi l'oggetto accelerometer
    2. Creo l'ascoltatore per l'ebento UPDATE, ossia l'evento scatenato al movimento dello SP
    3. Istanzio il timer. Questo oggetto scatena un evento Timer ad intevalli predefiniti specificato nel costruttore in millisec. Ho settato l'evento ogni 40 ms supponendo una framerate dell'iPhone di 25fps: 1000ms/25fps = 40ms, ossia una volta per frame. Un intervallo più basso sarebbe inutile in quanto non visualizzabile dallo SP
    4. Creo l'ascoltatore all'evento TIMER
    5. Faccio partire il timer

    franco.x = stage.stageWidth / 2;
    franco.y = stage.stageHeight / 2;
    addChild(franco); 

    Setto la posizione di partenza della pallina e la aggiungo allo stage.


    function accUpdateHandler(event:AccelerometerEvent):void
    {
    xSpeed += event.accelerationX * 2;
    ySpeed -= event.accelerationY * 2;
    }

    Questa funzione viene richiamata ad ogni evento di tipo AccelerometerEvent, ossia ogni volta che lo smartphone assume una posizione fuori asse. L'attributo accelerationX/Y contiene al suo interno un Number indicante l'accellerazione a cui lo SP è sottoposto (nota: qui sarebbe necessaria una distinzione tra Accellerometri e Giroscopi, che rimando a un post futuro): per la cronaca, l'unità di misura è metro/secondo^2, chi ha qualche riminescenza di meccanica classica capirà.

    function movefranco():void
    {
        var newX:Number = franco.x + xSpeed;
        var newY:Number = franco.y + ySpeed;
        if (newX < 20)
        {
            franco.x = RADIUS;
            xSpeed = 0;
        }
        else if (newX > stage.stageWidth - RADIUS)
        {
            franco.x = stage.stageWidth - RADIUS;
            xSpeed = 0;
        }
        else
        {
            franco.x +=  xSpeed;
        }

        if (newY < RADIUS)
        {
            franco.y = RADIUS;
            ySpeed = 0;
        }
        else if (newY > stage.stageHeight - RADIUS)
        {
            franco.y = stage.stageHeight - RADIUS;
            ySpeed = 0;
        }
        else
        {
            franco.y +=  ySpeed;
        }
    }

    Queste if altro non fanno che bloccare la pallina quando questa arriva a toccare i bordi. Senza entrare nel dettaglio (anche perchè credo sia tutto molto elementare) si considera l'ingombro determinato dal radius calcolando così quando la pallina deve smettere di muoversi.

    function timerHandler(event:TimerEvent):void
    {
        movefranco();
    }

    Questa funzione, richiamata dall'evento TimerEvent scatenato dall'oggetto timer si occupa di aggiornare la posizione della pallina in base alle possibile nuove inclinazioni dello SPhone.

    Ecco il codice per esteso

    import flash.sensors.Accelerometer;
    import flash.events.AccelerometerEvent;
    import flash.display.MovieClip;

    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.align = StageAlign.TOP_LEFT;
    //stage.cacheAsSurface = true;

    var accelerometer:Accelerometer;       
    var timer:Timer;
    var xSpeed:Number = 0;
    var ySpeed:Number = 0;
    const RADIUS = 20;

    function accUpdateHandler(event:AccelerometerEvent):void
    {
        xSpeed +=  event.accelerationX * 2;
        ySpeed -=  event.accelerationY * 2;
    }

    function movefranco():void
    {
        var newX:Number = franco.x + xSpeed;
        var newY:Number = franco.y + ySpeed;
        if (newX < 20)
        {
            franco.x = RADIUS;
            xSpeed = 0;
        }
        else if (newX > stage.stageWidth - RADIUS)
        {
            franco.x = stage.stageWidth - RADIUS;
            xSpeed = 0;
        }
        else
        {
            franco.x +=  xSpeed;
        }

        if (newY < RADIUS)
        {
            franco.y = RADIUS;
            ySpeed = 0;
        }
        else if (newY > stage.stageHeight - RADIUS)
        {
            franco.y = stage.stageHeight - RADIUS;
            ySpeed = 0;
        }
        else
        {
            franco.y +=  ySpeed;
        }
    }

    function timerHandler(event:TimerEvent):void
    {
        movefranco();
    }
    var ciccio: MovieClip = new MovieClip
    //-----------------------------------------------------
    if (Accelerometer.isSupported)
    {
        accelerometer = new Accelerometer();
        accelerometer.addEventListener(AccelerometerEvent.UPDATE, accUpdateHandler);
        timer = new Timer(100);
        timer.addEventListener(TimerEvent.TIMER, timerHandler);
        timer.start();
    }
    franco.x = stage.stageWidth / 2;
    franco.y = stage.stageHeight / 2;
    addChild(franco);

    Link: download

    venerdì 23 aprile 2010

    Adobe blocca lo sviluppo dell'iPhone Packager incluso in Flash CS5

    Vista l'impossibilità di programmare con tool esterni su iPhone, che Apple ha voluto a tutti i costi, Adobe ha deciso di tirare i remi in barca.
    Stop dunque allo sviluppo dell'iPhone packager (che verrà comuqnue incluso nella release definitiva), che comporterà (penso io) una concentrazione di risorse su Air 2.0, attualmente utuilizzato come runtime su Android, il più diretto rivale di iPhone.
    Da sviluppatore ammetto che mi dispiace non poter sviluppare su iPhone, ma se Apple continua a essere ciò che è, sono ben lieto di migrare su HTC-Android.

    C'est la vié (si diceva così, vero?)

    domenica 18 aprile 2010

    [Actionscript 3] XMLLoader: Creare una classe che legga e prepari XML

    In questo post tratterò di come creare una classe Actionscript 3 che carichi da se un file xml, semplicemente passandole un path, e a caricamenti avvenuto generi un evento ACTION da me definito.


    Questa classe non fornisce metodi e proprietà per il parsing (navigazione/lettura/scrittura), dato che quanto fornito di default da AS3 mi sembrava più che sufficiente. Vien da sè che chiunque decida di reimplementarla migliorandola è ben accetto.


    La classe è composta solo da poche righe, tuttavia avendo notato che sono praticamente sempre le stesse in qualsiasi progetto Flash, ho preferito raggrupparle tutte in una classe definita. Questo ha snellito i miei progetti e permesso di gestire meglio tutto il procersso di caricmaneto dati da XML.

    package _classi{

    import flash.events.*;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    public class LoadXML extends EventDispatcher{
    public static var ACTION:String = "action";
    public var xmlData:XML = new XML();
    public var objPath:String;
    public var isLoaded:Boolean = false;
    private var urlR:URLRequest=new URLRequest();
    private var urlLoader:URLLoader = new URLLoader();

    public function LoadXML(path) {
    objPath = path;
    urlR.url=objPath;
    urlLoader.addEventListener(IOErrorEvent.IO_ERROR, errHandler);
    urlLoader.addEventListener(Event.COMPLETE, xmlLoader);
    urlLoader.load(urlR);
    }
    public function xmlLoader(e:Event = null):void {

    xmlData=XML(urlLoader.data);
    dispatchEvent(new Event(LoadXML.ACTION));
    trace(xmlData.@src);
    }

    private function errHandler(e:IOErrorEvent):void {

    trace("url errato");
    trace(e.toString());
    }

    }
    }

    Innanzitutto definiamo il package (ossia la cartella all'interno della quale salvare la nostra classe. Io normalmente utilizzo "_classe", ma è ovvio che ognuno la definisce a suo piacimento e a seconda della sua posizione relativamente all'SWF che poi la utilizzerà.

    Successivamente importiamo i package a noi necessari, quindi tutti gli eventi, il loader (colui che caricherà/conterrà fisicamente l'XML), l'URLRequest (che si occuperà di fornire al loader l'url da cui caricare).
    package _classi{

    import flash.events.*;


    import flash.net.URLLoader;


    import flash.net.URLRequest;
    Ecco la prima nozuione interessante: definiamo la classe come estensione della EventDispatcher (traducibile all'incirca con 'Dispensatrice di Eventi').
    Questa scelta è motivata dalla necessità di poter creare un evento proprio della classe che indichi quando l'XML è stato caricato. Eviteremo l'ingombro di dover definire ogni volta un ascoltatore dell'evento Event.COMPLETE nel nostro ipotetico SWF con tutti i relativi annessi e connessi (cosa fare se l'url dell'XML non esiste).
    Ci basterà infatti definire nell'SWF target un ascoltatore all'evento ACTION, qui definito, senza preoccuparci di errori di url, che saranno tutti gestiti internamente alla classe.
    public class LoadXML extends EventDispatcher{
    public static var ACTION:String = "action";


    public var xmlData:XML = new XML();//sarà il contenitore finale del nostro XML


    public var objPath:String;//il path dell'XML


    public var isLoaded:Boolean = false;//una variabile flag, che cambierà valore a caricamento ultimato


    private var urlR:URLRequest=new URLRequest();//il contenitore dell'url dell'XML


    private var urlLoader:URLLoader = new URLLoader();//il loader
    Vediamo il costruttore. La prima azione che svolge è quella di associare assegnare alla proprietà url dell'oggetto URLRequest quanto passatogli nel parametro path. Assegnamo poi all'oggetto URLLoader (da non confondere con Loader) un ascoltatore che ci avvisi di eventuali errori nel url che andremo ad assegnargli e un ascoltatore che richiami la funzione xmlLoader, in caso l'url sia esatto, dell'avvenuto caricamento dei dati da XML.

    Ora che tutti gli ascoltatori sono definiti, passiamo pure l'url all'oggetto URLLoader.
    public function LoadXML(path) {
    objPath = path;

    urlR.url=objPath;


    urlLoader.addEventListener(IOErrorEvent.IO_ERROR, errHandler);


    urlLoader.addEventListener(Event.COMPLETE, xmlLoader);


    urlLoader.load(urlR);
    }
    La funzione XMLLoader è quella che si occupa di 'travasare' i dati dall'URLLoader all'oggetto XML.

    Ci si potrebbe chiedere come mai è necessario questo travaso, e perchè non far tutto con l'uno o con l'altro. Semplicemente perchè le proprietà/metodi dell'oggetto XML non sono sufficienti a caricare fisicamente i dati da file e le proprietà dell'oggetto URLLoader non sono sufficienti a gestire lalettura/navigazione dei dati una volta caricati. Dall'oltreonde, se così fosse, non avremo bisogno di implementare questa classe ;-)

    Questo metodo viene richiamato a caricamento dati ultimato. Nella proprietà data dell'oggetto URLLoader avremo dunque, in sequenza binaria, il contenuto del nostro file XML. Da notare che ci saremo potuti appoggiare alla proprietà target dell'oggetto e, che tutti sappiamo puntare al 'target' dell'evento, e cioè urlLoader. O preferito tralasciare questa finezza per una maggiore chiareza del codice.

    A questo punto utilizziamo il metodo dispatchEvent(), della classe EventDispatcher, che 'lancera' l'evento ACTION. Non abbiamo bisogno di instanziare un oggetto di questa classe per utilizzarla, in quanto ereditandola disponiamo gia adesso di tutti i suoi metodi/proprietà (esclusi i protected).

    Questo metodo vuole come parametro l'oggetto Event che dall'esterno sarà il segnale che l'XML è stato caricato ed è pronto ad essere utilizzato. L'oggetto Event a sua volta vuole come parametro la stringa che lo identifica, notare che saràè la stessa proprietà statica che verrà utilizzata poi nell'ascoltatore che creeremo nell'SWF esterno.

    Infine facciamo un trace del path dell'xml, a testimonianza che tutto è andato nel verso giusto.

    public function xmlLoader(e:Event = null):void {

    xmlData=XML(urlLoader.data);


    dispatchEvent(new Event(LoadXML.ACTION));

    trace(xmlData.@src);
    }

    Ora che la nostra classe, è completata, non ci resta che testarla all'interno di un qualsiasi SFW. Se tuttò va bene, otteremo un oggetto LoadXML la cui proprietà xmlData conterrà il nostro tanto agognato XML.

    Spero di essere stato sufficientemente chiaro, buon lavoro a tutti in attesa del nostro prossimo tutorial! :D