martedì 10 giugno 2008

Mootools. Funzione initialize e options

Continuiamo lo sviluppo della classe QScroller. Partiamo dal codice includendo questa volta le istruzioni per la creazione di un'istanza scroller.

var QScroller = new Class({
  options: { (1)
    slides: 'qslide',
    direction: 'h',
    duration: 3000,
    auto: false,
    delay: 1000,
    transition: Fx.Transitions.linear
  },
  initialize: function(wrapper,options) { (2)
    this.setOptions(options); (5)
    /* ... */
  },
  /* ... */
});
QScroller.implement(new Options, new Events);

var opt = { (4)
  auto:true,
  onMouseEnter: function(){this.stop();},
  onMouseLeave: function(){this.play();}
}
var scroller = new QScroller('qscroller1',opt); (3)

(1) options è una proprietà standard, come si vede è un oggetto le cui proprietà sono inizializzate con valori predefiniti. Ne vedremo tra poco l'utilizzo.
(2) se una classe possiede una funzione initialize() questa sarà eseguita ogni volta che un'istanza viene creata e riceverà gli argomenti che abbiamo passato al costruttore.
(3) In questo esempio passiamo al costruttore 2 argomenti.
(4) Per il momento concentriamoci sul secondo, l'oggetto opt.
(5) Questo oggetto viene utilizzato in initialize() dalla funzione setOptions() (che la nostra classe eredita da Options per effetto di implement):

  • quando è definita una proprietà in opt presente anche nell'oggetto options di cui al punto (1), il valore in opt sovrascrive quello in options.
  • quando è definita una proprietà in opt non presente nell'oggetto options, la proprietà in opt viene aggiunta ad options.
  • le proprietà in options non definite in opt mantengono ovviamente il valore preimpostato.

Detto questo dopo l'esecuzione del codice sopra riportato i valori della proprietà options di scroller saranno i seguenti

scroller.options.slides -> 'qslide'
scroller.options.direction -> 'h'
scroller.options.duration -> 3000
scroller.options.auto -> true
scroller.options.delay -> 1000
scroller.options.transition -> Fx.Transitions.linear
scroller.options.onMouseEnter -> function(){this.stop();}
scroller.options.onMouseLeave -> function(){this.play();}

A cosa servono tutte queste opzioni ancora non si è visto!

Penso che l'utilità di questo meccanismo fornito da Options e setOptions() sia chiara: predefinendo i valori di una serie di opzioni possiamo in molti casi ridurre il numero di argomenti da passare al costruttore, semplificando così l'utilizzo della classe.

Anche questo è un post breve. Continueremo l'esame della funzione initialize() la prossima volta.

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.