5. Haxe targets
• Desktop App (C++, Neko, AIR...)
• Web (JS, Flash, HTML)
• Server Side (PHP, NodeJS, C#, Java...)
• iOS
• Android
• Playbook
6. Roadmap Haxe
• Attualmente è scaricabile Haxe 2.09
haxe 2.09 compilazione su ser ver +
interactive debugging JS su Chrome e
Firefox grazie al source mapping +
haxe --dead-code-
haxe 3:
• Estate 2012 Haxe 3
• Si sta già lavorando ad Haxe 4 con la
rivoluzione di avere 1 unico linguaggio di
programmazione per ogni target
7. Non è tutto oro quel che luccica
• Implementazione Editor
• DEBUGGER (!!!!!)
• Integrazione “Adobbiana” verso i
programmi grafici e non solo
• DOCUMENTAZIONE (!!!!!)
8. Differenze Haxe vs AS3
package org.matterhaxe; package org.matterhaxe
{
import nme.display.Sprite; import flash.display.Sprite;
import nme.Lib;
[SWF]
class MyClass extends Sprite public class MyClass extends Sprite
{ {
private var myVar1: Bool; private var myVar1:Boolean
private var myVar2:Int; protected var myVar2:int
private var myVar3:Float;; internal var myVar3:Number
inline public static var CIAO:String = "CIAO"; public static const CIAO:String = "CIAO";
public function new() public function MyClass()
{ {
super(); // constructor
} }
function myMethod():Void private function myMethod1():void
{ {
trace(CIAO); trace(CIAO)
} }
// static main function }
public static function main() }
{
Lib.current.addChild( new MyClass() );
}
}
10. Access Modifier & Keywords
- solo private e public
- default è private
- non c'è const, c'è solo var
- c'è inline per variabili e metodi
inline static var CICCIO:String = "Ciao";
11. Basic Types
- Void, Int, Bool, Float
- Dynamic
var ciccio: Dynamic = "Ciccio";
ciccio = 4;
ciccio = new Ciccio();
- Solo lettera maiuscola!!!
12. Constructor & Main
Costruttore di classe
public function new() {}
static public function main():Void {
Lib.current.addChild(new MyClass);
}
13. Type Parameters
(generics & beyond)
AS3:
- Vector.<T>
Haxe:
- Built in: Array<T>, Vector<T>, Hash<T>
- Custom: MyClass<T>
- Type Constraints!!! MyClass<T: (ClassA,
InterfaceB)>
14. Typedefs
typedef MyType {
var field1:Int;
var field2:Bool;
}
var pippo: MyType = { 4, true };
typedef Ugo = MyVeryVeryLongNamedClass;
var ugo:Ugo = new Ugo();
15. Iterators
for( i in 0...100){
trace(i);
}
for( i in myStringsArray){
trace(i);
}
custom: implementare i metodi del tipo
"Iterator" nella classe
function hasNext() : Bool;
function next() : T;
16. Function Pointers
AS3
function myFunction (a:int,b:Number):void{}
var myVar:Function = myFunction;
Haxe
function myFunction(a:Int,b:Float):Void{};
var myVar:Int->Float->Void = myFunction;
17. Cast
Tom Cruise -
Maverick
Kelly McGillis - Charlie
Val Kilmer - Iceman
Anthony Edwards - Goose
Tom Skerrit - Viper
Michael Ironside - Jester
John Stockwell - Cougar
Barry Tubb - Wolfman
18. Cast
- safe casting:
var car:Car = cast(vehicle,Car);
- unsafe casting:
var car:Car = cast vehicle;
- Std casting:
var toString = Std.string(10);
var toNumber = Std.parseFloat("10");
var toInteger = Std.int(10.1);
19. NME is a free, open-source framework that
enables development for iOS, Android, webOS,
BlackBerry, Windows, Mac, Linux and Flash
Player from a single codebase
21. come compilare progetti NME
nme test project.nmml ios
nme test project.nmml ios -simulator
nme test project.nmml android
nme test project.nmml webos
nme test project.nmml blackberry
nme test project.nmml windows
nme test project.nmml mac
nme test project.nmml linux
nme test project.nmml linux -64
nme test project.nmml flash
nme test project.nmml html5