https://github.com/haxefoundation/as3hx
Convert AS3 sources to their Haxe equivalent
https://github.com/haxefoundation/as3hx
actionscript haxe
Last synced: 3 months ago
JSON representation
Convert AS3 sources to their Haxe equivalent
- Host: GitHub
- URL: https://github.com/haxefoundation/as3hx
- Owner: HaxeFoundation
- License: mit
- Created: 2013-05-25T05:39:53.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2020-11-17T08:00:36.000Z (over 5 years ago)
- Last Synced: 2025-06-06T03:41:53.116Z (12 months ago)
- Topics: actionscript, haxe
- Language: Haxe
- Homepage:
- Size: 1.07 MB
- Stars: 176
- Watchers: 28
- Forks: 54
- Open Issues: 56
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
Awesome Lists containing this project
README
# as3hx [](https://travis-ci.org/HaxeFoundation/as3hx)
Convert ActionScript 3 to Haxe 3 code.
**Note**: This repository is no longer actively maintained. Please refer to https://github.com/innogames/ax3 as an alternative!
### Build
You'll need Haxe 3.* to build the project and Neko 2.* to run it.
haxe --no-traces as3hx.hxml
Build the as3hx tool.
haxe -debug as3hx.hxml
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
### Config
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](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
```as3
if (true) {
for (var i:uint = 0; i < 7; i++)
val += "0";
} else {
for (i = 0; i < 8; i++)
val += "0";
}
```
is
```haxe
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
```as3
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.
```haxe
var i:UInt = 0;
while (i < 7) {
val += "0";
i++;
}
var i = 0;
while (i < 8) {
val += "0";
i++;
}
```