Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Come mai As3 è cosi complicato?

    Come mai hanno combinato un macello complicando alla massima potenza l'actionscript 3?
    ora per fare un semplice preloader mi tocca scrivere 3 miliardi di righe di codice invece delle solite 3 righe con as2.

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    non so se è il caso di lasciare qui questo thread... in effetti parla di actionscript, ma in maniera "filosofica" e non tecnica... vediamo come si evolve, intanto ti do la mia risposta...

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ok, partendo dal presupposto che AS3 è praticamente un nuovo linguaggio e l'approccio sulla programmazione è diventata nettamente di tipo object-oriented, direi che la differenza tra AS2 e AS3 non è tangibile effettivamente su un esempio come quello che hai portato nel post, perchè in effetti un caricamento semplice in AS2 è questo:

    Codice PHP:
    var myClip:MovieClip this.createEmptyMovieClip("myClip"1);
    var 
    myMCLoader:MovieClipLoader = new MovieClipLoader();
    myMCLoader.loadClip("test.jpg"myClip); 
    mentre in AS3 è questo:

    Codice PHP:
    var loader:Loader = new Loader();
    loader.load(new URLRequest("test.jpg"));
    addChild(loader); 
    le righe di codice sono le stesse e insomma, cambia l'approccio ma non la sostanza,
    ora se mettiamo a confronto un preload di AS2 con uno di AS3, avremo:

    Codice PHP:
    // AS2:
    var mcListener:Object = new Object();
    mcListener.onLoadStart = function(target_mc:MovieClip) {
        
    target_mc._alpha 0;
        
    trace("Attivato Evento Start, l'immagine sta caricando");
    };
    mcListener.onLoadProgress = function(target_mc:MovieClipbytesLoaded:NumberbytesTotal:Number) {
        var 
    percentual:Number Math.floor((bytesLoaded/bytesTotal)*100);
        
    trace("Caricati "+bytesLoaded+" bytes di "+bytesTotal+" totali");
        
    trace("Caricato "+percentual+"% dell'immagine");
    };
    mcListener.onLoadComplete = function(target_mc:MovieClip) {
        
    target_mc._alpha 100;
        
    trace("Attivato Evento Complete, l'immagine ha terminato il caricamento");
    };
    mcListener.onLoadInit = function(target_mc:MovieClip) {
        
    trace("Larghezza: "+target_mc._width);
        
    trace("Altezza: "+target_mc._height);
    };
    mcListener.onLoadError = function(target_mc:MovieCliperrorCode:String) {
        if (
    errorCode == "URLNotFound") {
            
    trace("Errore, l'immagine non è stata trovata, file sconosciuto");
        } else if (
    errorCode == "LoadNeverCompleted") {
            
    trace("Errore, caricamento interrotto, probabile sovraccarico del server, riprovare più tardi");
        } else {
            
    trace("Errore generico, il server non ha risposto in tempo, oppure l'immagine risulta danneggiata o non è un'immagine");
        }
    };
    var 
    mcLoader:MovieClipLoader = new MovieClipLoader();
    mcLoader.addListener(mcListener);
    var 
    myClip:MovieClip this.createEmptyMovieClip("myClip"1);
    mcLoader.loadClip("image.jpg"myClip); 
    Codice PHP:
    //AS3:
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener (Event.COMPLETEcompleteHandler);
    loader.contentLoaderInfo.addEventListener (HTTPStatusEvent.HTTP_STATUShttpStatusHandler);
    loader.contentLoaderInfo.addEventListener (Event.INITinitHandler);
    loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERRORioErrorHandler);
    loader.contentLoaderInfo.addEventListener (Event.OPENopenHandler);
    loader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESSprogressHandler);
    loader.contentLoaderInfo.addEventListener (Event.UNLOADunLoadHandler);
    loader.load (new URLRequest("test.jpg"));
    function 
    completeHandler (event:Event):void {
        
    trace ("completeHandler: " event);
    }
    function 
    httpStatusHandler (event:HTTPStatusEvent):void {
        
    trace ("httpStatusHandler: " event);
    }
    function 
    initHandler (event:Event):void {
        
    trace ("initHandler: " event);
    }
    function 
    ioErrorHandler (event:IOErrorEvent):void {
        
    trace ("ioErrorHandler: " event);
    }
    function 
    openHandler (event:Event):void {
        
    trace ("openHandler: " event);
    }
    function 
    progressHandler (event:ProgressEvent):void {
        
    trace ("progressHandler: bytesLoaded=" event.bytesLoaded " bytesTotal=" event.bytesTotal);
    }
    addChild (loader); 
    possiamo comunque constatare che a parità di azioni, il codice non cambia poi tanto, seppur in AS3 esistano due "modifiche" fondamentali, la "gestione degli eventi" e la "display list", che sono in finale le cose di cui bisogna ricordarsi al fine di usare correttamente AS3, insieme alla consapevolezza che esiste una classe per ogni tipo di elemento visivo, ad esempio per le forme vettoriali c'è la classe Shape, per le immagini la classe Bitmap, per i file caricati dall'esterno la classe Loader e così via...

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    lorenz82 non è che confronti i metodi base di as2 (come il primo caso esposto da and80) con un metodo ben settato di tutti i controlli (load.complete, etc...) in as3?
    Fotografario MultiUtente Interamente in Flash: QUI

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Comunque su una cosa sono daccordo ... queste "modifiche" di codice mi sanno più di mosse commerciali che di reali bisogni concettuali ... ora mi serverà un attestato di AS3!
    Fotografario MultiUtente Interamente in Flash: QUI

  6. #6
    In effetti la mia "polemica" partiva dal fatto che forse non c'era bisogno di stravolgere dei codici che prima funzionavano benissimo.
    Cmq mi ero un pò impressionato perchè cercando su internet Preloader per AS3 ne ho trovati una caterva lunghissimi ed esterni che si affidano a file .as esterni nei quali bisogna fare cose strane come il package e gli import ma non ne ho trovato nessuno di facilissimo come quelli per as2, quelli che si mettevano nel primo frame della time line con la progressbar.

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    parli di preload del filmato principale allora?!
    in realtà anche lì il concetto non è molto diverso dal classico vecchio preload su singolo frame, il classico preload è questo

    Codice PHP:
    addEventListener(Event.ENTER_FRAMEpreload) ;
    function 
    preload (e:Event) {
        var 
    bl stage.loaderInfo.bytesLoaded;
        var 
    bt stage.loaderInfo.bytesTotal;
        var 
    pt Math.floor((bl/bt)*100);
        if(!
    isNaN(pt)){
            
    trace(pt+"%");
        }
        if (
    bl >= bt && bt pt && pt == 100) {
            
    removeEventListener(Event.ENTER_FRAMEpreload);
            
    gotoAndStop(2);    
        }


  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da Mir
    Comunque su una cosa sono daccordo ... queste "modifiche" di codice mi sanno più di mosse commerciali che di reali bisogni concettuali ... ora mi serverà un attestato di AS3!
    indubbiamente quello che muove la Adobe a creare un nuovo linguaggio, più solido e incentrato sull'OOP, non è certo unicamente una scelta per il miglioramento dello strumento, ma è pur vero che attraverso AS3 uno sviluppatore non improvvisato troverà un linguaggio con basi pari a quelle di tanti linguaggi di programmazione attuali, grazie al quale potrà creare applicazioni con meno ridondanza, con maggiore velocità di esecuzione e minor carico per la CPU e tanti altri vantaggi
    insomma direi che l'introduzione di AS3 non è certo paragonabile alla "semi-bufala" di AS2 o dei filtri e opzioni di fusione introdotti in Flash 8, la paragonerei di più all'introduzione di actionscript come linguaggio completo in Flash 5

  9. #9
    io vorrei iniziare a studiare AS3. Da dove mi consigliate di partire? Libri?

    grazie
    My website: .....:::{[( www.oltrecalcio.com )]}:::.....
    My works: .....:::{[( win.oltrecalcio.com/lavori )]}:::.....

    "PALLA TAGLIATA...MESSA FUORI...C'è PIRLO PIRLO...ANCORA PIRLO...DI TACCO...TIRO... GOOOOOOOOOOOOOOOOOL GRROSOOO GRROSOOO GRROSSOOO GOL DI GROSSOOOOOOOO..."

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    dipende da quanto conosci AS2,
    quello che ti devi chiedere ad esempio è se sei in grado con AS2 di effettuare le azioni basilari, tipo i caricamenti esterni di swf o immagini, il caricamento di variabili dall'esterno da un file di testo o uno script lato server, o ancora un caricamento di xml, se sai come si danno azioni ai clip direttamente su frame (visto che è proibito in AS3 utilizzare script direttamente sugli oggetto con le funzioni "on()" e "onClipEvent()" ) e se comprendi appieno il significato di "evento" e di "asincrono"
    a quel punto puoi decidere di rivedere in AS3 i concetti che conoscevi in AS2 o di ricominciare daccapo a studiare il linguaggio dimenticando quello che conoscevi in precedenza
    a questo punto un libro sarebbe un'ottima soluzione per imparare

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.