# as3hx **Repository Path**: imcj/as3hx ## Basic Information - **Project Name**: as3hx - **Description**: No description available - **Primary Language**: Haxe - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2014-04-29 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #as3hx Convert ActionScript 3 to Haxe 3 code. ###Build You'll need Haxe 3.* to build the project and Neko 2.* to run it. make Build the as3hx tool. make debug Build with debug output when converting files. ###Use neko run.n test/ out/ This will take all the ActionScript 3 files in the test/ directory and generate the corresponding Haxe files in out/ To generate the tests you can also use : make run-test This will generate the tests in test-out To get the basic tool usage : neko run.n -help There are many configuration options to choose how the Haxe code is generated, check the src/as3hx/Config.hx file for the full list. as3hx looks for, or creates, a config file in your home directory called ".as3hx_config.xml". You can also create one in the directory you are running as3hx from, which will override the home file. ####Licence MIT, see LICENCE.md ###Current failures: ####'delete' keyword: In actionscript, the delete keyword will cause an intentional failure in the generated .hx file. Take a close look at the object being deleted. 1) if it is a local variable, replace 'delete varname' with 'varname = null' 2) if it is a class member variable, remove the delete entirely 3) it it is an E4X (FastXML), well, hmmm... still working on that one. Senocular did a little writeup on 'delete' that might make it more clear http://www.kirupa.com/forum/showthread.php?223798-ActionScript-3-Tip-of-the-Day/page3 ####E4X: E4X is currently partly done. This will fail in some cases, just examine source and output carefully. ####For Initializations: The output of if(true) { for(var i:uint = 0; i < 7; i++) val += "0"; } else { for(i = 0; i < 8; i++) val += "0"; } is if(true) { var i : UInt = 0; while(i < 7) { val += "0"; i++; } } else { i = 0; while(i < 8) { val += "0"; i++; } } As you can see, the scope of "i" in flash is not the same as in haxe, so the "else" section will produce Unknown identifier : i. The solution is to move the "var i : UInt = 0;" outside of the blocks in the generated code. This can not be avoided by always creating the i variable, as the code for(var i:uint = 0; i < 7; i++) val += "0"; for(i = 0; i < 8; i++) val += "0"; would then produce a double initialization of i, also causing a compiler error. var i : UInt = 0; while(i < 7) { val += "0"; i++; } var i = 0; while(i < 8) { val += "0"; i++; }