Very short trick: addEventListener() AS3, un handler più eventi

Martedì 6 Gennaio, 2009

In Actionscript 3.0 è necessario utilizzare addEventListener() per intercettare un qualsiasi evento:

Actionscript:
  1. /**
  2. * Dato un MovieClip mc, si impostano eventi e handler
  3. */
  4. mc.addEventListener( MouseEvent.CLICK, on_click );
  5. mc.addEventListener( MouseEvent.ROLL_OVER, on_roll_over );
  6. mc.addEventListener( MouseEvent.ROLL_OUT, on_roll_out );
  7. /**
  8. * Funzioni di hander per gli eventi sopra indicati
  9. */
  10. function on_click( e:MouseEvent ):void {
  11.     // click
  12. }
  13. function on_roll_over( e:MouseEvent ):void {
  14.     // roll over
  15. }
  16. function on_roll_out( e:MouseEvent ):void {
  17.     // roll out
  18. }

In alternativa è possibile usare la forma:

Actionscript:
  1. mc.addEventListener( MouseEvent.CLICK, on_handler );
  2. mc.addEventListener( MouseEvent.ROLL_OVER, on_handler );
  3. mc.addEventListener( MouseEvent.ROLL_OUT, on_handler );
  4. /**
  5. * Creo un'unica funzione per gestire tutti gli eventi
  6. */
  7. function on_handler ( e:MouseEvent ):void {
  8.     switch( e.type ) {
  9.         case MouseEvent.CLICK:
  10.              // click
  11.              break;
  12.         case MouseEvent.ROLL_OVER:
  13.              // roll over
  14.              break;
  15.         case MouseEvent.ROLL_OUT:
  16.              // roll out
  17.              break;
  18.     }
  19. }

Post correlati

Wordpress: wp_parse_args()

Lunedì 5 Gennaio, 2009

La funzione wp_parse_args() (come molte altre non documentata) elabora una stringa nel formato:

CODE:
  1. var1=value1&var2=value2...varn=valuen

Questa è una caratteristica molto diffusa nelle funzioni Wordpress ed è utile quando una funzione supporta più paramteri. Come indicato in Argomenti variabili e di default in Javascript, Actionscript e PHP, non sarebbe necessario passare i parametri nella modalità var1=value1&var2=value2...varn=valuen, in quanto PHP è in grado di gestire in tutta tranquillità il passaggio di parametri variabili.

Continua a leggere... »

Post correlati

Wordpress Plugin: Flash Feed Scroll Reader

Lunedì 22 Dicembre, 2008

Prendendo spunto dal post Creare un semplice Feed Reader con SimplePie e jQuery ho creato il primo Plugin Wordpress targato Saidmade. Flash Feed Scroll Reader utilizza SimplePie per creare un proxy PHP per accedere ai diversi indirizzi feed. Per l'effetto di scroll ho scelto Flash per una questione di performance! Nonostante sia possibile generare lo stesso effetto anche con librerie Javascript come jQuery, la fluidità offerta da Flash è sicuramente superiore, consentendo di non rallentare eccessivamente il sistema. Inoltre il Plugin sfrutta la libreiria SWFObject per inserire il filmato Flash nel blog. In questa release è possibile impostare il comportamento dello scroller direttamente dal pannello di controllo. Nelle prossime versioni sarà possibile passare ulteriori parametri alla funzione PHP in modo da aggiungere più scroller sulla stessa pagina.

Post correlati

Very short trick: proxy RSS con SimplePie

Lunedì 22 Dicembre, 2008

Se usate Flash o Ajax per leggere Feed RSS da altri domini, dovete necessariamente dotarvi di un proxy (tunneling) a causa delle protezioni imposte da entrambe le tecnologie (vedi Tunneling e proxy server per Ajax e non solo ). Se sul vostro sito o blog è già presente SimplePie, potete scrivere una semplice proxy in questo modo:

PHP:
  1. require_once "simplepie.inc";
  2.  
  3. $feed = new SimplePie();
  4. $feed->set_feed_url( 'http://www.undolog.com/feed' );
  5. $feed->enable_xml_dump(true);
  6. $feed->init();

A questo file (ad esempio proxy.php) è possibile inviare in GET l'url del feed che volete leggere:

PHP:
  1. require_once "simplepie.inc";
  2.  
  3. $feed = new SimplePie();
  4. $feed->set_feed_url( $_GET['feedurl'] );
  5. $feed->enable_xml_dump(true);
  6. $feed->init();

Usando nella chiamata proxy.php?feedurl=http://www.cnn.com/feed

Post correlati

Internet Explorer: la più grande campagna virale mai realizzata?

Giovedì 18 Dicembre, 2008

I browser sono oggi uno strumento indispensabile e, molto probabilmente, l'applicazione software più nota in circolazione. Se un tempo questo primato spettava ad applicativi come Microsoft Word, oggi il podio è occupato dall'applicazione che ha rivoluzionato l'informatica, la comunicazione e forse il mondo intero. Grazie alla sua semplicità, il browser si è diffuso rapidamente e con capacità adattive che pochi altri applicativi hanno saputo mostrare: cross platforms (multi-piattaforma) e cross devices (multi-dispositivo).
Navigare su Internet è possibile proprio grazie al browser; possiamo usarlo da un PC, da un Mac, da un palmare, dai nuovi "telefonini". Tutto questo è possibile, tra l'altro, grazie alla semplicità (in teoria) del - vero - lavoro che un browser deve svolgere: convertire visivamente le informazioni che provengono dalla rete.
Quando un browser visualizza in modo corretto una pagina, il 99% del suo lavoro è terminato! Le schede colorate, l'auto-completamento degli indirizzi, le opzioni infinite, la gestione dei bookmark e tutto il resto, sono di aiuto ma pur sempre un contorno. A parità di features, dunque, dovremmo essere tutti d'accordo che "il migliore" è colui che visualizza al meglio ciò che intendiamo vedere!

Come mai, allora, il browser più diffuso è quello con le caratteristiche peggiori?

Se andando a spulciare le varie statistiche dei browser più usati, o semplicemente guardando le statistiche del proprio sito o blog, ci si accorge che Internet Explorer detiene in media oltre il 70%, seguito da Firefox, Safari e Opera.

Performarce

Un po' di conti giusto per rendersi conto della paradossale situazione. Questi sono dati (Web Browser Benchmark Comparison) sulle performance dei motori interni ai browser e quindi importanti, se non importantissimi, nelle cosiddette applicazioni Web 2.0; bassi valori (parliamo di tempi, nello specifico di millisecondi) indicano prestazioni migliori:

Benchmark

Acid test

Spostandoci sul versante della resa grafica l'acid test 3 (già provato tempo fa in Four browsers: Acid 3 Test… una delusione) parla da solo; in questo caso valori alti denotano migliori capacità:

Acid Test 3

Riassumendo:

Riassumendo 

Perché conviene scrivere un browser?

Se qualcuno si è chiesto come mai Google abbia deciso di sviluppare un proprio browser e perché mai Microsoft è finita addirittura in tribunale, per la questione della preinstallazione di IE su Windows, non sa che parte degli introiti derivati dalle pubblicità sui motori di ricerca come Google, Yahoo, Live search, ed altri, sono "girati" al browser che ha generato la ricerca! Dato che si parla di quantità notevoli di denaro, diventa chiaro il motivo che spinge allo sviluppo di un browser, anche se distribuito poi a titolo gratuito. È evidente, infatti, che Google si sia stancata di “girare” parte dei suoi introiti a browser esterni. La diffusione di Google Chrome permetterebbe a bigG di risparmiare un bel po'!

Cambiamo!

Se avete un PC e trovate preinstallato il buon Microsoft Internet Explorer, non fatevi vincere dalla pigrizia e, una volta tanto, provate l'ebrezza di cambiare! Installare un diverso browser è facilissimo, basta cliccare qui sotto:

Effetto virale: voluto o puro caso?

C’è poi una questione personale che mi attanaglia! Anzi due: la prima è che come programmatore non riesco proprio a capire come bachi grossolani presenti già nelle versioni 5, 5.5 e 6 di Internet Explorer si siano trascinati nel tempo, nonostante le innumerevoli segnalazioni e lamentele. Non si può certo dire che Microsoft abbia difficoltà ad eseguire aggiornamenti sul proprio sistema, visto il suo “sempre attivo” Windows update. Ancora più curioso, infatti, è che un browser innestato nel sistema operativo come Internet Explorer subisca a mala pena gli aggiornamenti di sicurezza ma non quelli relativi a cattive interpretazioni dei CSS o Javascript. Questo rimarrà per me un eterno mistero!

La seconda questione riguarda l’archivio dei post di undolog. Mi sono reso conto, infatti, di quante volte ho scritto lamentandomi del cattivo funzionamento di Explorer. Insomma, alla fine ne ho parlato male ma pur sempre parlato! E se tutto ciò fosse voluto? Forse sono stato vittima inconsapevole, insieme a qualcun’altro, di una campagna virale ben studiata! Anche se, a pensarci bene, non necessaria…

Post correlati

jQuery Cheat Sheet e le prime patch in attesa della beta 1.3

Mercoledì 17 Dicembre, 2008

Il Cheat Sheet di jQuery 1.2 - molto utile.

jQuery 1.2 Cheat Sheet

In attesa del rilascio 1.3 beta di jQuery, John Resig ha rilasciato alcune patch al codice che ne migliorano le performance. Dall'articolo originale si intravedono vari miglioramenti come l'uso del DocumentFragment, con notevole miglioramento delle performance e l'introduzione nella release finale del nuovo motore di selezione css Sizzle.

Post correlati

Internet Explorer 6: eliminare il baco del doppio margine

Martedì 16 Dicembre, 2008

Tra le varie simpatiche "interpretazioni" che Internet Explorer 6 riesce a fare con HTML/CSS, quella del "doppio margine" è sicuramente la più noiosa e frequente. In pratica (udite, udite...) il buon browser Microsoft riesce - misteriosamente - a raddoppiare i margini sugli elementi impostati in float! Dato ad esempio il seguente codice CSS, applicato ad un div con id box:

CSS:
  1. div#box{display:block;width:100px;height:100px;margin-left:100px;float:left}

Si ottiene:

ie6double

Dove è n è il nostro margine sinistro di 100px! Questo difetto, fortunatamente, avviene solo in determinate circostanze, cioè quando il margine coincide con la direzione del float e quando il nostro div#box si trova a diretto contatto con il suo contenitore. Questo significa che un ulteriore div#box sulla stessa riga non soffrirebbe del problema in quanto si troverebbe a sinistra non più il contenitore ma il div#box precedente. Ovviamente il problema non è specifico del margine sinistro ma risulta speculare; invertendo il tutto si produrrebbe lo stesso identico problema con il margine destro!

Soluzione

La soluzione è davvero semplice: basta inserire la dichiarazione display:inline nel nostro CSS e il difetto scompare:

CSS:
  1. div#box{display:block;width:100px;height:100px;margin-left:100px;float:left;
  2. display:inline}

L'introduzione di display:inline verrà ignorata da tutti gli altri browser e non perchè siamo particolarmente fortunati ma bensì da specifiche W3C:

...The 'display' is ignored, unless it has the value 'none'.

Post correlati

Very short snippet: jQuery auto target blank link

Lunedì 15 Dicembre, 2008

Niente di nuovo, ma lo segno per ricordarmelo: come aggiungere un immagine a tutti i link che aprono una nuova pagina:

JavaScript:
  1. jQuery('a[@target=_blank]').addClass('external');

La classe css extenal è del tipo:

CSS:
  1. .external{background:url(images/external.png) no-repeat right 3px;padding-right:14px}

Come immagine si può usare: external

Il risultato è miolink

Post correlati

Creare un semplice Feed Reader con SimplePie e jQuery

Lunedì 15 Dicembre, 2008

SimplePie è una libreria PHP in grado di semplificare notevolmente il recupero e la manipolazione di Feed RSS o, più in generale, di formati XML. È possibile, ad esempio, scrivere poche righe di codice, sfruttando anche qualche "funzioncina" jQuery, per realizzare un News Ticker da inserire nel nostro sito/blog.

Cosa ci serve...

Prima di tutto scaricate SimplePie e inserire, da qualche parte, il file simplepie.inc sul vostro sito/blog. Il codice per leggere e visualizzare un feed è il seguente:

PHP:
  1. /**
  2. * SimplePie sample
  3. *
  4. * @author        Giovambattista Fazioli
  5. * @web           http://www.undolog.com
  6. * @email         g.fazioli@undolog.com
  7. *
  8. */
  9. // inserire il percorso corretto
  10. require_once ("simplepie.inc");
  11. //
  12. function wordCut($c, $l){
  13. $a= explode(' ',$c);
  14. if( count($a)> $l) {
  15.     for($i=0; $i<$l; $i++) $r[$i] = $a[$i];
  16.     $r= implode(' ', $r).'...';
  17.     return $r;
  18.     } else return $c;
  19. }
  20. //
  21. $max        = 10;        // last 10 post/news
  22. $thefeed    = new SimplePie('http://www.undolog.com/feed');
  23. $thefeed->handle_content_type();
  24. for ($i = 0; $i <$thefeed->get_item_quantity( $max ); $i++  ) $articles[] = $thefeed->get_item($i);
  25. foreach ($articles as $item) echo '<li><a href="' . $item->get_link() . '">' . $item->get_title() . '</a> - '.wordCut($item->get_description(), 10).'</li>';

Continua a leggere... »

Post correlati

Aggiornamento a Wordpress 2.7

Giovedì 11 Dicembre, 2008

Come molti ho eseguito anch'io l'aggiornamento a Wordpress 2.7. Tutto è andato bene, come al solito, tranne che per due Plugin:

Lighter Menus non ha più senso nella nuova interfaccia di Wordpress, quindi disattivatelo (ed eliminatelo) prima di eseguire l'aggiornamento.

Per Simple Tags, invece, dovete alterare una riga di codice che causa il malfunzionamento del Plugin con la release 2.7 di Wordpress. Per farlo andate nell'editor di Plugin interno a Wordpress e selezionate Simple Tags. La riga:

PHP:
  1. if ( strpos($wp_version, '2.5') !== false || strpos($wp_version, '2.6') !== false ) {

Deve diventare:

PHP:
  1. if ( strpos($wp_version, '2.7') !== false ) {

Aggiornate e tutto andrà per il meglio: fate sempre un backup dei file e del database

Post correlati