AS3 文件系统 Hello World
AS3 Filesystem Hello World
我想使用 ActionScript3 将 "Hello World" 写入文本文件。我想从命令行编译和 运行 该代码。
已安装:Windows10,Adobe AIR 18.0 SDK,flex_sdk_4.6
(TLDR:我想从命令行对更大的代码段进行自动化测试,当然我无法理解这段代码)
我遗漏了一些我无法理解的步骤。这是我的代码:
MainF.as
package {
import flash.display.*;
import flash.text.*;
import flash.filesystem.*;
public class MainF extends Sprite
{
public function MainF()
{
var file:File = new File("output.txt");
var stream:FileStream = new FileStream();
stream.open(file, FileMode.WRITE);
stream.writeUTFBytes("Hello World!");
stream.close();
}
}
}
我先运行这条命令:
amxmlc MainF.as -dump-config aircfg.xml
现在我正在使用它来编译我的项目:
amxmlc MainF.as -load-config aircfg.xml
我的 AirSdk\bin 路径在我的 PATH 环境变量中,因此它可以正确找到 AirSdk\bin\amxmlc.bat。
我已经尝试用 air 编译器(如上所示)和 flex 编译器(flex_sdk_4.6\bin\mxmlc.exe 编译它。我试过的所有东西都有这个错误:
Warning: No definitions matching flash.filesystem.* could be found.
import flash.filesystem.*;
这个答案没有解决我的问题:
Flash Builder: 1172 Definition Could not be found
我需要更具体的说明,我是 AS3 的新手。而且,正如我所说,我需要它在编译时和从命令行 运行 工作。
从最有用的帮助页面开始:
http://help.adobe.com/en_US/air/build/WS901d38e593cd1bac25d3d8c712b2d86751e-8000.html
这里的说明都很好,省了一行HelloWorld.xml。替换:
<application xmlns="http://ns.adobe.com/air/application/2.7">
有:
<application xmlns="http://ns.adobe.com/air/application/18.0">
大概这应该与您在计算机上安装的 AirSDK 版本相匹配。
创建flexcfg.xml:
mxmlc -dump-config flexcfg.xml
这会抛出编译器错误,忽略它们。这个文件会有很多问题,需要修复。有几个路径会设置不正确:
<path-element>libs</path-element>
(以及其他,均以<路径元素>开头)
这些将引用您的 AirSDK 中的文件,但不会正确引用它们。
我把完整路径放到我本地的AirSDK:
<path-element>C:/dev/AirSdk/frameworks/libs</path-element>
这个路径对于你安装的AirSDK是唯一的。再一次,会有几个,全部修复,散落在文件中。
这让基本的 hello-world 工作起来了。现在,对于文件访问部分,link 提供了部分解决方案:
Flash Builder: 1172 Definition Could not be found
具体来说,再次在您的 flexcfg.xml 文件中,您需要找到这一行:
<external-library-path>
并在其下方添加另一行:
<path-element>C:/dev/AirSdk/frameworks/libs/air/airglobal.swc</path-element>
(再说一次,你的AirSdk可能安装在其他目录)
有几个地方可以为您提供将 "Hello World" 写入文件所需的行,这是一个:
Saving string to text file in AS3
确保您使用 "writeUTFBytes" 作为答案指示,而不是问题。
HelloWorld.as 的最终版本如下所示:
package
{
import flash.display.Sprite;
import flash.text.*;
import flash.filesystem.*;
public class HelloWorld extends Sprite
{
public function HelloWorld()
{
var textField:TextField = new TextField();
stage.addChild( textField );
textField.text = "Hello, World!";
var outputFile:File = new File("C:/depot/sdks/ActionScriptSDK/HelloWorld/output.txt");
var stream:FileStream = new FileStream();
stream.open(outputFile, FileMode.WRITE);
stream.writeUTFBytes("Hello, File World!");
stream.close();
}
}
}
flexcfg.xml 大部分是自动生成的。文件很长,我不会全部分享,但我会分享一些相关的行:
<external-library-path>
<path-element>C:/dev/AirSdk/frameworks/libs/player/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}/playerglobal.swc</path-element>
<path-element>C:/dev/AirSdk/frameworks/libs/air/airglobal.swc</path-element>
</external-library-path>
及后面的文件:
<library-path>
<path-element>C:/dev/AirSdk/frameworks/libs</path-element>
<path-element>C:/dev/AirSdk/frameworks/locale/{locale}</path-element>
</library-path>
HelloWorld.xml 几乎是对 help.adobe.com 的复制粘贴,但这里是:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/18.0">
<id>samples.android.HelloWorld</id>
<versionNumber>0.0.1</versionNumber>
<filename>HelloWorld</filename>
<initialWindow>
<content>HelloWorld.swf</content>
</initialWindow>
<supportedProfiles>mobileDevice</supportedProfiles>
</application>
最后,总结为一个步骤,go.bat:
call mxmlc HelloWorld.as -load-config flexcfg.xml
call adl HelloWorld.xml
我想使用 ActionScript3 将 "Hello World" 写入文本文件。我想从命令行编译和 运行 该代码。
已安装:Windows10,Adobe AIR 18.0 SDK,flex_sdk_4.6
(TLDR:我想从命令行对更大的代码段进行自动化测试,当然我无法理解这段代码)
我遗漏了一些我无法理解的步骤。这是我的代码:
MainF.as
package {
import flash.display.*;
import flash.text.*;
import flash.filesystem.*;
public class MainF extends Sprite
{
public function MainF()
{
var file:File = new File("output.txt");
var stream:FileStream = new FileStream();
stream.open(file, FileMode.WRITE);
stream.writeUTFBytes("Hello World!");
stream.close();
}
}
}
我先运行这条命令:
amxmlc MainF.as -dump-config aircfg.xml
现在我正在使用它来编译我的项目:
amxmlc MainF.as -load-config aircfg.xml
我的 AirSdk\bin 路径在我的 PATH 环境变量中,因此它可以正确找到 AirSdk\bin\amxmlc.bat。
我已经尝试用 air 编译器(如上所示)和 flex 编译器(flex_sdk_4.6\bin\mxmlc.exe 编译它。我试过的所有东西都有这个错误:
Warning: No definitions matching flash.filesystem.* could be found.
import flash.filesystem.*;
这个答案没有解决我的问题: Flash Builder: 1172 Definition Could not be found
我需要更具体的说明,我是 AS3 的新手。而且,正如我所说,我需要它在编译时和从命令行 运行 工作。
从最有用的帮助页面开始:
http://help.adobe.com/en_US/air/build/WS901d38e593cd1bac25d3d8c712b2d86751e-8000.html
这里的说明都很好,省了一行HelloWorld.xml。替换:
<application xmlns="http://ns.adobe.com/air/application/2.7">
有:
<application xmlns="http://ns.adobe.com/air/application/18.0">
大概这应该与您在计算机上安装的 AirSDK 版本相匹配。
创建flexcfg.xml:
mxmlc -dump-config flexcfg.xml
这会抛出编译器错误,忽略它们。这个文件会有很多问题,需要修复。有几个路径会设置不正确:
<path-element>libs</path-element>
(以及其他,均以<路径元素>开头) 这些将引用您的 AirSDK 中的文件,但不会正确引用它们。 我把完整路径放到我本地的AirSDK:
<path-element>C:/dev/AirSdk/frameworks/libs</path-element>
这个路径对于你安装的AirSDK是唯一的。再一次,会有几个,全部修复,散落在文件中。
这让基本的 hello-world 工作起来了。现在,对于文件访问部分,link 提供了部分解决方案:
Flash Builder: 1172 Definition Could not be found
具体来说,再次在您的 flexcfg.xml 文件中,您需要找到这一行:
<external-library-path>
并在其下方添加另一行:
<path-element>C:/dev/AirSdk/frameworks/libs/air/airglobal.swc</path-element>
(再说一次,你的AirSdk可能安装在其他目录)
有几个地方可以为您提供将 "Hello World" 写入文件所需的行,这是一个: Saving string to text file in AS3 确保您使用 "writeUTFBytes" 作为答案指示,而不是问题。
HelloWorld.as 的最终版本如下所示:
package
{
import flash.display.Sprite;
import flash.text.*;
import flash.filesystem.*;
public class HelloWorld extends Sprite
{
public function HelloWorld()
{
var textField:TextField = new TextField();
stage.addChild( textField );
textField.text = "Hello, World!";
var outputFile:File = new File("C:/depot/sdks/ActionScriptSDK/HelloWorld/output.txt");
var stream:FileStream = new FileStream();
stream.open(outputFile, FileMode.WRITE);
stream.writeUTFBytes("Hello, File World!");
stream.close();
}
}
}
flexcfg.xml 大部分是自动生成的。文件很长,我不会全部分享,但我会分享一些相关的行:
<external-library-path>
<path-element>C:/dev/AirSdk/frameworks/libs/player/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}/playerglobal.swc</path-element>
<path-element>C:/dev/AirSdk/frameworks/libs/air/airglobal.swc</path-element>
</external-library-path>
及后面的文件:
<library-path>
<path-element>C:/dev/AirSdk/frameworks/libs</path-element>
<path-element>C:/dev/AirSdk/frameworks/locale/{locale}</path-element>
</library-path>
HelloWorld.xml 几乎是对 help.adobe.com 的复制粘贴,但这里是:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/18.0">
<id>samples.android.HelloWorld</id>
<versionNumber>0.0.1</versionNumber>
<filename>HelloWorld</filename>
<initialWindow>
<content>HelloWorld.swf</content>
</initialWindow>
<supportedProfiles>mobileDevice</supportedProfiles>
</application>
最后,总结为一个步骤,go.bat:
call mxmlc HelloWorld.as -load-config flexcfg.xml
call adl HelloWorld.xml