De qualquer maneira ter um ActionScript 3 (Flex/AIR) projeto de impressão para a saída padrão?
-
09-06-2019 - |
Pergunta
Existe alguma forma de ter um binário compilado a partir de uma ActionScript 3 projeto de impressão de material para stdout quando executado?
A partir do que eu recolhi, as pessoas foram indo contornar essa limitação, por escrito hacks que dependem de locais de conexões de soquete e AR apps que gravar arquivos no sistema de arquivos local, mas que é muito bonito -- é claro que não é possível com o Flash Player e o AIR tempos de execução da Adobe.
Existe algum projeto (e.g.com base no Mico de código) que está a tentar implementar algo que fornece este tipo de funcionalidade?
Solução
Com AR no Linux, é fácil escrever para stdout, uma vez que o processo pode ver seus próprios descritores de arquivo como arquivos em /dev.
Para stdout, abrir /dev/fd/1
ou /dev/stdout
como um FileStream
, e , em seguida, escreva para isso.
Exemplo:
var stdout : FileStream = new FileStream();
stdout.open(new File("/dev/fd/1"), FileMode.WRITE);
stdout.writeUTFBytes("test\n");
stdout.close();
Nota: Ver esta resposta a diferença entre writeUTF()
e writeUTFBytes()
- o último vai evitar erros de saída no stdout.
Outras dicas
Como você diz, não há Adobe-criado maneira de fazer isso, mas você pode ter mais sorte com o Zinco, é semelhante ao AR, mas oferece a possibilidade de OS de integração de aplicativos baseados em Flash.Olha que o A API do google docs, deve haver alguma coisa lá.
Se você estiver usando uma depuração do Flash Player, você pode ter o Flash Player log de rastreamento de mensagens para um arquivo no seu sistema.
Se você deseja mensagens em tempo real, então você poderia cauda o arquivo.
Mais informações:
http://blog.flexexamples.com/2007/08/26/debugging-flex-applications-with-mmcfg-and-flashlogtxt/
mike chambers
mesh@adobe.com
Redtamarin parece ser capaz de fazer isso (mesmo que ainda em sua infância):
Conteúdo test.as
:
import avmplus.System;
import redtamarin.version;
trace( "hello world" );
trace( "avmplus v" + System.getAvmplusVersion() );
trace( "redtamarin v" + redtamarin.version );
Na linha de comando:
$ ./buildEXE.sh test.as
test.abc, 243 bytes written
test.exe, 2191963 bytes written
test.abc, 243 bytes written
test.exe, 2178811 bytes written
$ ./test
hello world
avmplus v1.0 cyclone (redshell)
redtamarin v0.1.0.92