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.
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.
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...
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:
mentre in AS3 è questo:Codice PHP:
var myClip:MovieClip = this.createEmptyMovieClip("myClip", 1);
var myMCLoader:MovieClipLoader = new MovieClipLoader();
myMCLoader.loadClip("test.jpg", myClip);
le righe di codice sono le stesse e insomma, cambia l'approccio ma non la sostanza,Codice PHP:
var loader:Loader = new Loader();
loader.load(new URLRequest("test.jpg"));
addChild(loader);
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:MovieClip, bytesLoaded:Number, bytesTotal: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:MovieClip, errorCode: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);
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...Codice PHP:
//AS3:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.addEventListener (HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
loader.contentLoaderInfo.addEventListener (Event.INIT, initHandler);
loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.contentLoaderInfo.addEventListener (Event.OPEN, openHandler);
loader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, progressHandler);
loader.contentLoaderInfo.addEventListener (Event.UNLOAD, unLoadHandler);
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);
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
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
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 packagee 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.
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_FRAME, preload) ;
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_FRAME, preload);
gotoAndStop(2);
}
}
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 vantaggiOriginariamente 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!![]()
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
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..."
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