L’altra sera leggevo un commento scritto da Marcello, un lettore di JuliusDesign che mi chiedeva come risolvere il Bug di Firefox riguardo la gestione della famosa chiocciola @ in Flash per un campo di input con stage impostato wmode=transparent
Succede infatti durante l’inserimento della chiocciola (@) in un campo di input gestito con la trasparenza in flash, la trasformazione del carattere nella o accentata (ò)
La prima soluzione immediata è quella di non usare la trasparenza in Flash, quindi nel nostro codice HTML eliminare i parametri riferiti al wmode=transparent
Facile Julius, ma se ho necessità di utilizzare la trasparenza in Flash come devo fare?
Non c’è una vera e propria soluzione, ma possiamo risolvere il problema con un paio di righe in Actionscript mantenendo sempre la trasparenza in flash
Andiamo a vedere l’esempio in Flash e come procedere:
Una delle soluzioni che vi consiglio è quella di usare lo stesso ActionScript utilizzando la funzione Key.getAscii(); per intercettare la pressione del tasto ò
Ecco il codice Actionscript 2:
keyPresser = new Object();
keyPresser.onChanged = function(my_text:TextField) {
if (((Key.getAscii())) == 242) {
my_text.text = my_text.text.slice(0, my_text.text.length-1)+"@";
trace("Add @");
}
};
Key.addListener(keyListener);
my_text.addListener(keyPresser);
Vediamo il codice nei dettagli:
Creo un nuovo oggetto keyPresser e dichiaro una funzione al cambiamento del contenuto referente al mio campo di input my_text
keyPresser = new Object();
keyPresser.onChanged = function(my_text:TextField) {
Inserisco una condizione con la quale verifico se è stato premuto il carattere ò in ASCII 242 e lo sostituisco con il carattere chiocciola @
if (((Key.getAscii())) == 242) {
my_text.text = my_text.text.slice(0, my_text.text.length-1)+"@";
trace("Add @");
}
};
Infine associo la funzione al mio testo con addListener
Key.addListener(keyListener);
my_text.addListener(keyPresser);
Purtroppo il comando di funzione AltGr non viene associato e ha come valore 0, per questo non si puo inserire una condizione solo sulla pressione di entrambi i tasti
Ricordiamo di incorporare i caratteri speciali come quelli di punteggiatura in cui vi è la famosa chiocciola
Ovviamente se ora la chiocciola sarà inseribile, meno lo sarà il carattere ò in quanto verrà automaticamente sostituito
Da ricordare l’inserimento della chiocciola anche con la seguente combinazione di tasti SHIFT+2
Scarica il sorgente
Guarda il Tutorial
Articoli simili in Actionscript, AS2, Bug, Flash, Sviluppo, Tutorial
tag abilitati: <code> </code> | <a href=""> </a> | <b> </b> | <i> </i>
Iscriviti ai Feed RSS dei commenti di questo articolo

Deja_rulez
2 febbraio 2009
Bella julius per la soluzione,
Se non sbaglio con il nuovo flash player e firefox2 è stato risolto il problema quindi dovrebbe funzionare anche con il wmode transparent.
Altra cosa, importante (che penso sicuramente tu conosca già) è il fatto di limitare l’utilizzo del wmode allo stretto necessario visto che influisce in maniera consistente sulla pesantezza del filmato flash a livello di utilizzo cpu. [correggimi se sbaglio]
ciaaps!
Geekko
2 febbraio 2009
Ottima soluzione! grazie Maestro Julius
Michele.77
4 febbraio 2009
Davvero notevole! Grazie
PS. Che bello quando queste chicche di saggezza erano elargite con più frequenza
Markino
6 febbraio 2009
Ottima soluzione Julius!
Marcello
16 febbraio 2009
Grazie 1000 Julius.. prima della mia segnalazione avevo risolto inserendo 2 campi con al centro la @.. finalmente posso eliminare questa scorciatoia.
Grazie ancora!
mrKaizen
19 febbraio 2009
Guarda qua, per una classe che fixa il problema:
http://www.manmaru.fr/mlab/?p=95
devi solamente aggiungere la tastiera IT (prendi la francese e sopstituisci guardando i tasti della tua
)
Julius
19 febbraio 2009
@mrKaizen: Interessante, grazie per la segnalazione
mrKaizen
20 febbraio 2009
yeah, no prob
simoegio
26 febbraio 2009
c’è un modo (magari AS2) per risolvere il problema indipendentemente dalla lingua della tastiera usata? ora come ora funziona solo su quella italiana visto che il codice ASCII di riferimento è quello
Michele
25 giugno 2009
ragazzi … a me il bug compare anche senza il wmode transparent …
guardate qui .. http://www.stasigroup.it … andate nella sezione contatti .. e provate ad inserire una @ o un ? .. vedete cosa succede ….
il bello è che se accedo direttamente al file http://www.stasigroup.it/contatti.swf …
il bug non si presenta!!!
con ie tutto ok …
mi sapete aiutare??
grazie mike
Julius
25 giugno 2009
@simoegio per ora ho trovato solo questa soluzione
@Michele ciao dall’HTML si nota chiaramente che utilizzi
<param name="wmode" value="transparent">Prova a toglierlo vedrei che il problema non ci sarà più
Michele
25 giugno 2009
my god .. sto proprio fuso ahahah stavo operando su una pagina diversa aah index.htm invece di html .. e in quella lo avevo già tolto XD …. mammamia grazie … certe volte ci si perde in un bicchiedere d’acqua XD
bye bye mike
Matteo
3 novembre 2009
Scusate ma per AS 3????
Andrea
27 maggio 2010
a me il problema si è risolto su firefox grazie al tuo as… ma mi rimane sul chrome… come mai???