icona rss
  • Vai alla sezione Web & Graphic Design
  • Vai alla sezione Tutorial
  • Vai alla sezione Audio
  • Vai alla sezione Varie

ottobre 20, 2009 | 0 Commenti

Post Image

Anche se Papervision3D è un’API fantastica per quel che riguarda il 3D in Flash, esso necessita di un grosso lavoro di ottimizzazione del codice nel caso si voglia utilizzarlo per interi portali. Il mio sito xite-studio.com, è stato creato interamente in Pv3D e se devo essere sincero ne sono soddisfatto al 90%.


Ok. E’ solo il primo che ho sviluppato. Di fatto però richiede molte risorse. E pensate che ho perso molto tempo nella sua ottimizzazione. Il problema di xite-studio.com è il costante utilizzo di trasparenze che sono molto dispendiose per la nostra amata CPU (speriamo che prima o poi Flash possa utilizzare le capacità delle schede grafiche).


Nel caso di xite-studio.com il problema è chiaramente il modo stesso in cui è concepito il sito: piani in rilievo rispetto ad altri per rendere la profondità e tra le altre cose il colore di sfondo che mi ha costretto ad utilizzare la sopracitata trasparenza in ogni dove. Con questo voglio dire che se invece di avere un sfondo come quello attuale, fosse stato concepito con uno sfondo nero le cose sarebbero state sicuramente più facili.


Questo è il punto chiave. Come posso limitare l’utilizzo delle risorse della macchina?


UN CORRETTO USO DI ACTIONSCRIPT 3

Ci sono vari fronti sui quali agire. Uno di questi è la corretta programmazione in AS3. Ci sono modi e modi di programmare e uno di questi dice che quando occupo nuova memoria, questa deve venire liberata quando non ne ho più bisogno. Ma come si traduce nella pratica?


UTILIZZO DELLA MEMORIA IN FLASH

Quando in Flash e Actionscript3 create una variabile in verità non avete ancora occupato memoria. L’avete solo dichiarata ma di fatto l’oggetto in se non esiste ancora; gli avete dato un nome ma materialmente non potete usarla. Per poterla usare dovrete usare la parola chiave “new”. In quel momento viene creata l’istanza di oggetto e occupata la relativa memoria.


var palla:Sfera3D();//dichiarazione della variabile
palla = new Sfera3D(...);//qui ho occupato memoria


Immaginate ad esempio di avere create un campo di testo per la pagina dei contatti del vostro sito e che ad un certo punto voi usciate da tale pagina per andare in un altra. Ora quel campo di testo se non viene eliminato, continuerà ad occupare memoria. E sapete dove sta la fregatura? La fregatura sta nel caso voi entriate di nuovo nella pagina contatti: nuovo campo di testo e nuova memoria occupata. Tutto questo può ripetersi all’infinito fino a quando il Player Flash non riuscirà più a muoversi.


Per eliminare un oggetto in Flash e liberare lo spazio occupato non esiste un comando vero e proprio. In Flash si utilizza un certo sistema chiamato Garbage Collection. Come si intende dal nome questa collection non fa altro che ammucchiare quello che non serve più ed ogni tot lo distrugge. Flash promuove da solo tutto quello che deve andare in Garbage Collection e noi possiamo solo permettere che lui lo faccia. Il nostro scopo deve essere quello di rimuovere qualsiasi riferimento alla risorsa noi vogliamo venga spedita in G.C. e quindi distrutta.


CRITERI PER LA GarbABAGE COLLECTION

Le cose da fare sono principalmente:

  1. Rimuovere ogni istanza dalla display list tramite removeChild dell’oggetto che vogliamo rimuovere;
  2. Associare il valore null ad ogni variabile associata;
  3. Eliminare ogni listener di eventi collegato a tale oggetto;


removeChild(palla);//rimuovo dalla display list l'oggetto
palla = null;//associo un valore null alla variabile
palla.removeEventListener(Event.TIPODIEVENTO, funzione);//rimuovo ogni listener


Solo in questo modo potremo disfarci di tutto quello che ci rallenta.


Per oggi abbiamo finito. Nella seconda parte vedremo come ottimizzare il codice relativo all’API di Papervision3D e analizzeremo quali sono le features più dispendiose.




Ti è piaciuto? Condividi!

  • email
  • Facebook
  • LinkedIn
  • MySpace
  • RSS
  • Twitter
  • Technorati
  • Google Bookmarks
  • StumbleUpon
  • del.icio.us
  • Digg
  • FriendFeed

Articoli Correlati

  1. Papervision3D – Ottimizzazione del codice 2/2

Autore:

Roberto Cinetto

Roberto Cinetto - Web & Graphic Designer

Giovane designer di Padova Roberto è sempre stato appassionato del mondo informatico e come tale è sempre alla ricerca di nuove ispirazioni e di nuove tecnologie da esplorare. Da molti anni è anche chitarrista e amante della musica in generale. Il suo sogno è di riuscire un giorno a creare una agenzia multimediale competente in web, grafica/video e recording/mixing, naturalmente tramite la collaborazione con svariati professionisti.

Scrivi un commento

(obbligatorio)

(obbligatorio)