Ported to Haxe 3
Nemerle Haxe ActionScript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
as3hx
test
.gitattributes
.gitignore
CHANGES
FastXML.hx
FastXMLList.hx
README
Run.hx
as3hx.hxml
as3hx.hxproj
as3tohx.n
build
build_debug
clean
package_as3hx

README

===========
Config file
===========

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.

indentChars: (String=\t)
	The characters used to indent each line
newlineChars: (String=\n)
	The characters used to terminate each line
bracesOnNewline: (Bool=true)
	If set, opening braces will be put on a new line
uintToInt: (Bool=false)
	If set, all uint in flash will be translated to Int
vectorToArray: (Bool=false)
	If set, all Vectors will be changed to Arrays
guessCasts: (Bool=true)
	Cast guessing should likely be on, as it will change
	any MyClass(obj) to a cast(obj, MyClass) call.
functionToDynamic: (Bool=false)
	If set, Function will be translated to Dynamic
getterMethods: (String=get%I)
	Can be set to change the names of getters.
	%I : field name with first letter capitalized
	%i : field name unchanged (ex. get_%i)
setterMethods: (String=set%I)
	Can be set to change the names of setters
getterSetterStyle: (String="haxe")
	"haxe": a field will be created with haxe style setters
	        and getters. (var m(getM,setM))
	"flash": only native getters and setters will be created
	        using @:getter and @:setter
	"combined": both will be generated

For the "combined" getterSetterStyle, code output will look
similar to:

#if flash
        @:getter(target) function get_target() : {} {
                return proxy;
        }
#else
        override function get_target() : Dynamic {
                return proxy;
        }
#end


=================
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++;
}