Adsense Banner

risparmiare codice

Papervision3D - risparmiare codice

logoPV3D

L'esempio FirstApplication è una classe esplicativa e minimale di Papervision3D. Ogni volta che vogliamo fare una nuova applicazione Papervision3D potremmo copiare questa classe e aggiungere solo la logica specifica per la nuova applicazione a questa. Ogni progetto Papervision3D contiene le definizioni come minimo di: una macchina fotografica, una scena, un renderer e una finestra. La definizione di tutte queste proprietà e l'importazione delle loro classi ogni volta che si avvia con un progetto Papervision3D appare come un sacco di lavoro ingrato.

I programmatori più smaliziati si chiederanno come possono fare tutto ciò in modo più efficiente.
Fortunatamente, Papervision3D include una classe denominata BasicView che contiene la configurazione base di cui abbiamo bisogno. Siccome la classe BasicView è, in fin dei conti, una Sprite estesa, possiamo istanziarla e aggiungerla allo stage o estendere la nostra classe documento da essa. Noi useremo l'ultima opzione.

Come funziona? Diamo uno sguardo alla versione migliorata della FirstApplication di esesempio, con la stessa sfera che ruota sul suo asse y.

package {
     import flash.events.Event;
   
     import org.papervision3d.objects.primitives.Sphere;
     import org.papervision3d.view.BasicView;
   
     public class BasicViewExample extends BasicView
     {
        private var sphere:Sphere;
        public function BasicViewExample()
        {
            stage.frameRate = 40;
   
            sphere = new Sphere();
            scene.addChild(sphere);
           
            startRendering();
        }
       
        override protected function onRenderTick(e:Event=null):void
        {
            sphere.localRotationX +=1;
           super.onRenderTick();
       }
     }
}

Ora all'interno del costruttore, abbiamo bisogno di impostare solo i valori del progetto specifici come il frame rate e una sfera. La sfera viene aggiunta alla scena, senza un'istanza di un oggetto Scene3D. Ciò perchè è già stato fatto automaticamente all'interno della classe BasicView. Dobbiamo poi dire alla classe BasicView che può iniziare il rendering chiamando il startRendering () metodo che fa parte della classe BasicView. Una volta che questo metodo viene chiamato, aggiungeremo un EventListener ENTER_FRAME, così da fare il re-rendering della scena ogni volta che l'evento si ripete. Questo è già sufficiente per vedere la nostra sfera renderizzata sullo schermo, ma abbiamo bisogno di aumentare il valore della rotazione sull'asse y della sfera che facciamo ad ogni ENTER_FRAME.
(Nella maggior parte degli esempi faremo qualcosa ad ogni ENTER_FRAME.)
Il modo più semplice per fare ciò è quello di sovrascrivere il metodo onRenderTick (), che fa già parte della classe BasicView, e richiamarlo a ogni fotogramma. Mediante l'override di questo metodo possiamo scrivere il nostro codice da eseguire ogni volta che onRenderTick () viene chiamato. Siccome onRenderTick () è incluso nella classe BasicView, per essere eseguito va chiamato attraverso classe super, chiamando super.onRenderTick ();.

A causa di alcune piccole differenze tra le impostazioni della classe BasicView e le impostazioni che abbiamo usato in FirstApplication, la dimensione della sfera non sarà più la stessa. Considerando che la finestra nel nostro esempio è  predefinita, BasicView automaticamente si adatta alle dimensioni dello stage.

L' Uso della classe BasicView può far risparmiare un sacco di codice. Se si confronta questo esempio con l'estensione della classe BasicView con la classe FirstApplication, vedremo che abbiamo ridotto la quantità di linee da 43 a 26. Quindi, ciò ci ha fatto risparmiare 17 linee di codice che non devi scrivere più e più volte. Tutti gli esempi in questa guida faranno utilizzo della classe BasicView.

<<< Articolo precedente - SOMMARIO - Articolo successivo >>>

Filippo Porcari
Author: Filippo PorcariWebsite: http://filippo.porcari.oranjuice.org/Email: Questo indirizzo email è protetto dagli spambots. E' necessario abilitare JavaScript per vederlo.
designer freelance
Sono un graphic designer e mi occupo di pubblicità. Da più di 10 anni dedico le mie energie alla realizzazioni d'immagine aziendale e comunicazione visiva con un'attenzione alle nuove tecnologie del web. Da qualche anno ho scoperto il software open source e mi sono dedicato alla sua introduzione nel mio workflow produttivo ottenendo ottimi risultati.