ActionScript 3(Flex/AIR) 프로젝트를 표준 출력으로 인쇄할 수 있는 방법이 있습니까?
-
09-06-2019 - |
문제
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에서 잘못된 출력을 방지합니다.
다른 팁
디버그 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