haxe for flash platform developer

26
PIERGIORGIO NIERO & LUCA MEZZALIRA @matterhaxe developers

Upload: matterhaxe

Post on 29-Jan-2018

8.085 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Haxe for Flash Platform developer

PIERGIORGIO NIERO & LUCA MEZZALIRA@matterhaxe

developers

Page 2: Haxe for Flash Platform developer

PG MEZZA

Page 3: Haxe for Flash Platform developer

Flash, Javascript o ...

Page 4: Haxe for Flash Platform developer
Page 5: Haxe for Flash Platform developer

Haxe targets

• Desktop App (C++, Neko, AIR...)• Web (JS, Flash, HTML)• Server Side (PHP, NodeJS, C#, Java...)• iOS• Android• Playbook

Page 6: Haxe for Flash Platform developer

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:

Page 7: Haxe for Flash Platform developer

Non è tutto oro quel che luccica

• Implementazione Editor

• DEBUGGER (!!!!!)

• Integrazione “Adobbiana” verso i programmi grafici e non solo

• DOCUMENTAZIONE (!!!!!)

Page 8: Haxe for Flash Platform developer

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() ); }}

Page 9: Haxe for Flash Platform developer

Package & Classes

package org.matterhaxe;

import nme.display.Sprite;import nme.display.*; <<<< NOOO!!!!

class MyClass extends Sprite, implements IMyInterface

Page 10: Haxe for Flash Platform developer

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";

Page 11: Haxe for Flash Platform developer

Basic Types

- Void, Int, Bool, Float

- Dynamic var ciccio: Dynamic = "Ciccio"; ciccio = 4; ciccio = new Ciccio();

- Solo lettera maiuscola!!!

Page 12: Haxe for Flash Platform developer

Constructor & Main

Costruttore di classepublic function new() {}

static public function main():Void { Lib.current.addChild(new MyClass);}

Page 13: Haxe for Flash Platform developer

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)>

Page 14: Haxe for Flash Platform developer

Typedefstypedef MyType {

var field1:Int; var field2:Bool;}var pippo: MyType = { 4, true };

typedef Ugo = MyVeryVeryLongNamedClass;var ugo:Ugo = new Ugo();

Page 15: Haxe for Flash Platform developer

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;

Page 16: Haxe for Flash Platform developer

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;

Page 17: Haxe for Flash Platform developer

CastTom Cruise - Maverick

Kelly McGillis - CharlieVal Kilmer - IcemanAnthony Edwards - GooseTom Skerrit - ViperMichael Ironside - JesterJohn Stockwell - CougarBarry Tubb - Wolfman

Page 18: Haxe for Flash Platform developer

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);

Page 19: Haxe for Flash Platform developer

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

Page 20: Haxe for Flash Platform developer

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>

Page 21: Haxe for Flash Platform developer

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

Page 22: Haxe for Flash Platform developer

How to install HAXE

Page 23: Haxe for Flash Platform developer

IDE & Plugins

• FDT 5• Textmate• Sublime Text 2• MonoDevelop• FlashDevelop 4• Intellij Idea

• altri: http://haxe.org/com/ide

Page 24: Haxe for Flash Platform developer

Haxe Books

Page 25: Haxe for Flash Platform developer

Online references

• haxe.org• haxenme.org• haxejs.org• nekovm.org• weblob.net• ncannasse.fr• haxelearning.wikispaces.com

Page 26: Haxe for Flash Platform developer

CU & A[Teo] [eh...]

w: matterhaxe.wordpress.comt: @matterhaxee: [email protected]