Pergunta

Eu estou trabalhando com um fla, uma como arquivo (classe do documento), e um arquivo jsfl. o SWF é gerado na pasta WindowSWF (por exemplo, $ flash / WindowSWF)

Eu tenho um simples windowSWF e eu estou usando MMExecute e fl.runScript passar variáveis ??de as3 para jsfl. Eu não imaginava que eu iria ter problemas se eu iria usar objetos embora.

Na minha windowSWF Eu tenho um DataGrid chamado settingsGrid com as seguintes colunas: [ "Prefixo", "sufixo", "tipo"] e eu estou tring para passar settingsGrid.dataProvider.toArray () para o script jsfl.

O problema é que ele sai como indefinido no outro lado. Quaisquer sugestões sobre como posso contornar isso?

A versão curta: Como eu posso passar um array de objetos como {prefixo: "valor", sufixo: "valor", digite: "valor"} do ActionScript para jsfl. Passando objetos obras individuais, eu recebo um erro quando eu passar um array:

"Syntax Error: missing ] after element list"

As minhas chamada de função se parece com isso:

MMExecute('fl.runScript(fl.configURI + "Commands/LazyGen.jsfl","generate","_",'+ settingsGrid.dataProvider.toArray() +');');

e a assinatura para o método nos olhares de arquivo JSFL assim:

function generate(prefixArg,settingsArg){}
Foi útil?

Solução

Eu estou passando objetos de uma grade de dados para JSFL. Os objetos têm as seguintes propriedades: tecla , substituição e tipo . Aqui é a função que eu usei para construir uma seqüência que eu poderia passar em JSFL do ActionScript:

private function dataProviderToString(dataProvider:DataProvider):String{
            var settingsString:String = '[';
            for(var i:int = 0 ; i < dataProvider.length ; i++){
                if(i < (dataProvider.length-1)) settingsString += '{key:"'+ dataProvider.getItemAt(i).key + '",replacement:"' + dataProvider.getItemAt(i).replacement + '",type:"'+ dataProvider.getItemAt(i).type + '"},';
                else settingsString += '{key:"'+ dataProvider.getItemAt(i).key + '",replacement:"' + dataProvider.getItemAt(i).replacement + '",type:"'+ dataProvider.getItemAt(i).type + '"}';
            }
            settingsString += ']';
            return settingsString;
        }

notei configurações no SWF não foram magicamente salvo de alguma forma, então eu usei SharedObject local para armazenar as configurações do dataProvider. Eu acho que eu poderia ter apenas escreveu um arquivo usando FLfile, mas eu não queria manter a conversão de matrizes para cordas e volta. Eu estou escrevendo uma matriz do dataProvider (dataProvider.toArray ()) para um ByteArray que acabei de ler para trás e empurrar em para o construtor de uma nova DataProvider quando eu precisar dele.

Outras dicas

Apenas trabalho para fora suas variáveis ??de valor dentro do seu windowsSWF e passar as variáveis ??em JSFL através do comando MMExecute.

O comando a seguir define a cor de preenchimento na barra de ferramentas para o preto. Assim, por exemplo o valor da cor pode ser agarrado a partir de um componente de cor picker e depois passou para jsfl. Tudo que eu faço é concatenar a variável de script de ação para a cadeia que é enviada via MMExecute.

var myColor:String = "#000000";
MMExecute("var fill = fl.getDocumentDOM().getCustomFill(\"toolbar\");fill.style= \"solid\";fill.color = \'"+myColor+"\';fl.getDocumentDOM().setCustomFill( fill );");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top