haxe for flash platform developer
TRANSCRIPT
PIERGIORGIO NIERO & LUCA MEZZALIRA@matterhaxe
developers
PG MEZZA
Flash, Javascript o ...
Haxe targets
• Desktop App (C++, Neko, AIR...)• Web (JS, Flash, HTML)• Server Side (PHP, NodeJS, C#, Java...)• iOS• Android• Playbook
Roadmap Haxe
• Attualmente è scaricabile Haxe 2.09
• Estate 2012 Haxe 3
• Si sta già lavorando ad Haxe 4 con la rivoluzione di avere 1 unico linguaggio di programmazione per ogni target
haxe 2.09 compilazione su server + interactive debugging JS su Chrome e Firefox grazie al source mapping + haxe --dead-code-
haxe 3:
Non è tutto oro quel che luccica
• Implementazione Editor
• DEBUGGER (!!!!!)
• Integrazione “Adobbiana” verso i programmi grafici e non solo
• DOCUMENTAZIONE (!!!!!)
Differenze Haxe vs AS3package org.matterhaxe{ import flash.display.Sprite;
[SWF] public class MyClass extends Sprite { private var myVar1:Boolean protected var myVar2:int internal var myVar3:Number
public static const CIAO:String = "CIAO";
public function MyClass() { // constructor } private function myMethod1():void { trace(CIAO) } }}
package org.matterhaxe;
import nme.display.Sprite;import nme.Lib;
class MyClass extends Sprite{ private var myVar1: Bool; private var myVar2:Int; private var myVar3:Float;;
inline public static var CIAO:String = "CIAO";
public function new() { super(); } function myMethod():Void { trace(CIAO); } // static main function public static function main() { Lib.current.addChild( new MyClass() ); }}
Package & Classes
package org.matterhaxe;
import nme.display.Sprite;import nme.display.*; <<<< NOOO!!!!
class MyClass extends Sprite, implements IMyInterface
Access Modifier & Keywords
- solo private e public
- default è private
- non c'è const, c'è solo var
- c'è inline per variabili e metodiinline static var CICCIO:String = "Ciao";
Basic Types
- Void, Int, Bool, Float
- Dynamic var ciccio: Dynamic = "Ciccio"; ciccio = 4; ciccio = new Ciccio();
- Solo lettera maiuscola!!!
Constructor & Main
Costruttore di classepublic function new() {}
static public function main():Void { Lib.current.addChild(new MyClass);}
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)>
Typedefstypedef MyType {
var field1:Int; var field2:Bool;}var pippo: MyType = { 4, true };
typedef Ugo = MyVeryVeryLongNamedClass;var ugo:Ugo = new Ugo();
Iteratorsfor( 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;
Function PointersAS3
function myFunction (a:int,b:Number):void{}var myVar:Function = myFunction;
Haxefunction myFunction(a:Int,b:Float):Void{};var myVar:Int->Float->Void = myFunction;
CastTom Cruise - Maverick
Kelly McGillis - CharlieVal Kilmer - IcemanAnthony Edwards - GooseTom Skerrit - ViperMichael Ironside - JesterJohn Stockwell - CougarBarry Tubb - Wolfman
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);
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
file nmml di configurazione<?xml version="1.0" encoding="utf-8"?><project> <app title="HaXeList" main="HaXeList" package="" version="1.0.0" company="NME" ></app> <window width="320" height="480" fps="36" orientation="portrait" resizable="false" if="target_flash"/> <window width="320" height="480" fps="100" orientation="portrait" resizable="false" if="unless_flash"/> <set name="BUILD_DIR" value="Export" ></set> <classpath name="src"/> <haxelib name="nme"/> <assets path="Assets" rename="assets" include="*"/> <library path="assets/lib.swf" rename="assets/lib.swf" /> <ndll name="std" ></ndll> <ndll name="regexp" ></ndll> <ndll name="zlib" ></ndll> <ndll name="nme" haxelib="nme" ></ndll> </project>
come compilare progetti NMEnme test project.nmml ios
nme test project.nmml ios -simulatornme test project.nmml androidnme test project.nmml webosnme test project.nmml blackberrynme test project.nmml windowsnme test project.nmml macnme test project.nmml linuxnme test project.nmml linux -64nme test project.nmml flashnme test project.nmml html5
How to install HAXE
IDE & Plugins
• FDT 5• Textmate• Sublime Text 2• MonoDevelop• FlashDevelop 4• Intellij Idea
• altri: http://haxe.org/com/ide
Haxe Books
Online references
• haxe.org• haxenme.org• haxejs.org• nekovm.org• weblob.net• ncannasse.fr• haxelearning.wikispaces.com
CU & A[Teo] [eh...]
w: matterhaxe.wordpress.comt: @matterhaxee: [email protected]