2015-09-11 268 views
0

我想使用ActionScript3將「Hello World」寫入文本文件。我想從命令行編譯並運行該代碼。AS3 Filesystem Hello World

安裝:WINDOWS 10,Adobe AIR的SDK 18.0,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。我試圖用空編譯器(如上所示)和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。而且,正如我所說的,我需要它在編譯並從命令行運行時工作。

+0

http://stackoverflow.com/questions/14116270/mxmlc-compiler-missing-filesystem-library 此答案同時出現SO CLOSE回答我的問題: 「您可能需要配置此以包括在AIR sdk等「 我該怎麼做!? –

回答

1

最有用的幫助頁面開始:

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的工作。現在,對於文件訪問的一部分,這個環節提供瞭解決方案的一部分:再次在flexcfg.xml文件

Flash Builder: 1172 Definition Could not be found

具體來說,你需要找到這一行:

<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