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
20 Commenti
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!
Ottima soluzione! grazie Maestro Julius
Davvero notevole! Grazie
PS. Che bello quando queste chicche di saggezza erano elargite con più frequenza ;)
Ottima soluzione Julius!
Grazie 1000 Julius.. prima della mia segnalazione avevo risolto inserendo 2 campi con al centro la @.. finalmente posso eliminare questa scorciatoia.
Grazie ancora!
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 ;) )
@mrKaizen: Interessante, grazie per la segnalazione
yeah, no prob ;)
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
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
@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ù
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
Scusate ma per AS 3????
a me il problema si è risolto su firefox grazie al tuo as… ma mi rimane sul chrome… come mai???
Mi occorre in as3 please ;)
found as version here:
http://blog.madebypi.co.uk/2009/04/21/transparent-flash-text-entry/
sorry as3 version i mean:
http://blog.madebypi.co.uk/2009/04/21/transparent-flash-text-entry/
Trovata la versione per as3
http://blog.madebypi.co.uk/2009/04/21/transparent-flash-text-entry/
@ Matteo:
http://blog.madebypi.co.uk/2009/04/21/transparent-flash-text-entry/
Scusa per l’ignoranza, ma non essendo un esperto di programmazione, mi sono affidato al sito http://www.wix.com per creare il mio sito in flash. Come faccio a risolvere il problema della @ non potendo accedere al codice della pagina (o almeno credo che non si possa)!
A dimenticavo, non so se è importante, ma questo bug con firefox e chrome mi capita solamente se inserisco nel mio sito in flash un widgets html che mi porta a un altro sito (ad esempio il pulsante condividi su facebook oppure il codice di un contatore visite). Altrimenti mi funziona tutto!