Quando non si lavora più da soli per tutti gli sviluppatori arriva il momento di trovare delle linee guida nella scrittura del codice. Protocolli e standard che permettano di “leggere” facilmente ed intervenire (sempre facilmente) nel codice altrui.
Quando su un progetto ci lavorano più programmatori, spesso su linguaggi diversi, è obbligatorio trovare una forma comune di scrittura, di standard nella documentazione interna ed esterna al codice. Nel mio lavoro mi trovo normalmente ad interagire con:
- Objetive-C, C/C++
- PHP
- HTML
- Javascript
- Actionscript
- CSS
Continua...
In Objective-C è possibile estendere una classe data in due modi: eseguendo un classico subclassing (leggi anche ereditarietà) o sfruttando le cosiddette Categorie.
Nota: esiste anche una terza via in Objective-C indicata con nome di Posing che potremmo definire un mix di subclass (perché definisce un nuovo nome) e Categorie (perché da un dato momento tutte le classi di un tipo si comportano come la nuova).
Continua...
In Adobe Flash è possibile utilizzare un vasto assortimento di Web API esterne fornite da servizi come Facebook, Twitter o Flickr. In questo tutorial vedremo come integrare, in modo davvero semplice, i servizi di Google Maps in un filmato/applicazione Adobe Flash CS4.
Continua...
Ho pensato che potrebbe essere utile a chi si è avvicinato da poco allo sviluppo di applicazioni per Apple iPhone, confrontare Adobe Actionscript – il linguaggio utilizzato in Adobe Flash e Adobe Flex, più diffuso tra i neo-programmatori – e Objective-C, il linguaggio utilizzato da Apple per sviluppare le sue applicazioni. Objective-C è a tutti gli effetti un linguaggio ad oggetti nel senso puro, non che Actionscript non lo sia, ma Objective-C ha sicuramente una marcia in più in quanto è un’estensione dell’ANSI C e la sua sintassi è un mix tra C/C++ e Smalltalk; è un vero OO (Object-oriented language).
Continua...
Avevo parlato già di come realizzare il metodo shuffle() in Javascript e Actionscript. Mi sono accorto, tuttaavia, di non aver sottolineato che anche Actionscript è in grado di estendere, nel medesimo modo di Javascript, il proprio oggetto Array:
Continua...
In PHP esiste una comoda funzione chiamata shuffle() che permette di mescolare un array (vedi Very short trick: prendere elementi casuali da un array in PHP). Un’ottima versione per Javascript l’ho trovata qui. Qui sotto il codice leggermente rivisto:
Continua...
In Actionscript 3.0 è necessario utilizzare addEventListener() per intercettare un qualsiasi evento:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| /**
* Dato un MovieClip mc, si impostano eventi e handler
*/
mc .addEventListener( MouseEvent.CLICK, on_click );
mc .addEventListener( MouseEvent.ROLL_OVER, on_roll_over );
mc .addEventListener( MouseEvent.ROLL_OUT, on_roll_out );
/**
* Funzioni di hander per gli eventi sopra indicati
*/
function on_click ( e :MouseEvent ):void {
// click
}
function on_roll_over ( e :MouseEvent ):void {
// roll over
}
function on_roll_out ( e :MouseEvent ):void {
// roll out
} |
Continua...
In Actionscript i cicli for è bene utilizzarli sempre con cura. Ad esempio è bene usare variabili uint quando è possibile:
1 2 3
| for( var i :uint = 0; i ++; i < 100) {
// ...
} |
È anche possibile usare la – non sempre conosciuta – forma:
1 2 3 4 5
| var i :uint = 0;
// ...
for(; i ++; i < 100) {
// ...
} |
Continua...
Appena uno sviluppatore Flash/Actionscript si appresta a scrivere una funzione simile ad un tooltip, si scontra immediatamente con il problema della propagazione degli eventi tra MovieClip sovrapposti. Infatti se un MovieClip (B) si sovrappone ad un MovieClip (A) che risponde, ad esempio, ad un evento MouseEvent.Mouse_OVER, passando con il mouse sul MovieClip (B) più alto nessun evento verrà più intercettato dal MovieClip (A):

Continua...
Nel post 3D CountDown con FIVe3D (vedi anche How I Did It: scrivere un countdown in Flash), veniva proposta una classe per la creazione di un oggetto CountDown in Actionscript, eccone una versione simile in Javascript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| /**
* CountDown Class
*
* @author Giovambattista Fazioli
* @email g.fazioli@undolog.com
* @web http://www.undolog.com
*
* @param dd (string) 'month day, year'
*
*/
function countDown( dd ) {
// init target time
var target = new Date( dd );
this.targetTime = target.getTime();
/**
* refresh countdown
*/
this.refresh = function() {
var today = new Date();
var currentTime = today.getTime();
// time left
this._leftMilliseconds = (this.targetTime - currentTime);
this._leftSeconds = Math.floor( this._leftMilliseconds / 1000 );
this._leftMinutes = Math.floor( this._leftSeconds / 60 );
this._leftHours = Math.floor( this._leftMinutes / 60 );
// no module
this.leftDays = Math.floor( this._leftHours / 24 );
// for print
this.leftMilliseconds = this._leftMilliseconds % 1000;
this.leftSeconds = this._leftSeconds % 60;
this.leftMinutes = this._leftMinutes % 60;
this.leftHours = this._leftHours % 24;
}
this.refresh();
} |
Esempio
1 2 3
| var cd = new countDown( '1 1, 2009' );
// mostra quanti giorni, ore, minuti, secondi e millisecondi al primo gennaio 2009
document.write( cd.leftDays + "," + cd.leftHours + "," + cd.leftMinutes + "," + cd.leftSeconds + "," + cd.leftMilliseconds ); |
Continua...
Ultimi Commenti
Giovambattista Fazioli: @ale: Come indicato @Kevin vedi sul repo di GitHub: https://github.com/gfazioli/Ch roma-Key
Giovambattista Fazioli: @Kevin: See https://github.com/gfazioli/Ch roma-Key
Kevin: Very nice example – would like to see the .fla too!
Ludovica: Ciao! Ti spiego il mio dubbio. Quando scrivo un post non inserisco immagini nell’articolo (se così...
Marco: ciao @Giovambattista Fazioli, grazie per tutte le delucidazioni di questa ottima guida. Avrei un quesito da...