Есть какой-нибудь способ вывести проект ActionScript 3 (Flex / AIR) на стандартный вывод?
-
09-06-2019 - |
Вопрос
Есть ли какой-нибудь способ получить двоичный файл, скомпилированный из проекта ActionScript 3, для печати в стандартный выход когда казнен?
Из того, что я собрал, люди обходили это ограничение, создавая хаки, которые полагаются на локальные сокет-соединения, и приложения AIR, которые записывают файлы в локальной файловой системе, но это в значительной степени все - очевидно, что это невозможно с Flash Player и AIR runtimes от Adobe.
Есть ли какой-либо проект (напримерна основе кода Tamarin), который пытается реализовать что-то, что обеспечило бы такую функциональность?
Решение
С AIR в Linux легко записывать в стандартный вывод, поскольку процесс может видеть свои собственные файловые дескрипторы как файлы в /dev.
Для стандартного вывода откройте /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()
- последнее позволит избежать искаженного вывода при стандартном выводе.
Другие советы
Как вы сказали, для этого не существует созданного Adobe способа, но вам, возможно, повезет больше с Цинк, он похож на AIR, но обеспечивает реальную интеграцию приложений на базе Flash в операционную систему.Посмотрите, хотя Документы 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