[haXe] APE port.

lee at designrealm.co.uk lee at designrealm.co.uk
Sat Dec 1 21:37:55 CET 2007


Excellent, Hugh. Well done! I'd love to see those demos when your done.

Lee






Quoting Hugh Sanderson <haxelist at gamehaxe.com>:

> Hi,
> I have ported the haXe/swf port of the APE engine to neko/nme on windows.
> I ported the code by defining a compatability layer, I called "blink",
> where you basically replace the classes "flash." with "blink.".
> I only did enough to get the demos going, but I think this shows
> the viabliity of this method.  More about this on
> http://gamehaxe.com/2007/12/01/cross-platform-again/
>
> The neko code took about twice as long for the numeric stuff, but
> this may have to do with the "cast" operator.  I will try
> to get a more game-like example going and see what the performance
> is like with a bunch of image draws.
>
> Hugh
>
>
>> Hi all.
>> I have ported the Actionscript Physics Engine (APE,   
>> http://www.cove.org/ape) to haxe.
>> The performace is comparable, except for the "cast" operator, which  
>>  I replaced in one case for extra speed.
>> See: http://gamehaxe.com/ for more details.
>> It is basically a line-for-line conversion done with a bunch of   
>> reg-exes, which worked surprisingly well.
>> Also perhaps of interest is the fact the by writing a program to do  
>>  the conversion you get a list of things different between as3 and   
>> haxe.
>>
>> For one case, there was practically no change in speed. For   
>> another, there was a 20% slowdown (I suspect it may have to do with  
>>  casts too).
>> In both cases, the hx->swf was faster than hx->as3->swf.
>> The haxe compile was considerably faster than the as3 compile.
>>
>> The change list included:
>>
>>  - Convert ?int?, ?void?, ?Number? etc.
>>  - Convert ?package xxx {? to ?package xxx;?.
>>  - Expand out ?import xxx.*? imports.
>>  - Remove ?private?, ?final?, ?internal? etc.
>>  - Scan the class for ?get? and ?set? functions and insert ?var   
>> prop(get,set):type? where appropriate. This was complicated by the   
>> fact that some of these were ?override?
>> properties and should not have this extra insertion. (I should have  
>>  looked for the ?override? keyword to make this easier).
>>  - Add return statements to set functions.
>>  - Fix POSITIVE_INFINITY.
>>  - Make sure arrays are strongly typed - need this for properties.
>>  - Change in-line array declarations when array is not of type Dynamic.
>>  - Convert ?indexOf? function in array.
>>  - Convert ?for(a ;b ;c )? to ?a; while(b) { ? c }?.
>>  - Fix scoping of variables resulting from variables declared   
>> inside for statements.
>>  - Add semi-columns to lines that needed them.
>>  - Change constructors to ?new?.
>>  - Add static main function to main class, and ?addChild? it.
>>  - Call ?super()? where required.
>>  - Convert default-arguments to optional-arguments.
>>  - Remove ?break? from switch statements.
>>  - Change ?is? and ?as? operators.
>>
>> Generally, I prefer haxe's way of doing things.  However, there is   
>> some syntactic sugar that would be nice too.
>> 1. The alternate form of the "for" statement. It would be nice to have both.
>> 2. "indexOf" - I think there may be room for 1 extra function in   
>> the base class.
>> 3. The "get" and "set" function specifiers.  I think the as3 way is  
>>  slightly better, since it is more localised and I'm not a big fan   
>> of the haxe syntax.
>>
>> Calling your constructor "new" and requiring an explict call to   
>> super() I'm undecided which it better.  I guess its hard to detect   
>> when super is called if it is in, say, a conditional.
>>
>> Another little option to save some typing might be to have a   
>> "-main-class ClassName" as an alternative to "-main ClassName",   
>> where the former just automatically creates a static main function   
>> that simply "new"s the class.
>>
>> Hugh
>>
>
>
>
> -- 
> haXe - an open source web programming language
> http://haxe.org





More information about the Haxe mailing list