Domanda

mi è stato dato uno SWF Per modificare un collegamento nel codice AS. Il fatto è che il file SWF utilizza alcuni XML generato (in realtà recuperato) di codice PHP da un database.

menuXML.load("/sub/page/dynamic.php?genre=" + genre); 

in modo che il punto è che possiamo utilizzare lo stesso SWF 'mainfraim' e riempirli con diverse animazioni / fonti basate sul link fornito in dynamic.php? Genere = ###

Ora, ho usato Flash Decompiler Oro per estrarre tutti i file nel file SWF e può aprire di nuovo in Adobe Flash di modificarla. Una volta fatto io entro CTRL + INVIO e ci sono subito 4 errori del compilatore !! Errori: 1x 2x 1x

Come possono questi errori essere presente, quando il file SWF originale funziona perfettamente ??!

Se non riesco a risolvere questo, dovrò trovare il modo di creare un file .php i tentativi SWF in uso che è possibile selezionare le risorse appropriate (da un database immagino) per mostrare loro (usando ? genere = ###)

Grazie!

È stato utile?

Soluzione

Non sono sicuro io capisco il tuo problema, ma sembra che è necessario modificare l'URL passato al metodo di carico. Sembra anche come il vostro swf è Actionscript 2.0.

Decompilers tipo di lavoro, ma il file FLA è possibile generare con un decompilatore di rado essere utile per generare lo stesso indietro swf. A volte il codice è illegale, e quasi sempre la grafica è avvitato.

Una volta ho dovuto fare alcune modifiche al codice semplici (come cambiare un paio di URL e altre cose semplici) per un file SWF, per il quale abbiamo avuto nessuna fonte (sono stati persi e non c'era alcun backup ...).

Flasm per questo e ha funzionato benissimo (anche non è stato così difficile come ho prima ipotetico).

Flasm non è un decompilatore, ma un disassemblatore. Prende il file SWF, analizza il bytecode ActionScript e genera un file di testo con il codice assembly-like. È possibile modificare il codice e ri-assemblare lo swf. Esso non tocca la grafica e le animazioni, quindi è stato quello che mi serviva, e forse potrebbe funzionare per voi.

Ho fatto un piccolo test e ha funzionato bene.

Ho iniziato con questo codice in un fla:

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function(ok:Boolean):Void {
    if(ok) {
        _debug_txt.text = "ok";
        _debug_txt.text = xml;
    } else {
        _debug_txt.text = "error";
    }
};

xml.load("/sub/page/dynamic.php");

Poi, ho aperto un cmd prompt (Sono su Windows), cd nella directory che contiene il file SWF ed eseguire:

flasm -d test_flasm.swf > test_flasm.flm

Questo smonta il file SWF in un file di testo test_flasm.flm. Ho aggiunto al mio percorso Flasm eseguibili, ma si può semplicemente utilizzare il percorso completo del flasm.exe invece.

La parte rilevante degli sguardi dei file .flm in questo modo:

setMember
push '/sub/page/dynamic.php', 1, 'xml'
getVariable
push 'load'
callMethod

Il tuo può variare, ma se si guarda per l'URL, lo troverete. Avanti, cambiato url:

setMember
push 'test.xml', 1, 'xml'
getVariable
push 'load'
callMethod

Poi, ho rimontato lo swf utilizzando:

flasm -a test_flasm.flm

E ora, test_flasm.swf carichi "test.xml" invece di "/sub/page/dynamic.php".

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top