ActionScript 3(Flex/AIR) 프로젝트를 표준 출력으로 인쇄할 수 있는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/38651

문제

ActionScript 3 프로젝트에서 컴파일된 바이너리를 인쇄할 수 있는 방법이 있습니까? 표준 출력 언제 실행되나요?

내가 수집한 바에 따르면 사람들은 로컬 소켓 연결과 로컬 파일 시스템의 파일에 쓰는 AIR 앱을 사용하는 해킹을 작성하여 이러한 제한을 해결해 왔지만 그게 전부입니다. Flash Player에서는 분명히 불가능합니다. 및 Adobe의 AIR 런타임.

어떤 프로젝트가 있나요(예:Tamarin 코드 기반)이 이런 종류의 기능을 제공하는 것을 구현하려고 시도하고 있습니까?

도움이 되었습니까?

해결책

AIR on Linux를 사용하면 프로세스가 자체 파일 설명자를 /dev의 파일로 볼 수 있으므로 stdout에 쉽게 쓸 수 있습니다.

표준 출력의 경우 다음을 엽니다. /dev/fd/1 또는 /dev/stdout 로서 FileStream, 그런 다음 거기에 쓰십시오.

예:

var stdout : FileStream = new FileStream();
stdout.open(new File("/dev/fd/1"), FileMode.WRITE);
stdout.writeUTFBytes("test\n");
stdout.close();

메모: 보다 이 답변 차이점에 대해 writeUTF() 그리고 writeUTFBytes() - 후자는 stdout에서 잘못된 출력을 방지합니다.

다른 팁

말씀하신 대로 Adobe에서 만든 방법은 없지만 다음과 같이 하면 더 나은 행운을 누릴 수 있습니다. 아연, AIR와 유사하지만 Flash 기반 애플리케이션의 실제 OS 통합을 제공합니다.그래도 봐 API 문서, 거기에 뭔가가 있어야합니다.

디버그 Flash Player를 사용하는 경우 Flash Player가 시스템의 파일에 대한 추적 메시지를 기록하도록 할 수 있습니다.

실시간 메시지를 원하면 파일을 추적할 수 있습니다.

더 많은 정보:

http://blog.flexexamples.com/2007/08/26/debugging-flex-applications-with-mmcfg-and-flashlogtxt/

마이크 챔버

mesh@adobe.com

레드타마린 이 작업을 수행할 수 있는 것 같습니다(아직 초기 단계임에도 불구하고).

내용 test.as:

import avmplus.System;
import redtamarin.version;

trace( "hello world" );
trace( "avmplus v" + System.getAvmplusVersion() );
trace( "redtamarin v" + redtamarin.version );

명령줄에서:

$ ./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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top