2013-04-02 62 views
6

L'app My AIR sta caricando un file SWF che contiene un campo di testo per l'immissione. Posso digitare nel campo di testo ma copiare e incollare è rotto. Quando provo ad incollare qualcosa usando la scorciatoia da tastiera, il campo di testo diventa in questo modo:Impossibile eseguire copia/incolla su campi di testo in file SWF caricati in AIR

enter image description here

(non si tratta di una "T").

E dopo una serie di copia/incolla, che appare così:

enter image description here

Quando faccio un clic destro sul campo di testo, non succede niente, non appare alcun menu di scelta rapida con le opzioni di copia/incolla .

Il file SWF che viene caricato è in AS2 (è praticamente impossibile portarlo su AS3 perché il codice in esso è molto vasto e sofisticato). Non posso sostituire quel SWF, ha un valore estremamente alto per il mio progetto. Oltre a questo problema, l'SWF funziona correttamente. Forse potrei cambiare alcune costanti di configurazione nelle impostazioni AS3 del loader?

Per scopi di test, ho creato due .flas, uno è in AS2 e contiene un campo di testo e l'altro è in AS3 e carica il campo di testo. È possibile scaricare il .flas in un archivio from here.

+0

Non c'è comunicazione AS2-AS3 forse questo riguarda voi? Hai provato con un campione SWF (AS3) caricato sul posto l'altro SWF e testato questo problema di copia e incolla? –

+0

@ Lukasz'Severiaan'Grela comunicazione Inter-SWF non ha nulla a che fare con questo. Puoi accertarlo con i due .flas che ho allegato. – Pleo

risposta

6

È un trucco sporco, ma funziona. :) Converti il ​​tuo SWF da AVM1 a AVM2 "on fly". Utilizzare ForcibleLoader https://code.google.com/p/as3-classes/source/browse/trunk/org/lzyy/util/ForcibleLoader.as

In loader.fla:

var loader:Loader = Loader(addChild(new Loader())); 
var fLoader:ForcibleLoader = new ForcibleLoader(loader); 
fLoader.load(new URLRequest('tf.swf')); 

In ForcibleLoader.as aggiungere import flash.system.LoaderContext;

e

var lc:LoaderContext = new LoaderContext(); 
lc.allowCodeImport = true; 
loader.loadBytes(inputBytes, lc); 

invece

loader.loadBytes(inputBytes);

in linea ~ 75

+0

Questo è fantastico! Hai fatto il mio giorno, signore! Grazie mille! Adesso cercherò di approfondire l'argomento AVM1/AVM2. – Pleo

+0

Una specie di flash black magic :) Sono felice di aiutarti! – Smolniy

+0

Ah, scatto! L'ho appena verificato con l'attuale SWF e sebbene carichi tutta la grafica, non esegue alcun codice dal file SWF caricato! :(Cosa mi è sfuggito? – Pleo

Problemi correlati